{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/react/index.js","webpack:///./node_modules/three/build/three.module.js","webpack:///./node_modules/react/jsx-runtime.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/libs/browser-cuid.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/utils.js","webpack:///./node_modules/@financial-times/g-components/build/grid/index.js","webpack:///./node_modules/@react-three/fiber/dist/index-22ee0173.esm.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@financial-times/ft-date-format/index.js","webpack:///./node_modules/react-use-measure/dist/web.js","webpack:///./node_modules/its-fine/dist/index.js","webpack:///./node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/settings.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/react-dom/client.js","webpack:///./node_modules/@financial-times/o-viewport/src/utils.js","webpack:///./node_modules/@financial-times/o-viewport/main.js","webpack:///./node_modules/react-reconciler/constants.js","webpack:///./node_modules/@financial-times/o-utils/main.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/suspend-react/dist/index.js","webpack:///./node_modules/@financial-times/o-toggle/src/js/target.js","webpack:///./node_modules/@financial-times/o-toggle/src/js/toggle.js","webpack:///./node_modules/@financial-times/o-toggle/main.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/store.js","webpack:///./node_modules/zustand/index.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/html-react-parser/index.js","webpack:///./node_modules/troika-worker-utils/dist/troika-worker-utils.esm.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/scheduler/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@financial-times/o-grid/main.js","webpack:///./node_modules/@financial-times/o-overlay/node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/domhandler/lib/node.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/react-reconciler/index.js","webpack:///./node_modules/focusable/index.js","webpack:///./node_modules/debounce/index.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/resize-observer/lib/ContentRect.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/queue.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/user.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/session.js","webpack:///./node_modules/html-react-parser/lib/attributes-to-props.js","webpack:///./node_modules/html-react-parser/lib/utilities.js","webpack:///./node_modules/html-dom-parser/lib/client/utilities.js","webpack:///./node_modules/domelementtype/lib/esm/index.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/globalthis/implementation.browser.js","webpack:///./node_modules/globalthis/polyfill.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/xhr.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/send-beacon.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/image.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/send.js","webpack:///./node_modules/resize-observer/lib/ResizeObserver.js","webpack:///./node_modules/@financial-times/g-components/build/article-layout/index.js","webpack:///./node_modules/@financial-times/g-components/build/bylines/index.js","webpack:///./node_modules/@financial-times/g-components/build/share/index.js","webpack:///./node_modules/@financial-times/o-share/node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@financial-times/g-components/build/epilogue/index.js","webpack:///./node_modules/@financial-times/g-components/build/loading/index.js","webpack:///./node_modules/scrollama/build/scrollama.js","webpack:///./node_modules/html-dom-parser/lib/client/html-to-dom.js","webpack:///./node_modules/r3f-perf/node_modules/zustand/index.js","webpack:///./app/videos/intro.mp4","webpack:///./app/videos/intro_mobile.mp4","webpack:///./app/images/takeoff-graphic/takeoff_graphic_mobile.png","webpack:///./app/images/takeoff-graphic/takeoff_graphic_tablet.png","webpack:///./app/images/takeoff-graphic/takeoff_graphic_desktop.png","webpack:///./app/images/section-title-svgs/the-contenders.svg","webpack:///./app/images/section-title-svgs/important-year.svg","webpack:///./app/images/section-title-svgs/safety.svg","webpack:///./app/images/section-title-svgs/regulatory-landscape.svg","webpack:///./app/images/section-title-svgs/operations-and-cost.svg","webpack:///./app/images/section-title-svgs/technical-challenges.svg","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/node_modules/scheduler/index.js","webpack:///./node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/resize-observer/lib/ResizeObservation.js","webpack:///./node_modules/resize-observer/lib/ResizeObserverEntry.js","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/@financial-times/flourish-receive-custom-analytics/build/index.js","webpack:///./node_modules/remove-markdown/index.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/html-react-parser/lib/dom-to-react.js","webpack:///./node_modules/react-property/lib/index.js","webpack:///./node_modules/react-property/lib/possibleStandardNamesOptimized.js","webpack:///./node_modules/style-to-js/cjs/index.js","webpack:///./node_modules/style-to-object/index.js","webpack:///./node_modules/inline-style-parser/index.js","webpack:///./node_modules/style-to-js/cjs/utilities.js","webpack:///./node_modules/html-dom-parser/index.mjs","webpack:///./node_modules/html-dom-parser/lib/client/domparser.js","webpack:///./node_modules/html-dom-parser/lib/client/constants.js","webpack:///./node_modules/domhandler/lib/index.js","webpack:///./node_modules/react-reconciler/cjs/react-reconciler-constants.production.min.js","webpack:///./node_modules/react-reconciler/cjs/react-reconciler.production.min.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///./node_modules/r3f-perf/node_modules/zustand/vanilla.js","webpack:///./node_modules/use-sync-external-store/shim/with-selector.js","webpack:///./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack:///./node_modules/use-sync-external-store/shim/index.js","webpack:///./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack:///./data/models lazy ^\\.\\/.*\\.glb$ namespace object","webpack:///./node_modules/globalthis/index.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/has-property-descriptors/index.js","webpack:///./node_modules/get-intrinsic/index.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/has-proto/index.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/globalthis/shim.js","webpack:///./node_modules/three-stdlib/loaders/DRACOLoader.js","webpack:///./node_modules/three-stdlib/utils/BufferGeometryUtils.js","webpack:///./node_modules/three-stdlib/loaders/GLTFLoader.js","webpack:///./app/components/ScrollWrapper/wrapperContext.js","webpack:///./app/util/spatial.js","webpack:///./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack:///./node_modules/stylis/dist/stylis.mjs","webpack:///./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack:///./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack:///./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack:///./app/components/Debugger/index.jsx","webpack:///./app/components/ScrollWrapper/util/window-dimensions.js","webpack:///./node_modules/html-react-parser/index.mjs","webpack:///./app/components/ScrollStep/index.jsx","webpack:///./app/components/ScrollWrapper/index.jsx","webpack:///./app/components/ImageSet/index.jsx","webpack:///./app/components/Credits/index.jsx","webpack:///./app/components/Loader/index.jsx","webpack:///./node_modules/react-merge-refs/dist/react-merge-refs.esm.js","webpack:///./node_modules/@react-three/drei/core/useFBO.js","webpack:///./node_modules/@react-three/drei/core/PerspectiveCamera.js","webpack:///./node_modules/@react-three/drei/core/Preload.js","webpack:///./node_modules/@react-three/drei/core/AdaptiveDpr.js","webpack:///./node_modules/@react-three/drei/core/AdaptiveEvents.js","webpack:///./node_modules/@react-three/a11y/dist/a11y.esm.js","webpack:///./node_modules/@stitches/react/dist/index.mjs","webpack:///./node_modules/@radix-ui/react-icons/dist/react-icons.esm.js","webpack:///./node_modules/webgl-sdf-generator/dist/webgl-sdf-generator.mjs","webpack:///./node_modules/bidi-js/dist/bidi.mjs","webpack:///./node_modules/troika-three-utils/dist/troika-three-utils.esm.js","webpack:///./node_modules/troika-three-text/dist/troika-three-text.esm.js","webpack:///./node_modules/@react-three/drei/core/Text.js","webpack:///./node_modules/r3f-perf/dist/r3f-perf.esm.js","webpack:///./node_modules/three/src/math/MathUtils.js","webpack:///./node_modules/@react-three/drei/core/useHelper.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/three-stdlib/controls/OrbitControls.js","webpack:///./node_modules/@react-three/drei/core/OrbitControls.js","webpack:///./node_modules/@react-three/drei/core/shapes.js","webpack:///./node_modules/@react-three/drei/core/Billboard.js","webpack:///./app/components/ThreeObjects/Model.jsx","webpack:///./app/components/Logical/CameraContext.jsx","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./app/components/ThreeScene/util/util.js","webpack:///./node_modules/three-stdlib/lines/LineSegmentsGeometry.js","webpack:///./node_modules/three-stdlib/lines/LineMaterial.js","webpack:///./node_modules/three-stdlib/lines/LineSegments2.js","webpack:///./node_modules/three-stdlib/lines/LineGeometry.js","webpack:///./node_modules/three-stdlib/lines/Line2.js","webpack:///./node_modules/@react-three/drei/core/Line.js","webpack:///./app/components/ThreeObjects/LabelOverlay.jsx","webpack:///./app/components/ThreeObjects/ModelLabelGroup.jsx","webpack:///./app/components/ThreeScene/index.jsx","webpack:///./app/components/Breadcrumbs/AircraftSVG.jsx","webpack:///./app/components/Breadcrumbs/index.jsx","webpack:///./app/components/ThreeCanvas/index.jsx","webpack:///./app/components/VideoProgress/index.jsx","webpack:///./app/components/BackgroundMedia/index.jsx","webpack:///./app/components/Intro/index.jsx","webpack:///./app/components/VideoTopper/index.jsx","webpack:///./app/components/SectionTitle/index.jsx","webpack:///./app/components/ImageGallery/index.jsx","webpack:///./app/components/FlourishChart/index.jsx","webpack:///./app/util/window-dimensions.js","webpack:///./app/util/meshes.js","webpack:///./app/app.js","webpack:///./app/index.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/events.js","webpack:///./node_modules/@financial-times/o-overlay/src/js/utils.js","webpack:///./node_modules/@financial-times/o-overlay/src/js/overlay.js","webpack:///./node_modules/@financial-times/o-overlay/main.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/display-name.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/auth.js","webpack:///./node_modules/@financial-times/o-comments/src/js/stream.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/purge-jwt-cache.js","webpack:///./node_modules/@financial-times/o-comments/src/js/count.js","webpack:///./node_modules/@financial-times/o-comments/src/js/comments.js","webpack:///./node_modules/@financial-times/o-comments/main.js","webpack:///./node_modules/@financial-times/o-header/src/js/search.js","webpack:///./node_modules/@financial-times/o-header/src/js/mega.js","webpack:///./node_modules/@financial-times/o-header/src/js/drawer.js","webpack:///./node_modules/@financial-times/o-header/src/js/subnav.js","webpack:///./node_modules/@financial-times/o-header/src/js/sticky.js","webpack:///./node_modules/@financial-times/o-header/src/js/header.js","webpack:///./node_modules/@financial-times/o-header/main.js","webpack:///./node_modules/@financial-times/o-footer/src/js/footer.js","webpack:///./node_modules/@financial-times/o-footer/src/js/layout.js","webpack:///./node_modules/@financial-times/o-footer/main.js","webpack:///./node_modules/@financial-times/o-date/src/js/date.js","webpack:///./node_modules/@financial-times/o-date/main.js","webpack:///./node_modules/@financial-times/o-share/src/js/share.js","webpack:///./node_modules/@financial-times/o-share/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","parentHotUpdateCallback","window","hotAvailableFilesMap","hotRequestedFilesMap","hotUpdate","hotWaitingFiles","hotChunksLoading","hotUpdateDownloaded","hotAddUpdateChunk","hotCurrentChildModule","hotApplyOnUpdate","hotCurrentHash","hotCurrentModuleData","hotCurrentParents","hotCurrentParentsTemp","hotCreateRequire","me","installedModules","__webpack_require__","fn","request","hot","active","parents","indexOf","children","console","warn","ObjectFactory","name","configurable","enumerable","get","set","value","defineProperty","e","hotStatus","hotSetStatus","then","finishChunkLoading","err","hotWaitingFilesMap","hotEnsureUpdateChunk","t","mode","hotCreateModule","_acceptedDependencies","_declinedDependencies","_selfAccepted","_selfDeclined","_selfInvalidated","_disposeHandlers","_main","accept","dep","callback","undefined","decline","dispose","addDisposeHandler","removeDisposeHandler","idx","splice","invalidate","this","hotApplyInvalidatedModule","hotQueuedInvalidatedModules","check","hotCheck","apply","hotApply","status","l","hotStatusHandlers","addStatusHandler","removeStatusHandler","newStatus","hotDeferred","hotUpdateNewHash","toModuleId","id","Error","requestTimeout","Promise","resolve","reject","XMLHttpRequest","requestPath","p","open","timeout","send","onreadystatechange","readyState","update","JSON","parse","responseText","hotApplyInvalidatedModules","c","h","promise","script","document","createElement","charset","src","head","appendChild","hotDownloadUpdateChunk","deferred","result","outdatedModules","options","hotApplyInternal","cb","j","module","getAffectedStuff","updateModuleId","outdatedDependencies","queue","map","chain","queueItem","pop","type","parentId","parent","concat","addAllToSet","a","b","item","appliedUpdate","warnUnexpectedRequire","abortError","doApply","doDispose","chainInfo","join","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","outdatedSelfAcceptedModules","slice","errorHandler","keys","forEach","hotDisposeChunk","dependency","moduleOutdatedDependencies","disposeHandlers","child","error","callbacks","onErrored","dependencyId","ignoreErrored","err2","originalError","list","0","exports","promises","installedChunkData","onScriptComplete","nc","setAttribute","substr","jsonpScriptSrc","event","onerror","onload","clearTimeout","chunk","errorType","realSrc","target","message","setTimeout","all","m","d","getter","o","r","Symbol","toStringTag","__esModule","ns","create","key","bind","n","object","property","oe","jsonpArray","oldJsonpFunction","s","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","GLSL1","GLSL3","_SRGBAFormat","EventDispatcher","listener","_listeners","listeners","listenerArray","index","array","_lut","toString","_seed","DEG2RAD","Math","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","toLowerCase","clamp","min","max","euclideanModulo","lerp","x","y","isPowerOfTwo","ceilPowerOfTwo","pow","ceil","log","LN2","floorPowerOfTwo","floor","MathUtils","freeze","__proto__","mapLinear","a1","a2","b1","b2","inverseLerp","damp","lambda","dt","exp","pingpong","abs","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","seededRandom","imul","degToRad","degrees","radToDeg","radians","setQuaternionFromProperEuler","q","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","normalize","constructor","Float32Array","Uint16Array","round","Uint8Array","Int16Array","Int8Array","denormalize","Vector2","scalar","v","w","addVectors","subVectors","multiplyScalar","elements","minVal","maxVal","divideScalar","sqrt","atan2","distanceToSquared","dx","dy","alpha","v1","v2","offset","attribute","getX","getY","center","angle","iterator","isVector2","Matrix3","arguments","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","f","g","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","invert","transpose","tx","ty","sx","sy","rotation","cx","cy","theta","matrix","fromArray","arrayNeedsUint32","isMatrix3","TYPED_ARRAYS","Uint8ClampedArray","Int32Array","Uint32Array","Float64Array","getTypedArray","buffer","createElementNS","SRGBToLinear","LinearToSRGB","FN","ColorManagement","legacyMode","colorSpace","convert","color","sourceColorSpace","targetColorSpace","fromWorkingColorSpace","workingColorSpace","toWorkingColorSpace","_colorKeywords","_rgb","_hslA","_hslB","hue2rgb","toComponents","source","Color","setRGB","isColor","copy","setHex","setStyle","hex","style","handleAlpha","string","parseFloat","exec","components","parseInt","setHSL","size","charAt","setColorName","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","delta","getHSL","color1","color2","getZ","normalized","_canvas","NAMES","ImageUtils","image","test","HTMLCanvasElement","canvas","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","HTMLImageElement","ImageBitmap","imageData","getImageData","Source","uuid","version","meta","isRootObject","images","output","url","Array","isArray","isDataTexture","serializeImage","getDataURL","isSource","textureId","Texture","DEFAULT_IMAGE","mapping","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","super","mipmaps","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","userData","onUpdate","isRenderTargetTexture","needsPMREMUpdate","setUvTransform","stringify","needsUpdate","textures","metadata","generator","toJSON","wrap","dispatchEvent","uv","applyMatrix3","isTexture","Vector4","z","acos","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getW","isVector4","WebGLRenderTarget","depth","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","samples","clone","assign","isWebGLRenderTarget","DataArrayTexture","wrapR","isDataArrayTexture","WebGLArrayRenderTarget","isWebGLArrayRenderTarget","Data3DTexture","isData3DTexture","WebGL3DRenderTarget","isWebGL3DRenderTarget","WebGLMultipleRenderTargets","count","il","isWebGLMultipleRenderTargets","Quaternion","_x","_y","_z","_w","qa","qb","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","Number","EPSILON","len","tDir","_onChangeCallback","quaternion","euler","isEuler","_order","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","dot","step","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","u1","sqrt1u1","sqrtu1","u2","u3","isQuaternion","Vector3","multiplyVectors","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","u","isVector3","Box3","Infinity","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","expandByPoint","halfSize","_vector$b","add","precise","expandByObject","box","isEmpty","point","vector","addScalar","updateWorldMatrix","geometry","attributes","position","fromBufferAttribute","boundingBox","computeBoundingBox","_box$3","union","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","isBox3","_testAxis","v0","extents","p0","p1","p2","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","at","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","scale","x2","y2","z2","wx","wy","wz","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","RotationOrders","Layers","mask","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","DefaultUp","_onChange","defineProperties","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","remove","getObjectByProperty","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","nodes","serialize","library","element","toArray","isInstancedMesh","instanceMatrix","instanceColor","isScene","background","environment","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","values","recursive","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getBarycoord","p3","uv1","uv2","uv3","addScaledVector","i0","i1","i2","getNormal","setFromCoplanarPoints","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","d5","d6","vb","va","materialId","Material","blending","side","vertexColors","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","flatShading","currentValue","roughness","metalness","sheen","sheenColor","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularColor","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularColorMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","fog","srcPlanes","dstPlanes","isMaterial","fromType","MeshBasicMaterial","setValues","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","TypeError","usage","updateRange","index1","index2","colors","vectors","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float16BufferAttribute","isFloat16BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","_id$1","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","start","materialIndex","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","translate","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","isNaN","jl","indices","positions","normals","uvs","nVertices","hasAttribute","tangents","getAttribute","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","isFinite","group","tmp2","n2","handleVertex","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","ab","normalizeNormals","isBufferGeometry","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","String","morphTargets","raycaster","intersects","intersectsBox","intersection","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","isGeometry","morphInfluences","influence","boneTransform","intersect","intersectTriangle","checkIntersection","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","UniformsUtils","merge","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","isShaderMaterial","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","tan","fullWidth","fullHeight","enabled","offsetX","offsetY","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentRenderTarget","getRenderTarget","currentToneMapping","toneMapping","currentXrEnabled","xr","setRenderTarget","render","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","shader","tEquirect","mesh","currentMinFilter","stencil","clear","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","end","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","requestAnimationFrame","stop","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","deleteBuffer","delete","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_vert","background_frag","cube_vert","cube_frag","depth_vert","depth_frag","distanceRGBA_vert","distanceRGBA_frag","equirect_vert","equirect_frag","linedashed_vert","linedashed_frag","meshbasic_vert","meshbasic_frag","meshlambert_vert","meshlambert_frag","meshmatcap_vert","meshmatcap_frag","meshnormal_vert","meshnormal_frag","meshphong_vert","meshphong_frag","meshphysical_vert","meshphysical_frag","meshtoon_vert","meshtoon_frag","points_vert","points_frag","shadow_vert","shadow_frag","sprite_vert","sprite_frag","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","state","objects","clearColor","planeMesh","boxMesh","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","enableAll","unshift","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","reset","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","attributesNum","programAttributes","getAttributes","location","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","info","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","has","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","removeEventListener","cubemap","fromEquirectangularTexture","addEventListener","physical","sheenColorMap","sheenRoughnessMap","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","scaleW","scaleH","makeOrthographic","isOrthographicCamera","EXTRA_LOD_SIGMA","_flatCamera","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_lodMax","_cubeSize","_lodPlanes","_sizeLods","_sigmas","_blurMaterial","_cubemapMaterial","_equirectMaterial","_compileMaterial","sigma","_setSize","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapMaterial","_getEquirectMaterial","_dispose","cubeSize","log2","outputTarget","_setViewport","_textureToCubeUV","params","_createRenderTarget","sizeLods","lodPlanes","sigmas","lodMax","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","fill","_createPlanes","weights","poleAxis","_getCommonVertexShader","_getBlurShader","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","backgroundMaterial","backgroundBox","useSolidColor","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","sum","weight","outputSize","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","cubemapUV","isEquirectMap","isCubeMap","fromEquirectangular","fromCubemap","isCubeTextureComplete","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","numericalSort","absNumericalSort","morph","WebGLMorphtargets","influencesList","morphTextures","workInfluences","objectInfluences","morphTargetsCount","entry","hasMorphPosition","hasMorphNormals","hasMorphColors","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","disposeTexture","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","influences","sort","MAX_SAFE_INTEGER","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","hasEventListener","emptyTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","unit","setTexture2D","setValueT3D1","setTexture3D","setValueT6","setTextureCube","setValueT2DArray1","setTexture2DArray","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getShaderErrors","getShaderParameter","errors","getShaderInfoLog","trim","errorMatches","errorLine","toUpperCase","split","lines2","from","to","handleSource","getShaderSource","getTexelEncodingFunction","functionName","getEncodingComponents","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","envMapCubeUVSize","imageHeight","envMapCubeUVHeight","maxMip","texelHeight","texelWidth","generateCubeUVSize","customExtensions","extensionDerivatives","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","prefixVertex","prefixFragment","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","morphTextureStride","doubleSided","flipSided","shadowMapEnabled","decodeVideoTexture","physicallyCorrectLights","opaque","outputEncoding","useDepthPacking","depthPacking","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","cachedUniforms","deleteShader","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","_id","WebGLShaderCache","shaderCache","Map","materialCache","vertexShaderStage","_getShaderStage","fragmentShaderStage","materialShaders","_getShaderCacheForMaterial","shaderStage","code","Set","stage","WebGLShaderStage","WebGLPrograms","cubeuvmaps","_programLayers","_customShaders","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","getParameters","shadows","isMeshStandardMaterial","customVertexShaderID","customFragmentShaderID","getVertexShaderID","getFragmentShaderID","useAlphaTest","useClearcoat","isXRRenderTarget","isVideoTexture","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","morphAttributeCount","getProgramCacheKeyParameters","disableAll","enable","getProgramCacheKeyBooleans","acquireProgram","pl","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","transmissive","getNextRenderItem","renderItem","finish","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","renderCallDepth","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","hash","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","1","2","shadowMaterialVertical","VSM_SAMPLES","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","k","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","disable","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","bindFramebuffer","framebuffer","drawBuffersWEBGL","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","texStorage2D","texStorage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","navigator","userAgent","_videoTextures","_sources","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","getMipLevels","isFramebufferTexture","isCompressedTexture","filterFallback","textureProperties","__webglInit","webglTextures","__cacheKey","deleteTexture","deallocateTexture","onRenderTargetDispose","renderTargetProperties","__webglTexture","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","deallocateRenderTarget","textureUnits","slot","updateVideoTexture","__version","complete","uploadTexture","wrappingToGL","filterToGL","setTextureParameters","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","initTexture","forceUpload","textureCacheKey","getTextureCacheKey","__currentVersion","pixelStorei","textureNeedsPowerOfTwo","verifyColorSpace","mipmap","glInternalFormat","useTexStorage","allocateMemory","levels","isDepthTexture","setupFrameBufferTexture","attachment","textureTarget","__hasExternalTextures","useMultisampledRTT","framebufferTexture2DMultisampleEXT","getRenderTargetSamples","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","renderbufferStorageMultisampleEXT","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","__autoAllocateDepthBuffer","webglDepthTexture","setupDepthTexture","createRenderbuffer","__useRenderToTexture","sRGBToLinear","textureUnit","resetTextureUnits","isCompressed","cubeImage","mipmapImage","uploadCubeTexture","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","createFramebuffer","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","invalidationArray","depthStyle","ignoreDepthValues","__ignoreDepthValues","invalidateFramebuffer","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","SRGB_ALPHA_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR","COMPRESSED_RGBA_ASTC_10x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","cameras","isArrayCamera","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","getPose","targetRaySpace","transform","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","threshold","handedness","gripSpace","DepthTexture","WebXRManager","framebufferScaleFactor","referenceSpaceType","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","getContextAttributes","initialRenderTarget","newRenderTarget","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","onSessionEnd","disconnect","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setReferenceSpace","space","getBaseLayer","getBinding","getFrame","setSession","async","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","framebufferWidth","framebufferHeight","depthFormat","depthType","glDepthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","setFoveation","requestReferenceSpace","cameraLPos","cameraRPos","updateCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","getCamera","getFoveation","fixedFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","setRenderTargetFramebuffer","cameraVRNeedsUpdate","glSubImage","getViewSubImage","setRenderTargetTextures","depthStencilTexture","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","isMeshLambertMaterial","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","refreshUniformsStandard","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDistance","isMeshNormalMaterial","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","WebGLRenderer","display","createCanvasElement","_context","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","_alpha","currentRenderList","currentRenderState","renderListStack","renderStateStack","domElement","sortObjects","toneMappingExposure","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","initGLContext","preventDefault","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","releaseMaterialProgramReferences","deallocateMaterial","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","bits","onXRSessionStart","onXRSessionEnd","needsProgramChange","needsLights","lightsStateVersion","getProgram","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","uniformsList","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderObjects","renderTransmissionPass","onAfterRender","programCacheKey","updateCommonMaterialProperties","onBuild","materialNeedsLights","progUniforms","self","setFromProjectionMatrix","projectObject","isLOD","intersectsSprite","camera2","defaultFramebuffer","__useDefaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","readPixels","copyFramebufferToTexture","level","levelScale","copyTexSubImage2D","copyTextureToTexture","srcTexture","dstTexture","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","CustomEvent","detail","isWebGLRenderer","WebGL1Renderer","FogExp2","Fog","Scene","InterleavedBuffer","arrayBuffers","_uuid","ib","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","setFromMatrixScale","transformVertex","vertexPosition","mvPosition","_v1$2","_v2$1","LOD","_currentLevel","addLevel","getObjectForDistance","raycast","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","bones","boneInverses","Bone","isBone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","boneMatrices","inverse","bone","json","boneInverse","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","getMatrixAt","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","_start","_end","LineSegments","LineLoop","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","requestVideoFrameCallback","updateVideo","HAVE_CURRENT_DATA","FramebufferTexture","CompressedTexture","CanvasTexture","isCanvasTexture","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","lengths","getLengths","cacheArcLengths","current","last","arcLengths","targetArcLength","comparison","lengthBefore","t2","pt1","pt2","getTangent","segments","closed","binormals","vec","mat","getTangentAt","MAX_VALUE","tz","makeRotationAxis","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","fromJSON","isEllipseCurve","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","isArcCurve","px","py","pz","CatmullRomCurve3","curveType","intPoint","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","isCatmullRomCurve3","CubicBezierCurve","v3","isCubicBezierCurve","CubicBezierCurve3","isCubicBezierCurve3","LineCurve","isLineCurve","LineCurve3","isLineCurve3","QuadraticBezierCurve","isQuadraticBezierCurve","QuadraticBezierCurve3","isQuadraticBezierCurve3","SplineCurve","isSplineCurve","Curves","CurvePath","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","diff","segmentLength","lens","cacheLengths","sums","pts","getPoints","Path","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","absarc","absellipse","firstPoint","lastPoint","LatheGeometry","phiStart","phiLength","initNormals","inverseSegments","vertex","curNormal","prevNormal","base","CapsuleGeometry","capSegments","radialSegments","CircleGeometry","thetaStart","thetaLength","segment","CylinderGeometry","radiusTop","radiusBottom","openEnded","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","PolyhedronGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","subdivide","applyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","computeVertexNormals","details","DodecahedronGeometry","_v0","_v1$1","_normal","_triangle","EdgesGeometry","thresholdAngle","precisionPoints","thresholdDot","indexAttr","getIndex","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","Shape","holes","holesPts","getPointsHoles","hole","Earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","prev","invSize","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","isClockWise","reverse","hl","ahole","triangulateShape","scalePt2","pt","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","toJSON$1","geometryShapes","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","IcosahedronGeometry","OctahedronGeometry","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","SphereGeometry","thetaEnd","grid","verticesRow","uOffset","TetrahedronGeometry","TorusGeometry","tube","tubularSegments","arc","TorusKnotGeometry","P1","P2","B","T","N","calculatePositionOnCurve","cu","su","quOverP","cs","TubeGeometry","frames","P","generateSegment","generateIndices","generateBufferData","WireframeGeometry","edges","ol","isUniqueEdge","hash1","hash2","Geometries","BoxBufferGeometry","CapsuleBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","RawShaderMaterial","_sheen","_clearcoat","_transmission","materialLib","AnimationUtils","arraySlice","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","find","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","trackType","getInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","validate","optimize","typeName","getTrackTypeForValueTypeName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","global","DefaultLoadingManager","Loader","manager","crossOrigin","withCredentials","resourcePath","requestHeader","load","loading","FileLoader","req","Request","headers","Headers","credentials","mimeType","responseType","fetch","response","ReadableStream","body","getReader","reader","contentLength","total","lengthComputable","loaded","stream","readData","read","done","close","byteLength","ProgressEvent","enqueue","Response","statusText","arrayBuffer","blob","text","DOMParser","parseFromString","label","decoder","TextDecoder","decode","catch","finally","AnimationLoader","setPath","setRequestHeader","setWithCredentials","CompressedTextureLoader","setResponseType","loadTexture","texDatas","mipmapCount","isCubemap","ImageLoader","onImageLoad","removeEventListeners","onImageError","CubeTextureLoader","urls","setCrossOrigin","DataTextureLoader","texData","TextureLoader","Light","HemisphereLight","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","isSpotLightShadow","SpotLight","power","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","DirectionalLightShadow","isDirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","MaterialLoader","getTexture","shading","LoaderUtils","fromCharCode","decodeURIComponent","escape","lastIndexOf","InstancedBufferGeometry","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","getArrayBuffer","typedArray","bufferAttribute","drawcalls","offsets","ObjectLoader","extractUrlBase","loadAsync","parseAsync","parseAnimations","parseShapes","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseSkeletons","bindSkeletons","hasImages","parseImagesAsync","bufferGeometryLoader","setTextures","deserializeImage","loadImage","imageArray","deserializedImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","isInteger","objectAnimations","setResourcePath","ImageBitmapLoader","createImageBitmap","fetchOptions","res","colorSpaceConversion","imageBitmap","isImageBitmapLoader","AudioContext","webkitAudioContext","AudioLoader","bufferCopy","decodeAudioData","audioBuffer","HemisphereLightProbe","sky","ground","isHemisphereLightProbe","AmbientLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","_projectionMatrix","StereoCamera","eyeSep","_cache","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","Clock","autoStart","oldTime","elapsedTime","running","now","getElapsedTime","getDelta","newTime","performance","Date","_position$1","_quaternion$1","_scale$1","_orientation$1","AudioListener","gain","createGain","connect","destination","timeDelta","_clock","setTargetAtTime","currentTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","Audio","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","play","delay","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","getFilters","setFilters","_position","_quaternion","_scale","_orientation","PositionalAudio","panner","createPanner","panningModel","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","getValue","targetIndex","workOffset","_reservedRe","RegExp","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","PropertyBinding","rootNode","parsedPath","parseTrackName","node","findNode","nodeName","_getValue_unbound","_setValue_unbound","root","isAnimationObjectGroup","Composite","matches","results","objectName","objectIndex","propertyIndex","lastDot","substring","getBoneByName","searchNodeSubtree","childNode","subTreeNode","targetObject","resolvedProperty","dest","targetArray","sourceArray","_getValue_unavailable","_setValue_unavailable","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","targetGroup","optionalParsedPath","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","indicesByUUID","paths","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","action","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","_updateWeight","timeRunning","_updateTimeScale","clipTime","_updateTime","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","Raycaster","coords","unproject","intersectObject","ascSort","Spherical","other","setFromCartesianCoords","Cylindrical","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","_vector$3","SpotLightHelper","cone","coneLength","coneWidth","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","boneList","isSkeletonHelper","PointLightHelper","sphereSize","_vector$1","_color1","_color2","HemisphereLightHelper","rotateY","GridHelper","PolarGridHelper","radials","circles","_v1","_v2","_v3","DirectionalLightHelper","lightPlane","targetLine","_vector","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_box","BoxHelper","setFromObject","Box3Helper","PlaneHelper","_axis","_lineGeometry","_coneGeometry","ArrowHelper","headLength","headWidth","setDirection","setLength","AxesHelper","xAxisColor","yAxisColor","zAxisColor","ShapePath","subPaths","currentPath","quadraticCurveTo","bezierCurveTo","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","betterShapeHoles","newShapes","tmpPoints","tmpHoles","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","DataUtils","val","_floatView","_uint32View","_baseTable","_shiftTable","_mantissaTable","_offsetTable","_exponentTable","_buffer","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","isMultiMaterial","PointCloud","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","construct","fromPoints","AxisHelper","BoundingBoxHelper","EdgesHelper","setColors","WireframeHelper","Handlers","XHRLoader","BinaryTextureLoader","empty","isIntersectionBox","isIntersectionSphere","toVector3","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","getPosition","setRotationFromQuaternion","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateX","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","removeAttribute","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","gammaFactor","renderReverseSided","renderSingleSided","WebGLRenderTargetCube","CanvasRenderer","JSONLoader","setBuffer","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","attach","LensFlare","ParametricGeometry","TextGeometry","FontLoader","Font","ImmediateRenderObject","WebGLMultisampleRenderTarget","DataTexture2DArray","DataTexture3D","revision","__THREE__","discreteValues","pad","randomBlock","safeCounter","api","timestamp","getTime","fingerprint","slug","date","print","counter","globalCount","mimeTypes","page_callbacks","args","arg","is","variable","encode","str","encodeURIComponent","unescape","addEvent","attachEvent","broadcast","namespace","eventType","bubbles","onPage","includes","triggerPage","getValueFromCookie","matcher","cookie","$1","filterProperties","objectToFilter","allowedPropertyNames","filteredObject","allowedName","sanitise","assignIfUndefined","subject","prop","findCircularPathsIn","rootObject","traversedValues","WeakSet","circularPaths","_findCircularPathsIn","currentObject","entries","containsCircularPaths","Boolean","_containsCircularPaths","isDeepEqual","flags","valueOf","mod","__create","__defProp","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getOwnPropSymbols","getOwnPropertySymbols","__getProtoOf","getPrototypeOf","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","writable","__spreadValues","__objRest","exclude","__copyProps","except","desc","__toESM","isNodeMode","grid_exports","__export","GridChild","GridContainer","GridRow","default","grid_default","import_react","import_prop_types","_a","_b","colspan","props","breakpoint","displayName","propTypes","isRequired","oneOfType","number","xl","S","M","L","XL","defaultProps","import_react2","import_prop_types2","import_classnames","compact","className","bool","import_react3","import_prop_types3","import_classnames2","bleed","snappy","catalogue","extend","_window$document","_window$navigator","hasColorSpace","getColorManagement","_ColorManagement","def","isRef","useIsomorphicLayoutEffect","product","useMutableCallback","ref","Block","ErrorBoundary","getDerivedStateFromError","DEFAULTS","calculateDpr","dpr","_window$devicePixelRa","devicePixelRatio","getRootState","_r3f","__r3f","getState","arr","fun","boo","und","arrays","strict","isObj","isArr","equ","buildGraph","prepare","instance","primitive","previousAttach","memoizedProps","eventCount","reduce","acc","INDEX_REGEX","_child$__r3f","_child$__r3f2","previous","diffProps","cN","kN","rN","cP","kP","rP","_instance$__r3f","localState","changes","previousKeys","DEFAULT","_instance$__r3f2","startsWith","memoized","applyProps$1","_instance$__r3f3","_root$getState","_instance$__r3f4","rootState","prevHandlers","isEvent","currentInstance","targetProp","reverseEntries","ctor","setScalar","linear","convertSRGBToLinear","outputColorSpace","invalidateInstance","internal","interaction","updateInstance","_instance$__r3f5","_instance$__r3f5$root","manual","makeId","eventObject","releaseInternalPointerCapture","capturedMap","captures","pointerId","captureData","releasePointerCapture","createEvents","store","filterPointerEvents","some","cancelPointer","intersections","hoveredObj","hovered","hit","onPointerOut","onPointerLeave","pointerMissed","onPointerMissed","handlePointer","lastEvent","isPointerMove","isClickEvent","hits","duplicates","eventsObjects","previousRoot","events","compute","flatMap","_state$previousRoot","aState","bState","priority","_r3f2","initialClick","calculateDistance","initialHits","stopped","pointer","unprojectedPoint","hasPointerCapture","_internal$capturedMap","_internal$capturedMap2","setPointerCapture","extractEventProps","raycastEvent","capturesForPointer","currentTarget","nativeEvent","handleIntersects","onPointerOver","onPointerEnter","hoveredItem","stopPropagation","onPointerMove","handler","isRenderer","createSubs","subs","globalEffects","globalAfterEffects","globalTailEffects","addEffect","addAfterEffect","addTail","run","effects","flushGlobalEffects","subscribers","subscription","render$1","clock","frameloop","useStore","useThree","selector","equalityFn","useFrame","renderPriority","subscribe","loadingFn","Proto","input","useLoader","equal","preload","roots","advance","_state$gl$xr","_state$gl$xr2","runGlobalEffects","createLoop","reconciler","applyProps","_roots","_getEventPriority","createInstance","parentInstance","_parentInstance$__r3f","insertBefore","beforeChild","_parentInstance$__r3f2","restSiblings","sibling","removeRecursive","removeChild","_parentInstance$__r3f3","_child$__r3f3","_child$__r3f5","_child$__r3f4","removeInteractivity","isPrimitive","shouldDispose","_child$__r3f6","handleTextInstance","appendInitialChild","supportsMutation","isPrimaryRenderer","supportsPersistence","supportsHydration","noTimeout","appendChildToContainer","removeChildFromContainer","insertInContainerBefore","getRootHostContext","getChildHostContext","parentHostContext","_type","oldProps","newProps","argsNew","restNew","argsOld","cO","restOld","reconstruct","_oldProps","fiber","newInstance","autoRemovedBeforeAppend","alternate","stateNode","switchInstance","_props","_int","getPublicInstance","prepareForCommit","preparePortalMount","resetAfterCommit","shouldSetTextContent","clearContainer","createTextInstance","hideTextInstance","unhideTextInstance","getCurrentEventPriority","beforeActiveInstanceBlur","afterActiveInstanceBlur","detachDeletedInstance","scheduleTimeout","cancelTimeout","createRenderer","_globalScope$event","globalScope","shallowLoose","createRendererInstance","customRenderer","createRoot","prevRoot","prevFiber","prevStore","logRecoverableError","reportError","defaultTarget","tempTarget","getWorldPosition","performanceTimeout","setPerformanceCurrent","connected","legacy","flat","controls","mouse","debounce","regress","initialDpr","setEvents","setDpr","resolved","setFrameloop","oldSize","oldDpr","oldCamera","_size$updateStyle","createStore","createContainer","onCreated","lastCamera","configured","glConfig","propsSize","sceneOptions","onCreatedCallback","orthographic","raycastOptions","cameraOptions","handleXRFrame","handleSessionChange","oldEnabled","oldType","_types$shadows","types","percentage","soft","variance","defaultSize","parentElement","getBoundingClientRect","computeInitialSize","configure","updateContainer","Provider","rootElement","unmountComponentAtNode","_state$gl","_state$gl$renderLists","_state$gl2","_state$gl3","injectIntoDevTools","bundleType","rendererPackageName","hasOwn","classNames","classes","argType","inner","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","months","days","formats","datetime","compiledTemplates","formatReplacementsMap","MMMM","MMM","MM","yyyy","EEEE","EEE","dd","do","mm","hh","H","HH","inSeconds","minute","hour","day","week","month","year","ftDateFormat","toDate","asTodayOrYesterdayOrNothing","interval","getSecondsBetween","dateString","isToday","isYesterday","dateFormat","tpl","funcString","replacer","Function","timeAgo","limit","abbreviated","suffix","timeAgoNoSeconds","ftTime","dateObj","isNearFuture","isFarFuture","otherTime","within24Hours","sameDayOfWeek","getDay","within48Hours","consecutiveDaysOfTheWeek","useMeasure","_temp","scroll","polyfill","offsetSize","ResizeObserver","bounds","scrollContainers","resizeObserver","lastBounds","scrollDebounce","resizeDebounce","resize","mounted","forceRefresh","resizeChange","scrollChange","HTMLElement","offsetHeight","offsetWidth","areBoundsEqual","removeListeners","addListeners","observe","scrollContainer","capture","passive","onScroll","onWindowResize","findScrollContainers","overflow","overflowX","overflowY","getComputedStyle","every","__defProps","__getOwnPropDescs","getOwnPropertyDescriptors","traverseFiber","ascending","return","wrapContext","_currentRenderer","_currentRenderer2","_","FiberContext","_reactInternals","ReactCurrentOwner","ReactCurrentDispatcher","useFiber","maybeFiber","fiber2","memoizedState","useContextBridge","contextMap","readContext","useContextMap","Prev","DOM_EVENTS","onClick","onContextMenu","onDoubleClick","onWheel","onPointerDown","onPointerUp","onPointerCancel","onLostPointerCapture","createPointerEvents","setFromCamera","_internal$lastEvent","_events$handlers","eventName","_events$handlers2","CanvasImpl","fallback","eventSource","eventPrefix","forwardedRef","Bridge","containerRef","containerRect","canvasRef","divRef","handlePointerMissed","block","setBlock","setError","pointerEvents","_extends","config","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","toPropertyKey","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","hydrateRoot","getHeight","ignoreScrollbars","documentElement","clientHeight","innerHeight","getWidth","clientWidth","innerWidth","getScrollPosition","scrollHeight","scrollWidth","pageXOffset","scrollX","pageYOffset","scrollY","getVisibility","hidden","getOrientation","orientation","screen","matchMedia","throttle","intervals","visibility","listenTo","ev","originalEvent","listenToResize","scrollPos","scrollLeft","scrollTop","listenToScroll","listenToOrientation","listenToVisibility","stopListeningTo","setThrottleInterval","func","wait","later","arrayWithoutHoles","iterableToArray","nonIterableSpread","shallowEqualArrays","arrA","arrB","globalCache","query","lifespan","suspend","toggle","targetEl","toggles","togglePosition","classList","isOpen","contains","handleSpaceKeydown","keyCode","Toggle","toggleEl","_targets","querySelector","attr","Target","addToggle","stateName","removeToggle","el","toggleEls","querySelectorAll","constructAll","Store","undefinedName","cookieRemove","expiry","expires","setTime","toUTCString","domain","cookieSave","storageKey","nameOverride","storage","localStorage","getItem","save","setItem","removeItem","loadStore","oldCookieStoreData","cookies","cookieLoad","write","errorMessage","react","createState","partial","nextState","_previousState","currentSlice","listenerToAdd","nextSlice","_previousSlice","subscribeWithSelector","useEffect","useLayoutEffect","newStateSlice","useReducer","stateRef","useRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","unsubscribe","sliceToReturn","useDebugValue","items","asyncGeneratorStep","gen","_next","_throw","domToReact","attributesToProps","htmlToDOM","domParserOptions","lowerCaseAttributeNames","HTMLReactParser","html","htmlparser2","Element","workerBootstrap","rehydrate","troikaDefine","URL","createObjectURL","Blob","importScripts","revokeObjectURL","messageId","registerModule","dependencies","getTransferables","isWorkerModule","depResult","noLog","postMessage","success","isCallable","ref$1","handleResult","rej","callModule","transferables","stack","supportsWorkers","supported","Worker","terminate","_workerModuleId","_messageId","_allowInitAsString","workers","registeredModules","openRequests","defineWorkerModule","workerId","moduleFunc","_getInitResult","initResult","initPromise","deps","defineMainThreadModule","registrationPromise","callWorker","workerModuleData","unregister","stringifyFunction","terminateWorker","worker","bootstrap","onmessage","msgId","getWorker","missingDataMessage","getGridProperties","getGridFromDoc","getGridBreakpoints","breakpoints","gridProperties","getPropertyValue","getCurrentLayout","layout","getCurrentGutter","gutter","enableLayoutChangeEvents","gridLayouts","layouts","setupQuery","handleMQChange","mql","addListener","decr1","layoutName","layoutWidth","nextLayoutWidth","Delegate","listenerMap","handle","_removedListeners","matchesTag","tagName","matchesRoot","matchesId","captureForType","on","useCapture","matcherParam","off","listenerList","singleEventType","nodeType","parentNode","correspondingUseElement","eventPhase","ret","toFire","HTMLDocument","fire","_default","_typeof","extendStatics","__extends","setPrototypeOf","__","__assign","cloneNode","hasChildren","isDocument","isDirective","isComment","isText","isCDATA","isTag","Document","NodeWithChildren","ProcessingInstruction","Comment","Text","DataNode","domelementtype_1","nodeTypes","ElementType","Tag","Script","Style","Directive","CDATA","Root","_super","attribs","cloneChildren","clone_1","clone_2","clone_3","instruction","sourceCodeLocation","childs","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","immediate","debounced","callNow","flush","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","Timeout","clearFn","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","setImmediate","clearImmediate","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","ContentRect","getBBox","styles","paddingLeft","paddingTop","arrayLikeToArray","minLen","arr2","Queue","first","doAdd","created_at","invalidArg","userID","cookieDomain","defaultUserConfig","hostname","setUser","defaultSessionConfig","isNew","reactProperty","utilities","getPropName","attributeName","possibleStandardNames","attributeNameLowerCased","attributeValue","propName","propertyInfo","inputIsValueOnly","submit","isCustomAttribute","getPropertyInfo","BOOLEAN","OVERLOADED_BOOLEAN","PRESERVE_CUSTOM_ATTRIBUTES","setStyleProp","React","styleToJS","styleToJSOptions","reactCompat","elementsWithNoTextChildren","invertObject","override","isOverridePresent","overrides","isCustomComponent","canTextBeChildOfNode","constants","domhandler","CASE_SENSITIVE_TAG_NAMES","caseSensitiveTagNamesMap","formatAttributes","formatTagName","caseSensitiveTagName","getCaseSensitiveTagName","formatDOM","directive","childNodes","nodeValue","isIE","elem","Doctype","hasSymbols","toStr","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","predicate","predicates","isArgs","implementation","xhr","sendBeacon","resolver","rejecter","Image","mock","transport","should_use_sendBeacon","sendRequest","queueTime","offlineLag","user_callback","core_system","system","test_data","is_live","stringifiedData","category","all_events","counts","queue_length","nextRequest","addAndRun","ResizeObservation_1","ResizeObserverEntry_1","resizeObservers","$$observationTargets","$$activeTargets","$$skippedTargets","callbackGuard","$$callback","targetGuard","findTargetIndex","ResizeObservation","startLoop","unobserve","deregisterResizeObserver","checkStopLoop","ELEMENT_NODE","collection","animationFrameCancelToken","gatherActiveObservationsAtDepth","ro","ot","isActive","calculateDepthForNode","broadcastActiveObservations","shallowestTargetDepth","obs","ResizeObserverEntry","$$broadcastWidth","contentRect","$$broadcastHeight","targetDepth","notificationIteration","errorEvent","ErrorEvent","runLoop","install","__spreadProps","__async","__this","__arguments","fulfilled","rejected","throw","article_layout_exports","Context","article_layout_default","import_react9","import_prop_types6","StringBoolPropType","flagsPropType","prod","errorReporting","analytics","googleAnalytics","ads","mainImage","summary","bylines","onwardjourney","shareButtons","header","footer","comments","dark","micrositeName","oneOf","description","sameAs","keywords","arrayOf","creator","contactPoint","contactType","telephone","email","includedInDataCatalog","distribution","encodingFormat","contentUrl","temporalCoverage","spatialCoverage","geo","import_main","Header","headerClasses","href","header_default","import_core","import_utils","import_settings","import_flourish_receive_custom_analytics","import_main2","spoorTrackingPixel","jsonString","_data","encodedJSON","img","documentMode","Analytics","tracking","scrollDepthTarget","isInitialised","setIsInitialised","useState","nTracking","cutsTheMustard","pageData","content","asset_type","contentId","microsite_name","appContext","trackers","pageAttention","Fragment","apiKey","dangerouslySetInnerHTML","__html","analytics_default","import_react4","Ad","targeting","reserve","showAdsLabel","defaultFormat","smallFormat","mediumFormat","largeFormat","extraFormat","TopAd","import_react5","import_prop_types4","OnwardJourney","urlBase","relatedContent","sections","setSections","sectionP","hasCanceled","isCanceled","makeCancelable","sections2","cancel","section","onwardjourney_default","import_react6","import_prop_types5","import_main3","Comments","linkPageUrl","articleUrl","articleId","comments_default","import_react7","import_main4","Footer","role","getFullYear","footer_default","import_react8","useLayoutChangeEvents","setBreakpoint","listenersRef","mql2","registerLayoutChangeEvents","removeQuery","unregisterLayoutChangeEvents","STORYBOOK_ENV","createContext","ArticleLayout","OAds","initialised","gpt","network","site","gptSite","zone","gptZone","lazyLoad","slots","initSlot","useAds","exact","bylines_exports","bylines_default","bylinesPropType","NamesElement","namesList","separator","author","DateElement","forwardRef","Intl","DateTimeFormat","formatToParts","dateFormatted","dateTime","suppressHydrationWarning","Bylines","names","dateFirst","dateElRef","oDateRef","share_exports","share_default","Share","textTwitter","textFacebook","textLinkedIn","textWhatsApp","separated","services","link","rel","epilogue_exports","epilogue_default","CopyRight","Epilogue","includeGrid","loading_exports","Loading","loading_default","theme","marginTop","zIndex","borderTop","borderBottom","err$1","msg","parseOffset","getOffsetTop","clientTop","currentScrollY","comparisonScrollY","globalOffset","containerElement","alphabet","char","generateId","progressThreshold","isEnabled","isProgress","isDebug","isTriggerOnce","stepEnter","stepExit","stepProgress","handleEnable","shouldEnable","updateObservers","disconnectObservers","notifyProgress","progress","resizeStep","disconnectObserver","updateStepObserver","updateResizeObserver","intersectStep","isIntersecting","notifyStepEnter","notifyStepExit","intersectProgress","intersectionRatio","observers","observer","marginBottom","IntersectionObserver","rootMargin","updateProgressObserver","ratio","createProgressThreshold","setupScroll","NodeList","selectAll","dataset","indexSteps","factory","domparser","DIRECTIVE_REGEX","vanilla","react$1","useSyncExternalStoreWithSelector","getServerState","createImpl","useBoundStore","rootID","setRootID","getRootID","currentSession","root_id","user","ft_session","ft_session_s","device","spoor_session","spoor_session_is_new","spoor_id","settingsConfig","for","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","D","E","refs","updater","F","G","isReactComponent","isPureReactComponent","I","J","K","__self","__source","$$typeof","_owner","O","Q","R","A","_status","_result","U","V","transition","W","ReactCurrentBatchConfig","Children","only","Component","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_currentValue","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","createRef","isValidElement","lazy","_payload","_init","memo","startTransition","unstable_act","useCallback","useContext","useDeferredValue","useId","useImperativeHandle","useInsertionEffect","useMemo","useSyncExternalStore","useTransition","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","oa","setAttributeNS","xlinkHref","ua","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Reflect","Pa","tag","Ra","Qa","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","hb","jb","textContent","kb","lb","mb","nb","MSApp","execUnsafeLocalFunction","namespaceURI","innerHTML","firstChild","ob","lastChild","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","setProperty","tb","menuitem","br","embed","hr","keygen","param","wbr","ub","wb","xb","srcElement","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","Wb","dehydrated","Xb","Zb","Yb","$b","unstable_scheduleCallback","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","cd","ed","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","cancelable","timeStamp","isTrusted","td","ud","vd","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","locale","which","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","ee","fe","ge","he","ie","le","password","search","tel","ne","pe","qe","re","se","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","Le","compareDocumentPosition","selectionStart","selectionEnd","defaultView","getSelection","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","$e","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","childLanes","Tg","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","bh","ch","eventTime","lane","payload","dh","eh","fh","gh","ih","jh","kh","nh","lh","mh","oh","shouldComponentUpdate","ph","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","_stringRef","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","useMutableSource","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","Yi","Zi","$i","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","onclick","autoFocus","createTextNode","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","Xj","Wj","_reactRootContainer","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","dl","fl","zj","$k","ll","_internalRoot","nl","ql","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","wl","isDisabled","supportsFiber","inject","createPortal","unstable_strictMode","findDOMNode","flushSync","hydrate","hydratedSources","_getVersion","_source","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","sortIndex","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","task","ContentRect_1","cr","broadcastWidth","broadcastHeight","toPrimitive","hint","prim","_i","_s","_e","_r","_arr","_n","_d","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","record","__await","unwrapped","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","symbol","any","instanceOf","objectOf","checkPropTypes","PropTypes","src_exports","src_default","flourishMessageEventListener","FLOURISH_DOMAINS","customFlourishAnalytics","eventData","referrer","listUnicodeChar","stripListLeaders","gfm","useImgAltText","sourceKeys","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","skipAttributesToProps","isWhitespace","replaceElement","hasReplace","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","PropertyInfoRecord","_ref","_ref2","CAMELIZE","capitalize","token","_require","CAMELCASE","SAME","possibleStandardNamesOptimized","accumulator","standardName","BOOLEANISH_STRING","NUMERIC","POSITIVE_NUMERIC","RESERVED","STRING","acceptCharset","accessKey","allowFullScreen","alt","as","autoCapitalize","autoComplete","autoCorrect","autoPlay","autoSave","cellPadding","cellSpacing","challenge","charSet","cite","class","classID","colSpan","contextMenu","controlsList","defer","disablePictureInPicture","disableRemotePlayback","download","draggable","encType","enterKeyHint","formMethod","formAction","formEncType","formNoValidate","formTarget","frameBorder","hrefLang","htmlFor","httpEquiv","icon","inputMode","integrity","itemID","itemProp","itemRef","itemScope","itemType","keyParams","keyType","kind","lang","manifest","marginWidth","marginHeight","maxLength","media","mediaGroup","minLength","muted","noModule","nonce","noValidate","optimum","playsInline","poster","profile","radioGroup","readOnly","referrerPolicy","required","reversed","rowSpan","sandbox","scoped","scrolling","seamless","sizes","span","spellCheck","srcDoc","srcLang","srcSet","tabIndex","useMap","wmode","about","accentHeight","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","baseFrequency","baselineShift","baseProfile","bbox","begin","calcMode","capHeight","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","datatype","decelerate","descent","diffuseConstant","divisor","dominantBaseline","dur","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","fillRule","filterRes","filterUnits","floodColor","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","in","inlist","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","operator","orient","overlinePosition","overlineThickness","paintOrder","panose1","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","resource","restart","rotate","rx","ry","security","seed","shapeRendering","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","suppressContentEditableWarning","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","typeof","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","unselectable","vAlphabetic","vectorEffect","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewBox","viewTarget","vMathematical","vocab","widths","wordSpacing","writingMode","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","yChannelSelector","zoomAndPan","__importDefault","style_to_object_1","utilities_1","camelCase","declaration","declarations","hasIterator","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","lineno","column","updatePosition","Position","whitespace","errorsList","reason","filename","silent","rules","comment","pos","decl","decls","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","character","trimHyphen","skipCamelCase","FIRST_TAG_REGEX","HEAD_TAG_REGEX","BODY_TAG_REGEX","parseFromDocument","domParser","createHTMLDocument","getElementsByTagName","parseFromTemplate","template","firstTagName","__createBinding","__exportStar","DomHandler","node_1","reWhitespace","defaultOpts","normalizeWhitespace","withStartIndices","withEndIndices","xmlMode","elementCB","dom","tagStack","lastNode","parser","onparserinit","onreset","onend","handleCallback","onclosetag","onopentag","addNode","ontext","oncomment","oncommentend","oncdatastart","oncdataend","onprocessinginstruction","ConcurrentRoot","ContinuousEventPriority","DefaultEventPriority","DiscreteEventPriority","IdleEventPriority","LegacyRoot","$$$hostConfig","finalizeInitialChildren","prepareUpdate","getInstanceFromNode","supportsMicrotasks","scheduleMicrotask","supportsTestSelectors","findFiberRoot","getBoundingRect","getTextContent","isHiddenSubtree","matchAccessibilityRole","setFocusIfFocusable","setupIntersectionObserver","commitTextUpdate","commitMount","commitUpdate","resetTextContent","hideInstance","unhideInstance","cloneInstance","createContainerChildSet","appendChildToContainerChildSet","finalizeContainerChildren","replaceContainerChildren","cloneHiddenInstance","cloneHiddenTextInstance","canHydrateInstance","canHydrateTextInstance","canHydrateSuspenseInstance","isSuspenseInstancePending","isSuspenseInstanceFallback","registerSuspenseInstanceRetry","getNextHydratableSibling","getFirstHydratableChild","getFirstHydratableChildWithinContainer","getFirstHydratableChildWithinSuspenseInstance","hydrateInstance","hydrateTextInstance","hydrateSuspenseInstance","getNextHydratableInstanceAfterSuspenseInstance","commitHydratedContainer","commitHydratedSuspenseInstance","clearSuspenseBoundary","clearSuspenseBoundaryFromContainer","shouldDeleteUnhydratedTailInstances","didNotMatchHydratedContainerTextInstance","didNotMatchHydratedTextInstance","Cd","Ed","Gd","Id","Kd","Qd","Sd","Ud","Wd","Yd","_workInProgressVersionSecondary","Ge","jf","kf","attemptContinuousHydration","attemptHydrationAtCurrentPriority","attemptSynchronousHydration","batchedUpdates","createComponentSelector","createHasPseudoClassSelector","createHydrationContainer","createRoleSelector","createTestNameSelector","createTextSelector","deferredUpdates","discreteUpdates","findAllNodes","findBoundingRects","findHostInstance","findHostInstanceWithNoPortals","findHostInstanceWithWarning","flushControlled","flushPassiveEffects","focusWithin","getCurrentUpdatePriority","getFindAllNodesFailureDescription","getPublicRootInstance","isAlreadyRendering","observeVisibleRects","registerMutableSourceForHydration","runWithPriority","shouldError","shouldSuspend","jsx","jsxs","createStoreImpl","hasValue","inst","webpackAsyncContext","ids","getPolyfill","getGlobal","origKeys","keysShim","originalKeys","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isObject","isFunction","isArguments","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","$defineProperty","GetIntrinsic","hasArrayLengthDefineBug","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasProto","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","decodeURI","encodeURI","eval","EvalError","FinalizationRegistry","Proxy","RangeError","ReferenceError","SharedArrayBuffer","URIError","WeakRef","errorProto","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","allowMissing","alias","intrinsicName","doEval","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","origSymbol","hasSymbolSham","sym","symObj","syms","foo","$Object","ERROR_MESSAGE","that","bound","binder","boundLength","boundArgs","Empty","_taskCache","decoderPath","decoderConfig","decoderBinary","decoderPending","workerLimit","workerPool","workerNextTaskID","workerSourceURL","defaultAttributeIDs","defaultAttributeTypes","taskConfig","attributeIDs","attributeTypes","useUniqueIDs","decodeGeometry","taskKey","cachedTask","taskID","taskCost","geometryPending","_getWorker","_worker","_callbacks","_createGeometry","_releaseTask","geometryData","_initDecoder","useJS","WebAssembly","librariesPending","_loadLibrary","libraries","jsContent","wasmBinary","DRACOWorker","_taskCosts","_taskLoad","decodeAttribute","draco","dracoGeometry","numComponents","num_components","numValues","num_points","dataType","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","getDracoDataType","ptr","_malloc","GetAttributeDataArrayForAllPoints","HEAPF32","_free","onModuleLoaded","DracoDecoderModule","Decoder","decoderBuffer","DecoderBuffer","Init","decodingStatus","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","POINT_CLOUD","DecodeBufferToPointCloud","error_msg","attributeID","GetAttributeByUniqueId","GetAttributeId","GetAttribute","numIndices","num_faces","GetTrianglesUInt32Array","decodeIndex","estimateBytesUsed","mem","toTrianglesDrawMode","numberOfTriangles","newIndices","newGeometry","dracoLoader","ktx2Loader","meshoptDecoder","pluginCallbacks","register","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFTextureAVIFExtension","GLTFMaterialsEmissiveStrengthExtension","GLTFMeshoptCompression","_onError","gltf","plugins","decodeText","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","asset","fileLoader","plugin","extensionsUsed","extensionName","extensionsRequired","KHR_MATERIALS_UNLIT","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","setPlugins","GLTFRegistry","removeAll","KHR_LIGHTS_PUNCTUAL","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_IOR","KHR_MATERIALS_SHEEN","KHR_MATERIALS_SPECULAR","KHR_MATERIALS_TRANSMISSION","KHR_MATERIALS_IRIDESCENCE","KHR_MATERIALS_VOLUME","KHR_TEXTURE_BASISU","KHR_MATERIALS_EMISSIVE_STRENGTH","EXT_TEXTURE_WEBP","EXT_TEXTURE_AVIF","EXT_MESHOPT_COMPRESSION","EXT_MESH_GPU_INSTANCING","uses","nodeDefs","nodeIndex","nodeLength","nodeDef","_addNodeRef","lightIndex","lightDef","lightNode","innerConeAngle","outerConeAngle","assignExtrasToUserData","createUniqueName","_loadLight","_getNodeRef","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","emissiveStrength","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","iridescenceFactor","iridescence","iridescenceTexture","iridescenceIor","iridescenceIOR","iridescenceThicknessRange","iridescenceThicknessMinimum","iridescenceThicknessMaximum","iridescenceThicknessTexture","sheenColorFactor","sheenRoughnessFactor","sheenColorTexture","sheenRoughnessTexture","transmissionFactor","transmissionTexture","thicknessFactor","thicknessTexture","colorArray","specularFactor","specularTexture","specularColorFactor","specularColorTexture","textureIndex","textureDef","loadTextureImage","isSupported","textureLoader","uri","detectSupport","bufferView","bufferViews","extensionDef","getDependency","byteOffset","byteStride","decodeGltfBufferAsync","ready","decodeGltfBuffer","meshDef","meshes","primitives","WEBGL_CONSTANTS","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","attributesDef","accessor","createNodeMesh","nodeObject","instancedMeshes","TRANSLATION","ROTATION","SCALE","setMatrixAt","assignFinalMaterial","BINARY_EXTENSION_CHUNK_TYPES","headerView","magic","getUint32","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","decodeDracoFile","texCoord","stride2","stride3","m0","m1","_q","GLTFCubicSplineQuaternionInterpolant","FLOAT","FLOAT_MAT3","FLOAT_MAT4","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","LINEAR","REPEAT","SAMPLER_2D","POINTS","LINES","LINE_LOOP","LINE_STRIP","UNSIGNED_BYTE","UNSIGNED_SHORT","5120","5121","5122","5123","5125","5126","WEBGL_FILTERS","9728","9729","9984","9985","9986","9987","WEBGL_WRAPPINGS","33071","33648","10497","WEBGL_TYPE_SIZES","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","POSITION","NORMAL","TANGENT","TEXCOORD_0","TEXCOORD_1","TEXCOORD_2","TEXCOORD_3","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","INTERPOLATION","CUBICSPLINE","STEP","ALPHA_MODES","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","gltfDef","extras","targetNames","createPrimitiveKey","primitiveDef","dracoExtension","geometryKey","createAttributesKey","attributesKey","getNormalizedComponentScale","associations","primitiveCache","nodeCache","meshCache","cameraCache","lightCache","sourceCache","textureCache","nodeNamesUsed","isSafari","isFirefox","firefoxVersion","_invokeAll","ext","_markDefs","beforeRoot","getDependencies","scenes","afterRoot","skinDefs","skins","meshDefs","skinLength","skin","updateMappings","original","mappings","loadScene","_invokeOne","loadNode","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","bufferIndex","bufferDef","bufferViewDef","accessorIndex","sparse","pendingBufferViews","elementBytes","itemBytes","ibSlice","ibCacheKey","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setX","setY","setZ","setW","sourceIndex","sourceDef","sampler","loadImageSource","samplers","webkitURL","sourceURI","isObjectURL","mapName","mapDef","gltfReference","extendTexture","useDerivativeTangents","useVertexColors","useFlatShading","pointsMaterial","lineMaterial","materialType","kmuExtension","getMaterialType","extendParams","metallicFactor","roughnessFactor","metallicRoughnessTexture","extendMaterialParams","alphaMode","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","originalName","sanitizedName","sanitizeNodeName","createDracoPrimitive","decodePrimitive","addPrimitiveAttributes","geometryPromise","meshIndex","loadGeometries","normalizeSkinWeights","cameraIndex","cameraDef","yfov","znear","zfar","xmag","ymag","skinDef","_loadNodeShallow","inverseBindMatrices","jointNodes","jointNode","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","inputAccessors","outputAccessors","targets","inputAccessor","outputAccessor","targetName","outputArray","scaled","nodePending","childPending","childrenDef","skeletonPending","meshPromise","createNodeAttachment","sceneIndex","sceneDef","nodeIds","reducedAssociations","reduceAssociations","assignAttributeAccessor","gltfAttributeName","boxScale","maxDisplacement","expandByVector","computeBounds","hasMorphNormal","hasMorphColor","pendingPositionAccessors","pendingNormalAccessors","pendingColorAccessors","pendingAccessor","morphPositions","addMorphTargets","WrapperContext","spherical2cartesian","altitude","earthRadius","returnArray","rho","StyleSheet","_insertTag","before","tags","insertionPoint","prepend","isSpeedy","speedy","ctr","_proto","insert","rule","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","charCodeAt","$","memoize","parsed","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","ssrStyles","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","registerStyles","isStringTag","insertStyles","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","handleInterpolation","mergedProps","__emotion_styles","anim","_key","interpolated","createStringFromObject","previousCursor","labelPattern","stringMode","strings","raw","identifierName","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","ThemeContext","typePropName","createEmotionProps","Emotion$1","cssProp","css","WrappedComponent","argsLength","createElementArgArray","sceneCamera","setSceneCamera","newCamera","Debugger","_useContext","scrollPosition","___EmotionJSX","activeStep","toFixed","onChange","getWindowDimensions","_window$visualViewpor","visualViewport","ScrollStep","cards","stepClass","annotationMode","data-step","card","_objectWithoutProperties","_excluded","cardStyle","_toConsumableArray","ReactHTMLParser","par","post_media_text","ScrollWrapper","_ref4","_ref4$annotationMode","setAnnotationMode","waypoints","_ref4$debug","toggleLabel","_ref4$movementSection","movementSectionProportion","_ref4$hidden","_ref4$prod","_ref4$progress","_ref4$scrollSectionCl","scrollSectionClassName","_useState","trueStepProgress","sectionActive","_useState2","setScrollPosition","_useState3","_useState4","_useState5","_useState6","setCameraPosition","_useState7","_useState8","showDebugMode","setShowDebugMode","_useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","useWindowDimensions","scroller","annotationsRef","annotationsHeight","mobileBreakpoint","mobile_breakpoint","isMobile","tablet_breakpoint","totalSteps","progressEnabled","scrollama","onStepProgress","sectionedProgress","onStepEnter","onStepExit","_ref3","initScroller","newAnnotationsHeight","scrollTo","screenWidth","screenHeight","_ref5","section_text","ImageSet","sources","caption","additionalClasses","subtitle","note","classnames","small","large","medium","Credits","_ref$hidden","data-o-grid-colspan","_ref$loadText","loadText","_ref$dynamicEllipsis","dynamicEllipsis","useFBO","_settings","_settings$samples","targetSettings","THREE","_objectSpread","_ref$resolution","_ref$frames","makeDefault","cameraRef","groupRef","fbo","oldEnvMap","functional","oldCam","mergeRefs","Preload","dCamera","dScene","invisible","cubeRenderTarget","AdaptiveDpr","pixelated","AdaptiveEvents","useAnnounceStore","a11yScreenReader","stylesHiddenButScreenreadable","borderRadius","userSelect","WebkitUserSelect","WebkitTouchCallout","margin","A11ySectionContext","calculatePosition","objectPos","project","Html","_portal$current","_ref$eps","eps","portal","_ref$zIndexRange","zIndexRange","oldZoom","oldPosition","cssText","cameraPos","deltaCamObj","camDir","getWorldDirection","isObjectBehindCamera","dist","objectZIndex","A11yContext","hover","pressed","activationMsg","deactivationMsg","_ref$showAltText","showAltText","actionCall","focusCall","_ref$debug","a11yElStyle","_ref$startPressed","startPressed","_ref$tag","dragThreshold","constHiddenButScreenreadable","focused","a11yState","setA11yState","overHtml","overMesh","componentIsMounted","handleOnPointerOver","handleOnPointerOut","handleBtnClick","handleToggleBtnClick","HtmlAccessibleElement","disabledBtnAttr","onFocus","onBlur","tabIndexP","AltText","maxWidth","padding","A11yUserPreferencesContext","a11yPrefersState","prefersReducedMotion","prefersDarkScheme","setA11yPrefersState","offScreenStyle","border","whiteSpace","mouseClickListener","_window$document$acti","blur","gap","gridGap","columnGap","gridColumnGap","rowGap","gridRowGap","inset","insetBlock","insetBlockEnd","insetBlockStart","insetInline","insetInlineEnd","insetInlineStart","marginRight","marginLeft","marginBlock","marginBlockEnd","marginBlockStart","marginInline","marginInlineEnd","marginInlineStart","paddingRight","paddingBottom","paddingBlock","paddingBlockEnd","paddingBlockStart","paddingInline","paddingInlineEnd","paddingInlineStart","scrollMargin","scrollMarginTop","scrollMarginRight","scrollMarginBottom","scrollMarginLeft","scrollMarginX","scrollMarginY","scrollMarginBlock","scrollMarginBlockEnd","scrollMarginBlockStart","scrollMarginInline","scrollMarginInlineEnd","scrollMarginInlineStart","scrollPadding","scrollPaddingTop","scrollPaddingRight","scrollPaddingBottom","scrollPaddingLeft","scrollPaddingX","scrollPaddingY","scrollPaddingBlock","scrollPaddingBlockEnd","scrollPaddingBlockStart","scrollPaddingInline","scrollPaddingInlineEnd","scrollPaddingInlineStart","backgroundColor","backgroundImage","borderImage","borderBlock","borderBlockEnd","borderBlockStart","borderBottomColor","borderColor","borderInline","borderInlineEnd","borderInlineStart","borderLeft","borderLeftColor","borderRight","borderRightColor","borderTopColor","caretColor","columnRuleColor","outline","outlineColor","textDecorationColor","minBlockSize","maxBlockSize","inlineSize","minInlineSize","maxInlineSize","minWidth","minHeight","maxHeight","flexBasis","gridTemplateColumns","gridTemplateRows","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","boxShadow","textShadow","appearance","WebkitAppearance","backfaceVisibility","WebkitBackfaceVisibility","backdropFilter","WebkitBackdropFilter","backgroundClip","WebkitBackgroundClip","boxDecorationBreak","WebkitBoxDecorationBreak","WebkitClipPath","hyphens","WebkitHyphens","maskImage","WebkitMaskImage","maskSize","WebkitMaskSize","MozTabSize","textSizeAdjust","WebkitTextSizeAdjust","minSize","themeMap","animationDelay","animationDuration","backgroundSize","borderBlockEndWidth","borderBlockStartWidth","borderBlockWidth","borderEndEndRadius","borderEndStartRadius","borderInlineEndWidth","borderInlineStartWidth","borderInlineWidth","borderSpacing","borderStartEndRadius","borderStartStartRadius","columnRule","columnRuleWidth","columnWidth","containIntrinsicSize","gridAutoColumns","gridAutoRows","offsetDistance","offsetRotate","outlineOffset","outlineWidth","overflowClipMargin","perspective","shapeMargin","textDecorationThickness","textIndent","textUnderlineOffset","transitionDelay","transitionDuration","verticalAlign","deleteRule","import","composers","variants","compoundVariants","defaultVariants","styled","resonevar","onevar","allvar","inline","deferredInjector","themed","computedValue","globalCss","keyframes","createTheme","getCssText","_excluded$1","ActivityLogIcon","_ref$color","_excluded$o","BarChartIcon","_excluded$H","ButtonIcon","_excluded$1w","CubeIcon","_excluded$1H","DotIcon","_excluded$1W","DropdownMenuIcon","_excluded$25","EyeNoneIcon","_excluded$26","EyeOpenIcon","_excluded$2C","ImageIcon","_excluded$2H","LapTimerIcon","_excluded$2J","LayersIcon","_excluded$2Q","LightningBoltIcon","_excluded$34","MarginIcon","_excluded$37","MinusIcon","_excluded$3m","PauseIcon","_excluded$3H","RocketIcon","_excluded$3L","RulerHorizontalIcon","_excluded$4q","TextAlignJustifyIcon","_excluded$4H","TriangleDownIcon","_excluded$4K","TriangleUpIcon","_excluded$4R","VercelLogoIcon","SDFGenerator","pointOnCubicBezier","y3","pointOut","forEachPathCommand","pathString","commandCallback","firstX","firstY","prevX","prevY","segmentRE","pathToLineSegments","segmentCallback","curvePoints","tempPoint","command","startX","startY","endX","endY","ctrl1X","ctrl1Y","ctrl2X","ctrl2Y","prevCurveX","prevCurveY","prevCurveX$1","prevCurveY$1","i$1","viewportQuadVertex","glContextParams","withWebGLContext","glOrCanvas","wrapper","framebufferStack","handleContextLoss","withProgram","frag","VERTEX_SHADER","FRAGMENT_SHADER","transaction","setUniform","uniformLoc","instancingDivisor","buf","ARRAY_BUFFER","vertexAttribDivisor","vertexAttribDivisorANGLE","withTexture","TEXTURE0","TEXTURE_2D","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","withTextureFramebuffer","FRAMEBUFFER","COLOR_ATTACHMENT0","renderImageData","tex","texUnit","RGBA","STATIC_DRAW","BLEND","webglUtils","resizeWebGLCanvasWithoutClearing","newWidth","newHeight","generate$2","sdfWidth","sdfHeight","sdfExponent","textureData","viewBoxWidth","viewBoxHeight","sdfX","sdfY","signedDist","findNearestSignedDistance","closestDistSq","closestDist","seg","distSq","absSquareDistanceToLineSegment","winding","isPointInPoly","generateIntoCanvas$2","generateIntoFramebuffer$1","rgbaData","lineX0","lineY0","lineX1","lineY1","ldx","ldy","javascript","generate","generateIntoCanvas","generateIntoFramebuffer","viewportUVs","implicitContext","isTestingSupport","NULL_OBJECT","supportByCanvas","validateSupport","generate$1","generateIntoCanvas$1","lineSegmentCoords","intermediateTexture","intermediateTextureUnit","_lastWidth","_lastHeight","instancingExtension","blendMinMaxExtension","DYNAMIC_DRAW","ONE","FUNC_ADD","MAX","COLOR_BUFFER_BIT","drawArraysInstanced","drawArraysInstancedANGLE","isContextLost","failReason","expectedResult","testResult","webgl","bidi","DATA","TYPES","TYPES_TO_NAMES","ISOLATE_INIT_TYPES","LRI","RLI","FSI","STRONG_TYPES","AL","NEUTRAL_ISOLATE_TYPES","WS","ON","PDI","BN_LIKE_TYPES","BN","RLE","LRE","RLO","LRO","PDF","TRAILING_TYPES","getBidiCharType","lastCode","skip","parseData","codePointAt","openToClose","closeToOpen","canonical","data$1","parseCharacterMap","encodedString","includeReverse","prevPair","reverseMap","visit","fromCodePoint","parse$1","openingToClosingBracket","closingToOpeningBracket","getCanonicalBracket","TYPE_L","TYPE_R","TYPE_EN","EN","TYPE_ES","ES","TYPE_ET","ET","TYPE_AN","AN","TYPE_CS","CS","TYPE_B","TYPE_S","TYPE_ON","TYPE_BN","TYPE_NSM","NSM","TYPE_AL","TYPE_LRO","TYPE_RLO","TYPE_LRE","TYPE_RLE","TYPE_PDF","TYPE_LRI","TYPE_RLI","TYPE_FSI","TYPE_PDI","mirrorMap","getMirroredCharacter","getReorderSegments","embeddingLevelsResult","strLen","paragraphs","paragraph","lineStart","lineEnd","lineLevels","maxLevel","minOddLevel","lvl","i$2","segStart","getReorderedIndices","embedLevelsResult","getBidiCharTypeName","getEmbeddingLevels","baseDirection","charTypes","charTypeCounts","changeCharType","embedLevels","isolationPairs","determineAutoEmbedLevel","FORMATTING_TYPES","nextEven","nextOdd","paraIdx","statusStack","_level","_override","_isolate","stackTop","overflowIsolateCount","overflowEmbeddingCount","validIsolateCount","charType","level$1","level$2","_isolInitIndex","isolInitIndex","levelRuns","currentRun","i$3","charType$1","isIsolInit","isPDI","_endsWithIsolInit","_startsWithPDI","isolatingRunSeqs","runIdx","seqRuns","pdiIndex","i$4","seqIndices","i$5","run$1","firstLevel","prevLevel","i$6","lastLevel","nextLevel","i$7","_seqIndices","_sosType","_eosType","seqIdx","seqIndices$1","sosType","eosType","i$8","prevType","si$1","i$9","sj$1","prevCharType","si$2","i$10","si$3","i$11","prevType$1","nextType","sj$2","sj$3","si$4","i$12","sj$4","sj$5","si$5","i$13","sj$6","sj$7","si$6","prevStrongType","i$14","R_TYPES_FOR_N_STEPS","STRONG_TYPES_FOR_N_STEPS","bracketPairs","openerStack","si$7","oppositeBracket","seqIndex","stackIdx","stackChar","pairIdx","openSeqIdx","closeSeqIdx","foundStrongType","useStrongType","si$8","i$15","lr","getEmbedDirection","si$9","i$16","lr$1","si$10","si$11","si$12","niRunStart","niRunEnd","prevType$2","si2","nextType$1","si2$1","sj$8","i$17","level$3","type$1","j$1","isFSI","pdi","indexOfMatchingPDI","isolateStart","isolationLevel","getMirroredCharactersMap","embeddingLevels","mirror","getReorderedString","chars","charIndex","voidMainRegExp","expandShaderIncludes","epoch","CONSTRUCTOR_CACHE","SHADER_UPGRADE_CACHE","materialInstanceId","createDerivedMaterial","baseMaterial","optionsKey","optionsHash","optionsJsonReplacer","optionsHashesToIds","_idCtr","getKeyForOptions","ctorsByDerivation","privateBeforeCompileProp","shaderInfo","upgradedShaders","upgraded","vertexDefs","vertexMainIntro","vertexMainOutro","vertexTransform","fragmentDefs","fragmentMainIntro","fragmentMainOutro","fragmentColorTransform","customRewriter","timeUniform","postChunks","match1","fullStr","injectIntoShaderCode","upgradeShaders","DerivedMaterial","derive","chained","derived","isDerivedMaterial","newBase","IS_DEPTH_MATERIAL","getDistanceMaterial","distanceMaterial","IS_DISTANCE_MATERIAL","shaderCode","intro","outro","mainThreadGenerator","warned","timer","nextChunk","generateSDF_GL","timing","threads","callNum","generateSDF_JS_Worker","thread","workerModule","_createSDFGenerator","requests","idleTimer","_bin","readASCII","readUshort","readUint","_readFont","readFixed","_tabOffset","readF2dot14","readShort","readInt","_view","getInt32","readInt8","getInt8","getInt16","getUint16","readUshorts","readUint64","readUnicode","_tdec","readUTF8","readBytes","readASCIIArray","_dataView","_lctf","scriptList","readScriptList","featureList","readFeatureList","lookupList","readLookupList","readLookupTable","tabs","ltype","flag","numOfOnes","readClassDef","getInterval","readCoverage","fmt","tab","coverageIndex","readFeatureTable","featureParams","readScriptTable","readLangSysTable","reqFeature","features","CFF","readIndex","readDict","readSubrs","CharStrings","ROS","FDArray","_readFDict","FDSelect","Encoding","readEncoding","readCharset","Private","Subrs","Bias","tableSE","glyphByUnicode","glyphBySE","getCharString","readCharString","cmap","tables","parse0","parse4","parse6","parse12","searchRange","entrySelector","rangeShift","endCount","startCount","idDelta","idRangeOffset","glyphIdArray","firstCode","glyf","maxp","numGlyphs","_parseGlyf","loca","noc","xMin","yMin","xMax","yMax","endPts","instructions","xs","ys","glyphIndex","instr","GPOS","subt","coverage","readValueRecord","pairsets","gid2","val1","val2","classDef1","classDef2","GSUB","newg","vals","readLigatureSet","cDef","scset","readSubClassSet","backCvg","inptCvg","ahedCvg","lookupRec","readSubstLookupRecords","readSubClassRule","substLookupRecords","readChainSubClassSet","readChainSubClassRule","subst","readLigature","nglyph","fontRevision","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","hhea","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfHMetrics","hmtx","aWidth","lsBearing","kern","parseV1","glyph1","readFormat0","glyph2","maxPoints","maxContours","maxCompositePoints","maxCompositeContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","_lang","postScriptName","version0","version1","version2","version5","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","achVendID","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefault","usBreak","usMaxContext","usLowerOpticalPointSize","usUpperOpticalPointSize","post","italicAngle","codeToGlyph","p0e4","p3e1","p1e0","p0e3","glyphToPath","cmds","crds","SVG","toPath","nStems","haveWidth","defaultWidthX","_drawCFF","_drawGlyf","_simpleGlyph","_compoGlyph","qcurveTo","closePath","_getGlyphClass","getPairAdjustment","_applySubs","_glsCovered","glyphsToPath","curveTo","nominalWidthX","Typr","captureStackTrace","rr","er","nr","tr","convert_streams","setUint16","setUint32","signature","flavor","numTables","reserved","totalSfntSize","majorVersion","minorVersion","metaOffset","metaLength","metaOrigLength","privOffset","privLength","compLength","origLength","origChecksum","outOffset","woff2otf","cmdArgLengths","joiningTypeRawData","joiningTypeMap","getCharJoiningType","formsToFeatures","detectJoiningForms","joiningForms","prevJoiningType","prevForm","joiningType","firstNum","wrapFontObj","typrFont","glyphMap","os2","fontObj","glyphX","fontScale","glyphIndices","font","glyphIds","gsub","supportedFeatures","usedLookups","feature","isJoiningFeature","stringToGlyphs","prevGlyphIndex","glyphObj","crdsIdx","numArgs","advanceWidth","pathCommandCount","peek","typrFactory","woff2otfFactory","parserFactory","CONFIG","defaultFontURL","sdfGlyphSize","sdfMargin","tempColor","hasRequested","now$1","atlases","getTextRenderInfo","totalStart","linkEl","toAbsoluteURL","colorRanges","glyphsPerRow","atlas","glyphCount","sdfCanvas","sdfTexture","contextLost","glyphsByFont","glyph","generateGlyphSDF","safariPre15Workaround","initContextLossHandling","fontGlyphs","typesetInWorker","glyphPositions","timings","neededSDFs","glyphBounds","fontSizeMult","boundsIdx","positionsIdx","quadsStart","glyphId","glyphInfo","pathBounds","glyphData","fontUnitsMargin","atlasIndex","sdfViewBox","posX","posY","quads","sdfStart","sdf","currentHeight","neededRows","neededHeight","gpuAccelerateSDF","sdfTotal","glyphAtlasIndices","glyphColors","caretPositions","caretHeight","chunkedBounds","topBaseline","blockBounds","visibleBounds","_warm","useGPU","maxDist","squareIndex","useWebGL","generateSDF","toObj","fromObj","typesetterWorkerModule","fontParser","fonts","DEFAULT_IGNORABLE_CHARS","BREAK_AFTER_CHARS","loadFont","fontUrl","tryLoad","doLoadFont","typeset","textAlign","overflowWrap","anchorX","anchorY","includeCaretPositions","chunkedBoundsSize","metricsOnly","mainStart","fontLoad","typesetting","hasMaxWidth","maxLineWidth","renderableGlyphCount","canWrap","typesetStart","halfLeading","caretBottomOffset","lineXOffset","currentLine","TextLine","forEachGlyph","glyphWidth","curLineCount","nextLine","canBreakAfter","glyphAt","splitAt","adjustX","isSoftWrapped","fly","anchorXOffset","anchorYOffset","parsePercent","bidiLevelsResult","lineYOffset","currentColor","renderableGlyphIndex","prevCharIndex","colorCharIndex","lineIndex","lineGlyphCount","trailingWhitespaceCount","justifyAdjust","whitespaceCount","justifyOffset","flips","startInLine","endInLine","setGlyphObj","rtl","mirrored","caretLeft","caretRight","ligCount","fillLigatureCaretPositions","glyphY","visX0","visY0","visX1","visY1","rect","chunkRect","pct","NaN","ligStartIndex","ligStartX","ligEndX","ligY","guessedAdvanceX","textLineProps","flyweight","newLine","measure","createTypesetter","bidiFactory","typesetter","templateGeometries","curveRadius","verts","setDrawRange","_detail","geom","front","back","frontAttrs","backAttrs","combined","vertCount","getTemplateGeometry","_curveRadius","_updateBounds","updateBufferAttr","_blockBounds","_chunkedBounds","halfPi","absR","leftAngle","rightAngle","getBoundingSphere","clipRect","attrName","newArray","defaultMaterial","tempMat4","tempVec3a","tempVec3b","tempArray","getFlatRaycastMesh","getCurvedRaycastMesh","syncStartEvent","syncCompleteEvent","SYNCABLE_PROPS","COPYABLE_PROPS","outlineOpacity","outlineBlur","outlineOffsetX","outlineOffsetY","strokeColor","depthOffset","glyphGeometryDetail","debugSDF","_needsSync","_isSyncing","_queuedSyncs","textRenderInfo","_textRenderInfo","updateGlyphs","queued","sync","isTroikaTextMaterial","_prepareForRender","_hadOwnSide","setSide","_actualSide","derivedMaterial","_derivedMaterial","_baseMaterial","_defaultMaterial","textMaterial","uTroikaSDFTexture","uTroikaSDFTextureSize","uTroikaSDFGlyphSize","uTroikaSDFExponent","uTroikaTotalBounds","uTroikaClipRect","uTroikaDistanceOffset","uTroikaOutlineOpacity","uTroikaFillOpacity","uTroikaPositionOffset","uTroikaCurveRadius","uTroikaBlurRadius","uTroikaStrokeWidth","uTroikaStrokeColor","uTroikaStrokeOpacity","uTroikaOrient","uTroikaUseGlyphColors","uTroikaSDFDebug","uDiffuseRE","createTextDerivedMaterial","onDispose","outlineMaterial","_outlineMtl","isTextOutlineMaterial","isOutline","textInfo","distanceOffset","blurRadius","_parsePercent","applyClipRect","colorObj","_input","rotMat","hSign","hAxis","vSign","vAxis","localPositionToTextCoords","worldToLocal","raycastMesh","privateKey","_ref$sdfGlyphSize","_ref$anchorX","_ref$anchorY","_ref$fontSize","characters","onSync","troikaMesh","Text$1","_React$useMemo2","preloadFont","enumerableOnly","symbols","_objectSpread2","overLimitFps","fpsLimit","isOverLimit","average","finished","overClock","queryHasResult","queryCreated","memAccums","gpuAccums","activeAccums","logsAccums","gpu","cpu","fpsFixed","fpsChart","gpuChart","cpuChart","memChart","paramLogger","glFinish","chartLogger","chartLen","maxMemory","chartHz","startCpuProfiling","lastCalculateFixed","chartFrame","gpuTimeProcess","chartTime","activeQueries","circularId","detected","frameId","rafId","idleCbId","checkQueryId","currentCpu","currentMem","paramFrame","paramTime","GLPerf","initGpu","is120hz","elapsed","timeRemaining","usePerfStore","overclockingFps","jsHeapSizeLimit","frameCount","usedJSHeapSize","cpuMeasure","requestIdleCallback","timespan","hz","memS","cpuS","gpuS","disjoint","available","getQueryParameter","QUERY_RESULT_AVAILABLE","GPU_DISJOINT_EXT","QUERY_RESULT","ms","_active","createQuery","beginQuery","TIME_ELAPSED_EXT","getQuery","CURRENT_QUERY","endQuery","startGpu","updateAccums","endGpu","nameId","addUI","updateMatrixWorldTemp","updateWorldMatrixTemp","updateMatrixTemp","matriceWorldCount","matriceCount","addMuiPerfID","currentObjectWithMaterials","muiPerf","getMUIIndex","muid","triggerProgramsUpdate","customData","chart","objectWithMaterials","sceneLength","Headless","trackCPU","deepAnalyze","matrixUpdate","PerfLib","trackGPU","logger","totalTime","callbacksAfter","_callbacks$get","_callbacksAfter$get","effectSub","afterEffectSub","nextFrame","nextFps","_gl$info","_gl$info$programs","isTroika","cacheKeySplited","muiPerfTracker","findIndex","isUUID","drawCounts","expand","_pkey","countInstanceRatio","mostDrawCalls","countGeoDrawCalls","cancelIdleCallback","unsub","PerfS","PerfSmallI","PerfI","justifyContent","fontVariantNumeric","svg","PerfB","PerfIContainer","ProgramHeader","Graph","Graphpc","alignItems","float","ToggleVisible","ProgramGeo","ProgramTitle","textOverflow","ContainerScroll","ProgramsContainer","ProgramsULHeader","ProgramsUL","ProgramConsole","ToggleContainer","ProgramsGeoLi","TextHighHZ","isPerf","colorBlind","isMemory","isShadersInfo","metric","_offsetY","hasInstance","fpsRef","fpsInstanceRef","colorsGraph","infosInstance","infoInstance","TextsHighHZ","minimal","custom","ChartCurve","_chart","fpsMatRef","gpuRef","cpuRef","dummyVec3","updatePoints","ChartUI","showGraph","_showGraph","matrixWorldAutoUpdate","Renderer","rootRef","addTextureUniforms","currentSrc","encodingType","repeatType","UniformsGL","setTexNumber","TexCount","_err","_material$uniforms$un","DynamicDrawCallInfo","getVal","ProgramUI","showProgram","setShowProgram","toggleProgram","texNumber","ProgramsUI","DynamicUIPerf","DynamicUI","PerfUI","openByDefault","PerfThree","InfoUI","ToggleEl","tabStore","show","TabContainers","Gui","perfContainerRef","Perf","headless","_headless","_colorBlind","_overClock","_trackCPU","_deepAnalyze","_openByDefault","_matrixUpdate","_minimal","useHelper","object3D","helperConstructor","_len","helper","currentHelper","_construct","_helper$current","moduloWrapAround","capacity","UP","BOTTOM","TWO","target0","position0","zoom0","getPolarAngle","spherical","getAzimuthalAngle","setPolarAngle","currentPhi","phiDist","sphericalDelta","setAzimuthalAngle","currentTheta","thetaDist","getDistance","listenToKeyEvents","onKeyDown","_domElementKeyEvents","saveState","changeEvent","STATE","NONE","quat","setFromUnitVectors","quatInverse","lastPosition","lastQuaternion","twoPI","setFromVector3","autoRotate","rotateLeft","autoRotateSpeed","enableDamping","dampingFactor","minAzimuthAngle","maxAzimuthAngle","minPolarAngle","maxPolarAngle","makeSafe","minDistance","panOffset","setFromSpherical","zoomChanged","EPS","touchAction","onMouseWheel","_scope$domElement","_scope$domElement2","_scope$domElement3","_scope$domElement4","_scope$domElement5","_scope$domElement6","startEvent","endEvent","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","pointers","pointerPositions","getZoomScale","zoomSpeed","reverseOrbit","rotateUp","panLeft","objectMatrix","panUp","screenSpacePanning","pan","targetDistance","enablePan","dollyOut","dollyScale","minZoom","maxZoom","enableZoom","dollyIn","handleMouseDownRotate","handleMouseDownPan","handleTouchStartRotate","handleTouchStartPan","handleTouchStartDolly","handleTouchMoveRotate","getSecondPointerPosition","rotateSpeed","handleTouchMovePan","panSpeed","handleTouchMoveDolly","_scope$domElement7","_scope$domElement8","addPointer","trackPointer","enableRotate","onTouchStart","mouseAction","mouseButtons","handleMouseDownDolly","onMouseDown","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","onTouchMove","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","onMouseMove","_scope$domElement9","_scope$domElement10","_scope$domElement11","removePointer","handleMouseWheel","keyPanSpeed","handleKeyDown","OrbitControls","_ref$enableDamping","onEnd","restProps","defaultCamera","explCamera","explDomElement","OrbitControls$1","onStartCb","onEndCb","old","effect","El","fref","Box","b3","b3size","Billboard","_ref$follow","follow","_ref$lockX","lockX","_ref$lockY","lockY","_ref$lockZ","lockZ","localRef","prevRotation","getWorldQuaternion","Model","modelRefs","_ref2$targetRadius","targetRadius","model","fixedRotationVal","cutTransition","_ref2$rotationSpeedMu","rotationSpeedMultiplier","fontURL","_ref2$labels","labels","_ref2$includeLabels","includeLabels","_ref2$setRenderFinish","setRenderFinished","modelRef","labelsetRef","findLargestDimension","currentY","halfBackRotation","newAngle","RenderedSceneChildren","_ref3$includeLabels","render_order","label_offsets","getLabelPosition","prevProps","nextProps","_prevProps$model","_prevProps$model$scen","_nextProps$model","_nextProps$model$scen","sameModel","labelsAlreadySet","sameScalar","sameFontURL","_prevProps$model2","_prevProps$model2$sce","_nextProps$model2","_nextProps$model2$sce","sameRotationVal","sameCutTransition","getCameraStep","cameraPositions","mobile","processCameraPoint","_camera$position","_spherical2cartesian","fromEntries","CameraContext","lastScreenWidth","lastActiveStep","processedData","static","mobileData","processCameraPositions","currentPosition","currentRotation","lastStep","nextStep","easing","speedAdjustment","speed_adjustment","rotationSpeedAdjustment","rotation_speed_adjustment","adjustedProgress","adjustedRotationProgress","isLineSegmentsGeometry","instanceStart","instanceEnd","lineSegments","instanceBuffer","instanceColorBuffer","setPositions","fromWireframeGeometry","worldUnits","dashOffset","dashScale","isLineMaterial","WORLD_UNITS","USE_DASH","USE_ALPHA_TO_COVERAGE","_start4","_end4","_ssOrigin","_ssOrigin3","_mvMatrix","_line","_closestPoint","_clipToWorldVector","_instanceStart","_instanceEnd","_lineWidth","getWorldSpaceHalfWidth","isLineSegments2","instanceDistanceBuffer","Line2","sphereMargin","boxMargin","pointOnLine","raycastWorldUnits","deltaDist","zPos","isInClipSpace","isInside","raycastScreenSpace","isLineGeometry","isLine2","rest","line2","LineSegments2","LineMaterial","lineGeom","LineSegmentsGeometry","LineGeometry","pValues","cValues","computeLineDistances","LabelOverlay","_ref$labelData","labelData","_ref$isMobile","_ref$startingStep","startingStep","labelGroup","billboard","desktop","visibleIndicies","visible_indices","_label$maxWidth","_label$fontSize","_label$textAlign","currentOpacity","_line$dashed","_line$width","_line$color","ModelLabelGroup","_ref$carouselOffsetDe","carouselOffsetDegrees","_ref$carouselRadius","carouselRadius","_ref$groupVisible","groupVisible","_ref$labelsVisible","labelsVisible","pivotRef","A11y","target_radius","ThreeScene","labelFont","_ref$setRenderFinishe","setLastActiveStep","models","aircraftModels","firstPointLight","secondPointLight","planeRef","carouselGroup","lightsData","_planeRef$current","_planeRef$current$chi","_planeRef$current$chi2","plane_opacity","planeOpacity","currentPlaneOpacity","background_plane","currentStep","lastCarouselRotation","carousel_rotation","currentCarouselRotation","progressCarouselRotation","rotationOffset","shadow-mapSize-height","shadow-mapSize-width","shadow-radius","shadow-camera-near","shadow-camera-far","shadow-bias","AircraftSVG","aircraft","_ref$progress","gradientRotation","Breadcrumbs","_ref2$totalStepProgre","totalStepProgress","firstStepArray","_ref2$isMobile","ThreeCanvas","_useWrapperContext","_useWrapperContext$sh","selectedWrapperContext","Canvas","ShadowMap","A11yAnnouncer","VideoProgress","_ref$loaded","onPauseClick","_ref$isVideoPaused","isVideoPaused","_ref$placeVideoProgre","placeVideoProgressAtBottom","ariaLabel","setAriaLabel","aria-label","ringHeight","videoProgress","calculateProgress","BackgroundMedia","mediaRef","_media$image","_media$image2","_media$image3","_media$image$object_p","_media$image$object_p2","videoURLBase","_ref$active","_ref$controls","_ref$caption","showProgress","_ref$credit","credit","isPrerendering","imageRef","videoRef","isVideoLoaded","setIsVideoLoaded","setVideoProgress","setIsVideoPaused","pause","objectPosition","object_position","objectFit","object_fit","webkit-playsinline","x-webkit-airplay","onLoadStart","onLoadedData","onPlay","Intro","headline","topic","byline","showToggle","buildTime","toISOString","publishedDate","VideoTopper","_ref$isPrerendering","introVideoMobile","introVideo","SectionTitle","ImageGallery","imageKey","image_key","FlourishChart","chartId","story","_eventData$src","_window","loadModel","_asyncToGenerator","_callee","complexModelAdjustments","allModels","App","setModels","renderFinished","_callee2","_context2","DRACOLoader","setDecoderPath","setDecoderConfig","GLTFLoader","setDRACOLoader","importedModel","loadedGltf","_callee3","_context3","t3","t4","t5","t6","t7","t8","fontURLs","_ref5$prod","regular","protocol","host","pathname","semibold","Layout","socialHeadline","tweetText","twitterHeadline","facebookHeadline","contendersSVG","modelWaypoints","technicalChallengesSVG","regulatoryLandscapeSVG","safetySVG","TakeoffGraphicMobile","TakeoffGraphicTablet","TakeoffGraphicDesktop","operationsAndCostSVG","importantYearSVG","require","history","scrollRestoration","onbeforeunload","getElementById","coralEventMap","oComments","oTracking","unCapitalise","capitalise","copyContentFromElement","outerHTML","copyContentFromUrl","optionsFromKey","opts","dashIndex","subKey","getOffsetRect","eClientRect","docElem","clientLeft","overlays","getOptionsFromTrigger","trigger","triggerClickHandler","overlay","isVisible","filterFocusableElements","elementVisible","elementLabelVisible","elementIsUncheckedRadio","focusTrap","overlayFocusableElements","lastElement","heading","modal","shaded","checkOptions","noOptError","parentnode","delegates","fullscreen","originalOverflow","pushState","popstateHandler","loadContent","wrapperEl","zindex","headingId","preventclosing","nofocus","visuallyhidetitle","tooltip","allFocusableNodes","closeHandler","nested","resizeListenerHandler","resizeListener","closeOnEscapePressHandler","closeOnEscapePress","closeOnNewLayerHandler","closeOnNewLayer","customclose","closeOnExternalClickHandler","closeOnExternalClick","realign","overlay_id","_trapFocus","respondToWindow","dimension","_align","edge","borderHeight","triggers","overlaysArray","validation","invalidCharacters","matchingCharacters","uniqueMatchingCharacters","findInvalidCharacters","isUnique","apiError","displayNameForm","innerText","searchParams","append","useStagingEnvironment","userHasValidSession","streamEl","eventSeenTimes","renderAndAuthenticate","renderComments","authenticateUser","login","authenticationToken","renderSignedInMessage","auth","cacheBuster","rootUrl","scriptElement","Coral","createStreamEmbed","storyURL","storyID","rootURL","autoRender","bodyClassName","onAny","publishEvent","stagingWarning","Event","purgeCacheAfterCompletion","onOverlayReady","onOverlayClosed","displayNamePrompt","mappedEvent","delayInMilliseconds","oCommentsEventOptions","oCommentsEvent","disableOTracking","oTrackingEventOptions","coral","isWithheld","oTrackingEvent","editButtonId","signedInMessage","oldSignedInMessage","Count","countEl","fetchCount","countLabel","getCountLabel","useStaging","commentCount","rootEl","getDataAttributes","isCount","renderCount","shortKey","m2","headerEl","opening","expanded","menu","hide","menus","addEvents","handleCloseEvents","allFocusable","handleKeydown","handleClick","handleMouseenter","handleMouseleave","handleFocus","handleTab","firstEl","lastEl","removeEvents","toggleTabbing","drawerEl","submenus","submenu","addSubmenuToggles","handleClose","openingControl","toggleCallback","firstFocusable","control","drawerToggle","addDrawerToggles","subnav","wrapperWidth","scrollable","remaining","currentSelection","currentSelectionEnd","checkCurrentPosition","viewportOffset","lastScrollDepth","lastAnimationFrame","lastStickyState","handleFrame","scrollDepth","isScrollingDown","scrollStart","debouncedScrollEnd","mega","drawer","sticky","COLLAPSIBLE_BREAKPOINTS","footerEl","lastBreakpoint","shouldCollapse","_toggles","ftDateFormatWarning","printers","printer","_renderDateFor","dateEls","formattedDate","oShare","openWindows","dispatchCustomEvent","actionEl","closest","shareLocation","oShareLocation","opener","share","shareSocial","normaliseConfig","ulElement","links","liElement","spanElement","aElement","generateDescriptiveLinkText","generateSocialUrl","rootDelegate","rootDomDelegate","titleExtra","relatedTwitterAccounts","socialNetwork","twitter","facebook","linkedin","pinterest","whatsapp","enterpriseSharing"],"mappings":"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","file":"main.763224f2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\tif (null) script.crossOrigin = null;\n \t\tdocument.head.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\t}\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentHash = \"763224f2529de875c862\";\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParents = [];\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParentsTemp = [];\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) {\n \t\t\t\t\tme.children.push(request);\n \t\t\t\t}\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\" &&\n \t\t\t\tname !== \"t\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\tfn.t = function(value, mode) {\n \t\t\tif (mode & 1) value = fn(value);\n \t\t\treturn __webpack_require__.t(value, mode & ~1);\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_selfInvalidated: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n \t\t\tinvalidate: function() {\n \t\t\t\tthis._selfInvalidated = true;\n \t\t\t\tswitch (hotStatus) {\n \t\t\t\t\tcase \"idle\":\n \t\t\t\t\t\thotUpdate = {};\n \t\t\t\t\t\thotUpdate[moduleId] = modules[moduleId];\n \t\t\t\t\t\thotSetStatus(\"ready\");\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"ready\":\n \t\t\t\t\t\thotApplyInvalidatedModule(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"prepare\":\n \t\t\t\t\tcase \"check\":\n \t\t\t\t\tcase \"dispose\":\n \t\t\t\t\tcase \"apply\":\n \t\t\t\t\t\t(hotQueuedInvalidatedModules =\n \t\t\t\t\t\t\thotQueuedInvalidatedModules || []).push(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\t// ignore requests in error states\n \t\t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash, hotQueuedInvalidatedModules;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\") {\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\t}\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(hotApplyInvalidatedModules() ? \"ready\" : \"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tfor(var chunkId in installedChunks)\n \t\t\t// eslint-disable-next-line no-lone-blocks\n \t\t\t{\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n \t\treturn hotApplyInternal(options);\n \t}\n\n \tfunction hotApplyInternal(options) {\n \t\thotApplyInvalidatedModules();\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (\n \t\t\t\t\t!module ||\n \t\t\t\t\t(module.hot._selfAccepted && !module.hot._selfInvalidated)\n \t\t\t\t)\n \t\t\t\t\tcontinue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted &&\n \t\t\t\t// removed self-accepted modules should not be required\n \t\t\t\tappliedUpdate[moduleId] !== warnUnexpectedRequire &&\n \t\t\t\t// when called invalidate self-accepting is not possible\n \t\t\t\t!installedModules[moduleId].hot._selfInvalidated\n \t\t\t) {\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\tparents: installedModules[moduleId].parents.slice(),\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\tif (hotUpdateNewHash !== undefined) {\n \t\t\thotCurrentHash = hotUpdateNewHash;\n \t\t\thotUpdateNewHash = undefined;\n \t\t}\n \t\thotUpdate = undefined;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = item.parents;\n \t\t\thotCurrentChildModule = moduleId;\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\treturn hotApplyInternal(options).then(function(list) {\n \t\t\t\toutdatedModules.forEach(function(moduleId) {\n \t\t\t\t\tif (list.indexOf(moduleId) < 0) list.push(moduleId);\n \t\t\t\t});\n \t\t\t\treturn list;\n \t\t\t});\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \tfunction hotApplyInvalidatedModules() {\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\tif (!hotUpdate) hotUpdate = {};\n \t\t\thotQueuedInvalidatedModules.forEach(hotApplyInvalidatedModule);\n \t\t\thotQueuedInvalidatedModules = undefined;\n \t\t\treturn true;\n \t\t}\n \t}\n\n \tfunction hotApplyInvalidatedModule(moduleId) {\n \t\tif (!Object.prototype.hasOwnProperty.call(hotUpdate, moduleId))\n \t\t\thotUpdate[moduleId] = modules[moduleId];\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash.substr(0, 8) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(86)(__webpack_require__.s = 86);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '140';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range <a1, a2> to range <b1, b2>\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from <low, high> interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from <low, high> interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize$1( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize$1\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nVector2.prototype.isVector2 = true;\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] > 65535 ) return true;\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\n// JavaScript RGB-to-RGB transforms, defined as\n// FN[InputColorSpace][OutputColorSpace] callback functions.\nconst FN = {\n\t[ SRGBColorSpace ]: { [ LinearSRGBColorSpace ]: SRGBToLinear },\n\t[ LinearSRGBColorSpace ]: { [ SRGBColorSpace ]: LinearToSRGB },\n};\n\nconst ColorManagement = {\n\n\tlegacyMode: true,\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.legacyMode || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( FN[ sourceColorSpace ] && FN[ sourceColorSpace ][ targetColorSpace ] !== undefined ) {\n\n\t\t\tconst fn = FN[ sourceColorSpace ][ targetColorSpace ];\n\n\t\t\tcolor.r = fn( color.r );\n\t\t\tcolor.g = fn( color.g );\n\t\t\tcolor.b = fn( color.b );\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tthrow new Error( 'Unsupported color space conversion.' );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n};\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction toComponents( source, target ) {\n\n\ttarget.r = source.r;\n\ttarget.g = source.g;\n\ttarget.b = source.b;\n\n\treturn target;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l, colorSpace );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\treturn clamp( _rgb.r * 255, 0, 255 ) << 16 ^ clamp( _rgb.g * 255, 0, 255 ) << 8 ^ clamp( _rgb.b * 255, 0, 255 ) << 0;\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tconst r = _rgb.r, g = _rgb.g, b = _rgb.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\ttarget.r = _rgb.r;\n\t\ttarget.g = _rgb.g;\n\t\ttarget.b = _rgb.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ _rgb.r } ${ _rgb.g } ${ _rgb.b })`;\n\n\t\t}\n\n\t\treturn `rgb(${( _rgb.r * 255 ) | 0},${( _rgb.g * 255 ) | 0},${( _rgb.b * 255 ) | 0})`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nSource.prototype.isSource = true;\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype.isTexture = true;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nVector4.prototype.isVector4 = true;\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nDataArrayTexture.prototype.isDataArrayTexture = true;\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nWebGLArrayRenderTarget.prototype.isWebGLArrayRenderTarget = true;\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nData3DTexture.prototype.isData3DTexture = true;\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nWebGL3DRenderTarget.prototype.isWebGL3DRenderTarget = true;\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nVector3.prototype.isVector3 = true;\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox3.prototype.isBox3 = true;\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nMatrix4.prototype.isMatrix4 = true;\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatibility if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nMaterial.prototype.isMaterial = true;\n\nMaterial.fromType = function ( /*type*/ ) {\n\n\t// TODO: Behavior added in Materials.js\n\n\treturn null;\n\n};\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\nBufferAttribute.prototype.isBufferAttribute = true;\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nBufferGeometry.prototype.isBufferGeometry = true;\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n}\n\nMesh.prototype.isMesh = true;\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nCamera.prototype.isCamera = true;\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t *   +---+---+---+\n\t *   | A | B | C |\n\t *   +---+---+---+\n\t *   | D | E | F |\n\t *   +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t *   const w = 1920;\n\t *   const h = 1080;\n\t *   const fullWidth = w * 3;\n\t *   const fullHeight = h * 2;\n\t *\n\t *   --A--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t *   --B--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t *   --C--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t *   --D--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t *   --E--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t *   --F--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nCubeTexture.prototype.isCubeTexture = true;\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nPlane.prototype.isPlane = true;\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3(    0, 1,    0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t  f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t  f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3(  1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108,  1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605,  1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\\t#endif\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nconst vertex$e = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nconst vertex$a = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinbase_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$9 = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_physical_pars_fragment>\\n#include <transmission_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <clearcoat_normal_fragment_begin>\\n\\t#include <clearcoat_normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include <transmission_fragment>\\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_toon_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nconst vertex$2 = \"#include <common>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\toutput_fragment: output_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 } // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tencoding: LinearEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tif ( morphColor.normalized === true ) denormalize( morph, morphColor );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n *  \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with  name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyArrayTexture = new DataArrayTexture();\nconst empty3dTexture = new Data3DTexture();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n//  - followed by an optional right bracket (found when array index)\n//  - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tlines2.push( ( i + 1 ) + ': ' + lines[ i ] );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 0 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\n\t\tif ( cache.has( material ) === false ) {\n\n\t\t\tcache.set( material, new Set() );\n\n\t\t}\n\n\t\treturn cache.get( material );\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\n\t\tif ( cache.has( code ) === false ) {\n\n\t\t\tconst stage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn cache.get( code );\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst vertexTextures = capabilities.vertexTextures;\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget === null ) ? renderer.outputEncoding : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding ),\n\t\t\tmap: !! material.map,\n\t\t\tmatcap: !! material.matcap,\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tdecodeVideoTexture: !! material.map && ( material.map.isVideoTexture === true ) && ( material.map.encoding === sRGBEncoding ),\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || !! material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: !! material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: !! material.depthPacking,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputEncoding );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputEncoding );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.vertexUvs );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.map )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.lightMap )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.aoMap )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.emissiveMap )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.bumpMap )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.normalMap )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.objectSpaceNormalMap )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.tangentSpaceNormalMap )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.clearcoatMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.clearcoatRoughnessMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.clearcoatNormalMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.displacementMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.specularMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.roughnessMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.metalnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.gradientMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.alphaMap )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 24 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 25 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 26 );\n\t\tif ( parameters.vertexUvs )\n\t\t\t_programLayers.enable( 27 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 28 );\n\t\tif ( parameters.uvsVertexOnly )\n\t\t\t_programLayers.enable( 29 );\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 30 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.physicallyCorrectLights )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.specularIntensityMap )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.specularColorMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.transmissionMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.thicknessMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.sheenColorMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.sheenRoughnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 23 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t     currentStencilRef !== stencilRef ||\n\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = 36064;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = 1029;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding, isVideoTexture = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 33319 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33328;\n\t\t\tif ( glType === 5131 ) internalFormat = 33327;\n\t\t\tif ( glType === 5121 ) internalFormat = 33323;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding && isVideoTexture === false ) ? 35907 : 32856;\n\t\t\tif ( glType === 32819 ) internalFormat = 32854;\n\t\t\tif ( glType === 32820 ) internalFormat = 32855;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 33327 || internalFormat === 33328 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.encoding );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataArrayTexture ) textureType = 35866;\n\t\tif ( texture.isData3DTexture ) textureType = 32879;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = 6402;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 35866, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 32879, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// Use the first texture for MRT so far\n\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[ 0 ] : renderTarget.texture;\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = 16384;\n\t\t\tconst invalidationArray = [ 36064 ];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\n\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t}\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t}\n\n\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst encoding = texture.encoding;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( encoding !== LinearEncoding ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture encoding:', encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, encoding = null ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === RGBFormat ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228' );\n\t\t\treturn 6408;\n\n\t\t}\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nArrayCamera.prototype.isArrayCamera = true;\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nGroup.prototype.isGroup = true;\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps\t= false;\n\n\t}\n\n\n}\n\nDepthTexture.prototype.isDepthTexture = true;\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33190;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: ( renderer.outputEncoding === sRGBEncoding ) ? 35907 : 32856,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 1.0 );\n\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign controllers to available inputSources\n\n\t\t\tfor ( let i = 0; i < inputSources.length; i ++ ) {\n\n\t\t\t\tconst index = inputSources[ i ].handedness === 'right' ? 1 : 0;\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ index ] );\n\n\t\t\t}\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst camera = cameras[ i ];\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = inputSources[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer.physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. specular intensity map\n\t\t// 14. specular tint map\n\t\t// 15. transmission map\n\t\t// 16. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet _alpha;\n\n\tif ( _context !== null ) {\n\n\t\t_alpha = _context.getContextAttributes().alpha;\n\n\t} else {\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false;\n\n\t}\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector2 = new Vector2();\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color ) bits |= 16384;\n\t\tif ( depth ) bits |= 256;\n\t\tif ( stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\t\tprogramCache.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tsamples: ( isWebGL2 && _antialias === true ) ? 4 : 0\n\t\t\t} );\n\n\t\t}\n\n\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t} else {\n\n\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t}\n\n\t\t//\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tif ( texture.isFramebufferTexture !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexSubImage2D( 3553, level, 0, 0, position.x, position.y, width, height );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t}\n\n}\n\nWebGLRenderer.prototype.isWebGLRenderer = true;\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nFog.prototype.isFog = true;\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nScene.prototype.isScene = true;\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSprite.prototype.isSprite = true;\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nSkinnedMesh.prototype.isSkinnedMesh = true;\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nBone.prototype.isBone = true;\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nInstancedMesh.prototype.isInstancedMesh = true;\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nLine.prototype.isLine = true;\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineSegments.prototype.isLineSegments = true;\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nLineLoop.prototype.isLineLoop = true;\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nPoints.prototype.isPoints = true;\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nVideoTexture.prototype.isVideoTexture = true;\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height, format ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.format = format;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nFramebufferTexture.prototype.isFramebufferTexture = true;\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t *   p(0) = x0, p(1) = x1\n\t *  and\n\t *   p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineCurve.prototype.isLineCurve = true;\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve3';\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nSplineCurve.prototype.isSplineCurve = true;\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n *  curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t}\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength() {\n\n\t\tconst lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t}\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t}\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths() {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t}\n\n\tgetSpacedPoints( divisions = 40 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tgetPoints( divisions = 12 ) {\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = curve.isEllipseCurve ? divisions * 2\n\t\t\t\t: ( curve.isLineCurve || curve.isLineCurve3 ) ? 1\n\t\t\t\t\t: curve.isSplineCurve ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, - 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n *  curveSegments: <int>, // number of points on the curves\n *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n *  depth: <float>, // Depth to extrude the shape\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into the original shape bevel goes\n *  bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n *  bevelOffset: <float>, // how far from shape outline does bevel start\n *  bevelSegments: <int>, // number of bevel layers\n *\n *  extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n *  UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t//  but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t/////  Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCapsuleBufferGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nconst materialLib = {\n\tShadowMaterial,\n\tSpriteMaterial,\n\tRawShaderMaterial,\n\tShaderMaterial,\n\tPointsMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMeshPhongMaterial,\n\tMeshToonMaterial,\n\tMeshNormalMaterial,\n\tMeshLambertMaterial,\n\tMeshDepthMaterial,\n\tMeshDistanceMaterial,\n\tMeshBasicMaterial,\n\tMeshMatcapMaterial,\n\tLineDashedMaterial,\n\tLineBasicMaterial,\n\tMaterial\n};\n\nMaterial.fromType = function ( type ) {\n\n\treturn new materialLib[ type ]();\n\n};\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n// ALIAS DEFINITIONS\n\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow Error( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}` );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLight.prototype.isLight = true;\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nHemisphereLight.prototype.isHemisphereLight = true;\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLightShadow.prototype.isSpotLightShadow = true;\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLight.prototype.isSpotLight = true;\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t//  xzXZ\n\t\t\t//   y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nPointLightShadow.prototype.isPointLightShadow = true;\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointLight.prototype.isPointLight = true;\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n}\n\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nDirectionalLight.prototype.isDirectionalLight = true;\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nAmbientLight.prototype.isAmbientLight = true;\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\nRectAreaLight.prototype.isRectAreaLight = true;\n\n/**\n * Primary reference:\n *   https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n *   https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLightProbe.prototype.isLightProbe = true;\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = Material.fromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n *  - Add objects you would otherwise pass as 'root' to the\n *    constructor or the .clipAction method of AnimationMixer.\n *\n *  - Instead pass this object as 'root'.\n *\n *  - You can also add and remove objects later when the mixer\n *    is running.\n *\n * Note:\n *\n *    Objects of this class appear as one object to the mixer,\n *    so cache control of the individual objects must be done\n *    on the group.\n *\n * Limitation:\n *\n *  - The animated properties must be compatible among the\n *    all objects in the group.\n *\n *  - A single property can either be controlled through a\n *    target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions |  inactive actions  ]\n\t\t// [  active actions >| inactive actions ]\n\t\t//                 s        a\n\t\t//                  <-swap->\n\t\t//                 a        s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [  active actions  | inactive actions ]\n\t\t// [ active actions |< inactive actions  ]\n\t\t//        a        s\n\t\t//         <-swap->\n\t\t//        s        a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array( 1 );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox2.prototype.isBox2 = true;\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nclass DataUtils {\n\n\t// float32 to float16\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\t\tval = clamp( val, - 65504, 65504 );\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst f = _uint32View[ 0 ];\n\t\tconst e = ( f >> 23 ) & 0x1ff;\n\t\treturn _baseTable[ e ] + ( ( f & 0x007fffff ) >> _shiftTable[ e ] );\n\n\t}\n\n\t// float16 to float32\n\n\tstatic fromHalfFloat( val ) {\n\n\t\tconst m = val >> 10;\n\t\t_uint32View[ 0 ] = _mantissaTable[ _offsetTable[ m ] + ( val & 0x3ff ) ] + _exponentTable[ m ];\n\t\treturn _floatView[ 0 ];\n\n\t}\n\n}\n\n// float32 to float16 helpers\n\nconst _buffer = new ArrayBuffer( 4 );\nconst _floatView = new Float32Array( _buffer );\nconst _uint32View = new Uint32Array( _buffer );\n\nconst _baseTable = new Uint32Array( 512 );\nconst _shiftTable = new Uint32Array( 512 );\n\nfor ( let i = 0; i < 256; ++ i ) {\n\n\tconst e = i - 127;\n\n\t// very small number (0, -0)\n\n\tif ( e < - 27 ) {\n\n\t\t_baseTable[ i ] = 0x0000;\n\t\t_baseTable[ i | 0x100 ] = 0x8000;\n\t\t_shiftTable[ i ] = 24;\n\t\t_shiftTable[ i | 0x100 ] = 24;\n\n\t\t// small number (denorm)\n\n\t} else if ( e < - 14 ) {\n\n\t\t_baseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t_baseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t_shiftTable[ i ] = - e - 1;\n\t\t_shiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t// normal number\n\n\t} else if ( e <= 15 ) {\n\n\t\t_baseTable[ i ] = ( e + 15 ) << 10;\n\t\t_baseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t_shiftTable[ i ] = 13;\n\t\t_shiftTable[ i | 0x100 ] = 13;\n\n\t\t// large number (Infinity, -Infinity)\n\n\t} else if ( e < 128 ) {\n\n\t\t_baseTable[ i ] = 0x7c00;\n\t\t_baseTable[ i | 0x100 ] = 0xfc00;\n\t\t_shiftTable[ i ] = 24;\n\t\t_shiftTable[ i | 0x100 ] = 24;\n\n\t\t// stay (NaN, Infinity, -Infinity)\n\n\t} else {\n\n\t\t_baseTable[ i ] = 0x7c00;\n\t\t_baseTable[ i | 0x100 ] = 0xfc00;\n\t\t_shiftTable[ i ] = 13;\n\t\t_shiftTable[ i | 0x100 ] = 13;\n\n\t}\n\n}\n\n// float16 to float32 helpers\n\nconst _mantissaTable = new Uint32Array( 2048 );\nconst _exponentTable = new Uint32Array( 64 );\nconst _offsetTable = new Uint32Array( 64 );\n\nfor ( let i = 1; i < 1024; ++ i ) {\n\n\tlet m = i << 13; // zero pad mantissa bits\n\tlet e = 0; // zero exponent\n\n\t// normalized\n\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\tm <<= 1;\n\t\te -= 0x00800000; // decrement exponent\n\n\t}\n\n\tm &= ~ 0x00800000; // clear leading 1 bit\n\te += 0x38800000; // adjust bias\n\n\t_mantissaTable[ i ] = m | e;\n\n}\n\nfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t_mantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n}\n\nfor ( let i = 1; i < 31; ++ i ) {\n\n\t_exponentTable[ i ] = i << 23;\n\n}\n\n_exponentTable[ 31 ] = 0x47800000;\n_exponentTable[ 32 ] = 0x80000000;\nfor ( let i = 33; i < 63; ++ i ) {\n\n\t_exponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n}\n\n_exponentTable[ 63 ] = 0xc7800000;\n\nfor ( let i = 1; i < 64; ++ i ) {\n\n\tif ( i !== 32 ) {\n\n\t\t_offsetTable[ i ] = 1024;\n\n\t}\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials = [] ) {\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nclass PointCloud extends Points {\n\n\tconstructor( geometry, material ) {\n\n\t\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\t\tsuper( geometry, material );\n\n\t}\n\n}\n\nclass Particle extends Sprite {\n\n\tconstructor( material ) {\n\n\t\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\t\tsuper( material );\n\n\t}\n\n}\n\nclass ParticleSystem extends Points {\n\n\tconstructor( geometry, material ) {\n\n\t\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\t\tsuper( geometry, material );\n\n\t}\n\n}\n\nclass PointCloudMaterial extends PointsMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\t\tsuper( parameters );\n\n\t}\n\n}\n\nclass ParticleBasicMaterial extends PointsMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\t\tsuper( parameters );\n\n\t}\n\n}\n\nclass ParticleSystemMaterial extends PointsMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\t\tsuper( parameters );\n\n\t}\n\n}\n\nclass Vertex extends Vector3 {\n\n\tconstructor( x, y, z ) {\n\n\t\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\t\tsuper( x, y, z );\n\n\t}\n\n}\n\n//\n\nclass DynamicBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\t\tsuper( array, itemSize );\n\t\tthis.setUsage( DynamicDrawUsage );\n\n\t}\n\n}\n\nclass Int8Attribute extends Int8BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint8Attribute extends Uint8BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint8ClampedAttribute extends Uint8ClampedBufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Int16Attribute extends Int16BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint16Attribute extends Uint16BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Int32Attribute extends Int32BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint32Attribute extends Uint32BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Float32Attribute extends Float32BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Float64Attribute extends Float64BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nPath.prototype.fromPoints = function ( points ) {\n\n\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\treturn this.setFromPoints( points );\n\n};\n\n//\n\nclass AxisHelper extends AxesHelper {\n\n\tconstructor( size ) {\n\n\t\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\t\tsuper( size );\n\n\t}\n\n}\n\nclass BoundingBoxHelper extends BoxHelper {\n\n\tconstructor( object, color ) {\n\n\t\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\t\tsuper( object, color );\n\n\t}\n\n}\n\nclass EdgesHelper extends LineSegments {\n\n\tconstructor( object, hex ) {\n\n\t\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\t\tsuper( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n\t}\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nclass WireframeHelper extends LineSegments {\n\n\tconstructor( object, hex ) {\n\n\t\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\t\tsuper( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n\t}\n\n}\n\n//\n\nLoader.prototype.extractUrlBase = function ( url ) {\n\n\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\treturn LoaderUtils.extractUrlBase( url );\n\n};\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nclass XHRLoader extends FileLoader {\n\n\tconstructor( manager ) {\n\n\t\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\t\tsuper( manager );\n\n\t}\n\n}\n\nclass BinaryTextureLoader extends DataTextureLoader {\n\n\tconstructor( manager ) {\n\n\t\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\t\tsuper( manager );\n\n\t}\n\n}\n\n//\n\nBox2.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox2.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox2.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox2.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nBox3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox3.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox3.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox3.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\nBox3.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nEuler.prototype.toVector3 = function () {\n\n\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n};\n\n\n//\n\nSphere.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\n//\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\n//\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\n//\n\nMatrix3.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix3.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\treturn vector.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\treturn attribute.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nMatrix4.prototype.extractPosition = function ( m ) {\n\n\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\treturn this.copyPosition( m );\n\n};\n\nMatrix4.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix4.prototype.getPosition = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n};\n\nMatrix4.prototype.setRotationFromQuaternion = function ( q ) {\n\n\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\treturn this.makeRotationFromQuaternion( q );\n\n};\n\nMatrix4.prototype.multiplyToArray = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n};\n\nMatrix4.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector4 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateAxis = function ( v ) {\n\n\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\tv.transformDirection( this );\n\n};\n\nMatrix4.prototype.crossVector = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.translate = function () {\n\n\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateX = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateY = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateZ = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateByAxis = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n};\n\nMatrix4.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\treturn attribute.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.makeFrustum = function ( left, right, bottom, top, near, far ) {\n\n\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n};\n\nMatrix4.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\n//\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nQuaternion.prototype.inverse = function ( ) {\n\n\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\treturn this.invert();\n\n};\n\n//\n\nRay.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nRay.prototype.isIntersectionPlane = function ( plane ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\treturn this.intersectsPlane( plane );\n\n};\n\nRay.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\n//\n\nTriangle.prototype.area = function () {\n\n\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\treturn this.getArea();\n\n};\n\nTriangle.prototype.barycoordFromPoint = function ( point, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn this.getBarycoord( point, target );\n\n};\n\nTriangle.prototype.midpoint = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\treturn this.getMidpoint( target );\n\n};\n\nTriangle.prototypenormal = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn this.getNormal( target );\n\n};\n\nTriangle.prototype.plane = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\treturn this.getPlane( target );\n\n};\n\nTriangle.barycoordFromPoint = function ( point, a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n};\n\nTriangle.normal = function ( a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn Triangle.getNormal( a, b, c, target );\n\n};\n\n//\n\nShape.prototype.extractAllPoints = function ( divisions ) {\n\n\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\treturn this.extractPoints( divisions );\n\n};\n\nShape.prototype.extrude = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\treturn new ExtrudeGeometry( this, options );\n\n};\n\nShape.prototype.makeGeometry = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\treturn new ShapeGeometry( this, options );\n\n};\n\n//\n\nVector2.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector2.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector2.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector3.prototype.setEulerFromRotationMatrix = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n};\n\nVector3.prototype.setEulerFromQuaternion = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n};\n\nVector3.prototype.getPositionFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\treturn this.setFromMatrixPosition( m );\n\n};\n\nVector3.prototype.getScaleFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\treturn this.setFromMatrixScale( m );\n\n};\n\nVector3.prototype.getColumnFromMatrix = function ( index, matrix ) {\n\n\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\treturn this.setFromMatrixColumn( matrix, index );\n\n};\n\nVector3.prototype.applyProjection = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\treturn this.applyMatrix4( m );\n\n};\n\nVector3.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector3.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector3.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector4.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector4.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nObject3D.prototype.getChildByName = function ( name ) {\n\n\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\treturn this.getObjectByName( name );\n\n};\n\nObject3D.prototype.renderDepth = function () {\n\n\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n};\n\nObject3D.prototype.translate = function ( distance, axis ) {\n\n\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\treturn this.translateOnAxis( axis, distance );\n\n};\n\nObject3D.prototype.getWorldRotation = function () {\n\n\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n};\n\nObject3D.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\n\n};\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nMesh.prototype.setDrawMode = function () {\n\n\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n};\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( 'THREE.PerspectiveCamera.setLens is deprecated. ' +\n\t\t\t'Use .setFocalLength and .filmGauge for a photographic setup.' );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nBufferAttribute.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nBufferAttribute.prototype.copyIndicesArray = function ( /* indices */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n},\n\nBufferAttribute.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nBufferGeometry.prototype.addIndex = function ( index ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\tthis.setIndex( index );\n\n};\n\nBufferGeometry.prototype.addAttribute = function ( name, attribute ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t}\n\n\tif ( name === 'index' ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\tthis.setIndex( attribute );\n\n\t\treturn this;\n\n\t}\n\n\treturn this.setAttribute( name, attribute );\n\n};\n\nBufferGeometry.prototype.addDrawCall = function ( start, count, indexOffset ) {\n\n\tif ( indexOffset !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t}\n\n\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\tthis.addGroup( start, count );\n\n};\n\nBufferGeometry.prototype.clearDrawCalls = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\tthis.clearGroups();\n\n};\n\nBufferGeometry.prototype.computeOffsets = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n};\n\nBufferGeometry.prototype.removeAttribute = function ( name ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\treturn this.deleteAttribute( name );\n\n};\n\nBufferGeometry.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\n\n};\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nInterleavedBuffer.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nInterleavedBuffer.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nExtrudeGeometry.prototype.getArrays = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShapeList = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShape = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n};\n\n//\n\nScene.prototype.dispose = function () {\n\n\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n};\n\n//\n\nUniform.prototype.onUpdate = function () {\n\n\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\treturn this;\n\n};\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t},\n\n\tvertexTangents: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nWebGLRenderer.prototype.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\tthis.setRenderTarget( renderTarget );\n\tthis.clear( color, depth, stencil );\n\n};\n\nWebGLRenderer.prototype.animate = function ( callback ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\tthis.setAnimationLoop( callback );\n\n};\n\nWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\treturn this.getRenderTarget();\n\n};\n\nWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\treturn this.capabilities.getMaxAnisotropy();\n\n};\n\nWebGLRenderer.prototype.getPrecision = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\treturn this.capabilities.precision;\n\n};\n\nWebGLRenderer.prototype.resetGLState = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\treturn this.state.reset();\n\n};\n\nWebGLRenderer.prototype.supportsFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_float' );\n\n};\n\nWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_half_float' );\n\n};\n\nWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n};\n\nWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n};\n\nWebGLRenderer.prototype.supportsVertexTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\treturn this.capabilities.vertexTextures;\n\n};\n\nWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n};\n\nWebGLRenderer.prototype.enableScissorTest = function ( boolean ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\tthis.setScissorTest( boolean );\n\n};\n\nWebGLRenderer.prototype.initMaterial = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPrePlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPostPlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.updateShadowMap = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setFaceCulling = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.allocTextureUnit = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture2D = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTextureCube = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\treturn this.getActiveMipmapLevel();\n\n};\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\tgammaFactor: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\t\t\treturn 2;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nclass WebGLRenderTargetCube extends WebGLCubeRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\t\tsuper( width, options );\n\n\t}\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tconst scope = this;\n\tconst audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\n//\n\nclass ParametricGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\nclass TextGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.error( 'THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.' );\n\t\tsuper( width, height, options );\n\t\tthis.samples = 4;\n\n\t}\n\n}\n\nclass DataTexture2DArray extends DataArrayTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture2DArray has been renamed to DataArrayTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\nclass DataTexture3D extends Data3DTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture3D has been renamed to Data3DTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CapsuleGeometry as CapsuleBufferGeometry, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGBColorSpace, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Source, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\nlet c = 0;\nconst blockSize = 4;\nconst base = 36;\nconst discreteValues = Math.pow(base, blockSize);\n\nconst pad = function pad(num, size) {\n\tconst s = \"000000000\" + num;\n\treturn s.substr(s.length-size);\n};\n\nconst randomBlock = function randomBlock() {\n\treturn pad((Math.random() *\n\t\tdiscreteValues << 0)\n\t\t.toString(base), blockSize);\n};\n\nconst safeCounter = () => {\n\tc = c < discreteValues ? c : 0;\n\tc++; // this is not subliminal\n\treturn c - 1;\n};\n\nconst api = function cuid() {\n\t// Starting with a lowercase letter makes\n\t// it HTML element ID friendly.\n\t// hard-coded allows for sequential access\n\tconst letter = 'c';\n\n\t// timestamp\n\t// warning: this exposes the exact date and time\n\t// that the uid was created.\n\tconst timestamp = new Date().getTime().toString(base);\n\n\n\t// A few chars to generate distinct ids for different\n\t// clients (so different computers are far less\n\t// likely to generate the same id)\n\tconst fingerprint = api.fingerprint();\n\n\t// Grab some more chars from Math.random()\n\tconst random = randomBlock() + randomBlock();\n\n\t// Prevent same-machine collisions.\n\tconst counter = pad(safeCounter().toString(base), blockSize);\n\n\treturn letter + timestamp + counter + fingerprint + random;\n};\n\napi.slug = function slug() {\n\tconst date = new Date().getTime().toString(36);\n\n\tconst print = api.fingerprint().slice(0,1) +\n\t\tapi.fingerprint().slice(-1);\n\n\tconst random = randomBlock().slice(-2);\n\n\tconst counter = safeCounter().toString(36).slice(-4);\n\n\treturn date.slice(-2) +\n\t\tcounter + print + random;\n};\n\napi.globalCount = function globalCount() {\n\t// We want to cache the results of this\n\tconst cache = (function calc() {\n\t\tlet count = 0;\n\n\t\tfor (const i in window) { // eslint-disable-line no-unused-vars, guard-for-in\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}());\n\n\tapi.globalCount = () => cache;\n\treturn cache;\n};\n\napi.fingerprint = function browserPrint() {\n\treturn pad((navigator.mimeTypes.length +\n\t\tnavigator.userAgent.length).toString(36) +\n\t\tapi.globalCount().toString(36), 4);\n};\n\nexport { api };\n","/**\n * Shared 'internal' scope.\n */\nimport {get} from './core/settings.js';\n\n/**\n * CUID Generator\n */\nimport {api as cuid} from '../libs/browser-cuid.js';\n\n/**\n * Record of callbacks to call when a page is tracked.\n */\nconst page_callbacks = [];\n\n/**\n * Log messages to the browser console. Requires 'log' to be set on init.\n *\n * @param {*} args items to log\n * @returns {void}\n */\nfunction log(...args) {\n\tif (get('config').test && window.console) {\n\t\tfor (const arg of args) {\n\t\t\twindow.console.log(arg);\n\t\t}\n\t}\n}\n\n/**\n * Tests if variable is a certain type. Defaults to check for undefined if no type specified.\n *\n * @param {*} variable - The variable to check.\n * @param {string=} type - The type to test for. Defaults to undefined.\n *\n * @returns {boolean} - The answer for if the variable is of type.\n */\nfunction is(variable, type = 'undefined') {\n\treturn typeof variable === type;\n}\n\n/**\n * Merge objects together. Will remove undefined and null values.\n *\n * @param {object} target - The original object to merge in to.\n * @param {object} options - The object to merge into the target. If omitted, will merge target into a new empty Object.\n *\n * @returns {object} The merged object.\n */\nfunction merge(target, options) {\n\tif (!options) {\n\t\toptions = target;\n\t\ttarget = {};\n\t}\n\n\tlet name;\n\tlet src;\n\tlet copy;\n\n\t/* jshint -W089 */\n\t/* eslint guard-for-in: 0 */\n\tfor (name in options) {\n\t\tsrc = target[name];\n\t\tcopy = options[name];\n\n\t\t// Prevent never-ending loop\n\t\tif (target === copy) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Gets rid of missing values too\n\t\tif (typeof copy !== 'undefined' && copy !== null) {\n\t\t\ttarget[name] = src === Object(src) && !is(src, 'function') ? merge(src, copy) : copy;\n\t\t}\n\t}\n\t/* jshint +W089 */\n\t/* jslint forin:true */\n\n\treturn target;\n}\n\n/**\n * URL encode a string.\n *\n * @param {string} str - The string to be encoded.\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n\tif (window.encodeURIComponent) {\n\t\treturn window.encodeURIComponent(str);\n\t} else {\n\t\treturn window.escape(str);\n\t}\n}\n\n/**\n * URL decode a string.\n *\n * @param {string} str - The string to be decoded.\n * @returns {string} The decoded string.\n */\nfunction decode(str) {\n\tif (window.decodeURIComponent) {\n\t\treturn window.decodeURIComponent(str);\n\t} else {\n\t\treturn window.unescape(str);\n\t}\n}\n\n/**\n * Utility to add event listeners.\n *\n * @param {Element} element\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} listener\n * @returns {void}\n */\nfunction addEvent(element, event, listener) {\n\tif (element.addEventListener) {\n\t\telement.addEventListener(event, listener, false);\n\t} else {\n\t\telement.attachEvent('on' + event, listener);\n\t}\n}\n\n/**\n * Utility for dispatching custom events from window\n *\n * @param {string} namespace\n * @param {string} eventType\n * @param {object} detail\n * @returns {void}\n */\nfunction broadcast(namespace, eventType, detail) {\n\tdetail = detail || {};\n\ttry {\n\t\twindow.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n\t\t\tdetail: detail,\n\t\t\tbubbles: true\n\t\t}));\n\t} catch (error) {\n\t\t// empty\n\t}\n}\n\n/**\n * Listen for page tracking requests.\n *\n * @param {Function} cb - The callback to be called whenever a page is tracked.\n * @returns {void}\n */\nfunction onPage(cb) {\n\tif (is(cb, 'function') && !page_callbacks.includes(cb)) {\n\t\tpage_callbacks.push(cb);\n\t}\n}\n\n/**\n * Trigger the 'page' listeners.\n *\n * @returns {void}\n */\nfunction triggerPage() {\n\tfor (let i = 0; i < page_callbacks.length; i++) {\n\t\tpage_callbacks[i]();\n\t}\n}\n\n/**\n * Get a value from document.cookie matching the first match of the regexp you supply\n *\n * @param {RegExp} matcher - The Regex to match with\n * @returns {string} - The vale from the cookie\n */\nfunction getValueFromCookie(matcher) {\n\treturn document.cookie.match(matcher) && RegExp.$1 !== '' && RegExp.$1 !== 'null' ? RegExp.$1 : null;\n}\n\n/**\n * Filter an object to only have the properties which are listed in the `allowlist` parameter.\n *\n * @param {object} objectToFilter - An object whose props need to be filtered\n * @param {Array} allowedPropertyNames - The list of props to allow\n * @returns {object} An object containing only the allowed props\n */\nfunction filterProperties (objectToFilter, allowedPropertyNames) {\n\tconst filteredObject = {};\n\tfor (const allowedName of allowedPropertyNames) {\n\t\tif (objectToFilter[allowedName]) {\n\t\t\tfilteredObject[allowedName] = objectToFilter[allowedName];\n\t\t}\n\t}\n\treturn filteredObject;\n}\n\n/**\n * Trim strings\n *\n * @param {string} str - The string to trim.\n * @returns {string} The trimmed string.\n */\nfunction sanitise (str) {\n\treturn typeof str === 'string' ? str.trim() : str;\n}\n\n/**\n * Assign the subject value if the target properties are undefined\n *\n * @param {object} subject - assign the value\n * @param {object} target - be assigned the value\n * @returns {void}\n */\nfunction assignIfUndefined (subject, target) {\n\tfor (const prop in subject) {\n\t\tif (!target[prop]) {\n\t\t\ttarget[prop] = subject[prop];\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`You can't set a custom property called ${prop}`);\n\t\t}\n\t}\n}\n\n/**\n * Used to find out all the paths which contain a circular reference.\n *\n * @param {*} rootObject The object we want to search within for circular references\n * @returns {string[]} Returns an array of strings, the strings are the full paths to the circular references within the rootObject\n */\nfunction findCircularPathsIn(rootObject) {\n\tconst traversedValues = new WeakSet();\n\tconst circularPaths = [];\n\n\tfunction _findCircularPathsIn(currentObject, path) {\n\t\t// If we already saw this object\n\t\t// the rootObject contains a circular reference\n\t\t// and we can stop looking any further into this currentObj\n\t\tif (traversedValues.has(currentObject)) {\n\t\t\tcircularPaths.push(path);\n\t\t\treturn;\n\t\t}\n\n\t\t// Only Objects and things which inherit from Objects can contain circular references\n\t\t// I.E. string/number/boolean/template literals can not contain circular references\n\t\tif (currentObject instanceof Object) {\n\t\t\ttraversedValues.add(currentObject);\n\n\t\t\t// Loop through all the values of the current object and search those for circular references\n\t\t\tfor (const [key, value] of Object.entries(currentObject)) {\n\t\t\t\t// No need to recurse on every value because only things which inherit\n\t\t\t\t// from Objects can contain circular references\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\tconst parentObjectIsAnArray = Array.isArray(currentObject);\n\t\t\t\t\tif (parentObjectIsAnArray) {\n\t\t\t\t\t// Store path in bracket notation when value is an array\n\t\t\t\t\t\t_findCircularPathsIn(value, `${path}[${key}]`);\n\t\t\t\t\t} else {\n\t\t\t\t\t// Store path in dot-notation when value is an object\n\t\t\t\t\t\t_findCircularPathsIn(value, `${path}.${key}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_findCircularPathsIn(rootObject, \"\");\n\treturn circularPaths;\n}\n\n/**\n * Used to find out whether an object contains a circular reference.\n *\n * @param {object} rootObject The object we want to search within for circular references\n * @returns {boolean} Returns true if a circular reference was found, otherwise returns false\n */\nfunction containsCircularPaths(rootObject) {\n\t// Used to keep track of all the values the rootObject contains\n\tconst traversedValues = new WeakSet();\n\n\t/**\n\t *\n\t * @param {*} currentObject The current object we want to search within for circular references\n\t * @returns {boolean|undefined} Returns true if a circular reference was found, otherwise returns undefined\n\t */\n\tfunction _containsCircularPaths(currentObject) {\n\t\t// If we already saw this object\n\t\t// the rootObject contains a circular reference\n\t\t// and we can stop looking any further\n\t\tif (traversedValues.has(currentObject)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Only Objects and things which inherit from Objects can contain circular references\n\t\t// I.E. string/number/boolean/template literals can not contain circular references\n\t\tif (currentObject instanceof Object) {\n\t\t\ttraversedValues.add(currentObject);\n\t\t\t// Loop through all the values of the current object and search those for circular references\n\t\t\tfor (const value of Object.values(currentObject)) {\n\t\t\t\t// No need to recurse on every value because only things which inherit\n\t\t\t\t// from Objects can contain circular references\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\tif (_containsCircularPaths(value)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// _containsCircularPaths returns true or undefined.\n\t// By using Boolean we convert the undefined into false.\n\treturn Boolean(\n\t\t_containsCircularPaths(\n\t\t\trootObject\n\t\t)\n\t);\n}\n\n/**\n * Find out whether two objects are deeply equal to each other.\n *\n * @param {*} a\n * @param {*} b\n * @returns {boolean} - true if the two arguments are deeply equal\n */\nfunction isDeepEqual(a, b) {\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\ta &&\n\t\tb &&\n\t\ttypeof a === \"object\" &&\n\t\ttypeof b === \"object\"\n\t) {\n\t\tif (a.constructor !== b.constructor) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (Array.isArray(a)) {\n\t\t\tconst length = a.length;\n\t\t\tif (length !== b.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\t\tif (!isDeepEqual(a[i], b[i])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (a.constructor === RegExp) {\n\t\t\treturn (\n\t\t\t\ta.source === b.source && a.flags === b.flags\n\t\t\t);\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) {\n\t\t\treturn a.valueOf() === b.valueOf();\n\t\t}\n\t\tif (a.toString !== Object.prototype.toString) {\n\t\t\treturn a.toString() === b.toString();\n\t\t}\n\n\t\tconst keys = Object.keys(a);\n\t\tconst length = keys.length;\n\t\tif (length !== Object.keys(b).length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\tconst key = keys[i];\n\n\t\t\tif (!isDeepEqual(a[key], b[key])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n}\n\nexport {\n\tlog,\n\tis,\n\tis as isUndefined,\n\tmerge,\n\tencode,\n\tdecode,\n\tcuid as guid,\n\taddEvent,\n\tbroadcast,\n\tonPage,\n\ttriggerPage,\n\tgetValueFromCookie,\n\tsanitise,\n\tassignIfUndefined,\n\tfilterProperties,\n\tfindCircularPathsIn,\n\tcontainsCircularPaths,\n\tisDeepEqual\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/grid/index.js\nvar grid_exports = {};\n__export(grid_exports, {\n  GridChild: () => GridChild,\n  GridContainer: () => GridContainer,\n  GridRow: () => GridRow,\n  default: () => grid_default\n});\nmodule.exports = __toCommonJS(grid_exports);\n\n// src/grid/grid-child.js\nvar import_react = __toESM(require(\"react\"));\nvar import_prop_types = __toESM(require(\"prop-types\"));\nvar GridChild = (_a) => {\n  var _b = _a, { children, colspan } = _b, props = __objRest(_b, [\"children\", \"colspan\"]);\n  switch (typeof colspan) {\n    case \"number\":\n    case \"string\":\n      return /* @__PURE__ */ import_react.default.createElement(\"div\", __spreadValues({\n        \"data-o-grid-colspan\": colspan\n      }, props), children);\n    default:\n      break;\n  }\n  return /* @__PURE__ */ import_react.default.createElement(\"div\", __spreadValues({\n    \"data-o-grid-colspan\": Object.entries(colspan).map(([breakpoint, size]) => `${breakpoint.toUpperCase()}${size}`).join(\" \")\n  }, props), children);\n};\nGridChild.displayName = \"GGridChild\";\nGridChild.propTypes = {\n  children: import_prop_types.default.node.isRequired,\n  colspan: import_prop_types.default.oneOfType([\n    import_prop_types.default.string,\n    import_prop_types.default.number,\n    import_prop_types.default.shape({\n      default: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      s: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      m: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      l: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      xl: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      S: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      M: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      L: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      XL: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string])\n    })\n  ])\n};\nGridChild.defaultProps = {\n  colspan: \"full-width\"\n};\n\n// src/grid/grid-row.js\nvar import_react2 = __toESM(require(\"react\"));\nvar import_prop_types2 = __toESM(require(\"prop-types\"));\nvar import_classnames = __toESM(require(\"classnames\"));\nvar GridRow = (_a) => {\n  var _b = _a, { compact, children } = _b, props = __objRest(_b, [\"compact\", \"children\"]);\n  return /* @__PURE__ */ import_react2.default.createElement(\"div\", __spreadValues({\n    className: (0, import_classnames.default)(\"o-grid-row\", compact && \"o-grid-row--compact\")\n  }, props), children);\n};\nGridRow.displayName = \"GGridRow\";\nGridRow.propTypes = {\n  compact: import_prop_types2.default.bool,\n  children: import_prop_types2.default.node.isRequired\n};\nGridRow.defaultProps = {\n  compact: false\n};\n\n// src/grid/grid-container.js\nvar import_react3 = __toESM(require(\"react\"));\nvar import_prop_types3 = __toESM(require(\"prop-types\"));\nvar import_classnames2 = __toESM(require(\"classnames\"));\nvar GridContainer = (_a) => {\n  var _b = _a, { bleed, snappy, children, className } = _b, props = __objRest(_b, [\"bleed\", \"snappy\", \"children\", \"className\"]);\n  return /* @__PURE__ */ import_react3.default.createElement(\"div\", __spreadValues({\n    className: (0, import_classnames2.default)(className, \"o-grid-container\", bleed && \" o-grid-container--bleed\", snappy && \"o-grid-container--snappy\")\n  }, props), children);\n};\nGridContainer.displayName = \"GGridContainer\";\nGridContainer.propTypes = {\n  bleed: import_prop_types3.default.bool,\n  snappy: import_prop_types3.default.bool,\n  children: import_prop_types3.default.node.isRequired\n};\nGridContainer.defaultProps = {\n  bleed: false,\n  snappy: false\n};\n\n// src/grid/index.js\nvar grid_default = {\n  GridRow,\n  GridChild,\n  GridContainer\n};\n//# sourceMappingURL=index.js.map\n","import * as THREE from 'three';\nimport * as React from 'react';\nimport { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from 'react-reconciler/constants';\nimport create from 'zustand';\nimport Reconciler from 'react-reconciler';\nimport { unstable_scheduleCallback, unstable_IdlePriority } from 'scheduler';\nimport { suspend, preload, clear } from 'suspend-react';\n\nvar threeTypes = /*#__PURE__*/Object.freeze({\n  __proto__: null\n});\n\nconst catalogue = {};\nconst extend = objects => void Object.assign(catalogue, objects);\nfunction createRenderer(_roots, _getEventPriority) {\n  function createInstance(type, {\n    args = [],\n    attach,\n    ...props\n  }, root) {\n    let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n    let instance;\n    if (type === 'primitive') {\n      if (props.object === undefined) throw new Error(\"R3F: Primitives without 'object' are invalid!\");\n      const object = props.object;\n      instance = prepare(object, {\n        type,\n        root,\n        attach,\n        primitive: true\n      });\n    } else {\n      const target = catalogue[name];\n      if (!target) {\n        throw new Error(`R3F: ${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);\n      }\n\n      // Throw if an object or literal was passed for args\n      if (!Array.isArray(args)) throw new Error('R3F: The args prop must be an array!');\n\n      // Instanciate new object, link it to the root\n      // Append memoized props with args so it's not forgotten\n      instance = prepare(new target(...args), {\n        type,\n        root,\n        attach,\n        // Save args in case we need to reconstruct later for HMR\n        memoizedProps: {\n          args\n        }\n      });\n    }\n\n    // Auto-attach geometries and materials\n    if (instance.__r3f.attach === undefined) {\n      if (instance instanceof THREE.BufferGeometry) instance.__r3f.attach = 'geometry';else if (instance instanceof THREE.Material) instance.__r3f.attach = 'material';\n    }\n\n    // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n    // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n    // why it passes \"true\" here\n    // There is no reason to apply props to injects\n    if (name !== 'inject') applyProps$1(instance, props);\n    return instance;\n  }\n  function appendChild(parentInstance, child) {\n    let added = false;\n    if (child) {\n      var _child$__r3f, _parentInstance$__r3f;\n      // The attach attribute implies that the object attaches itself on the parent\n      if ((_child$__r3f = child.__r3f) != null && _child$__r3f.attach) {\n        attach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        // add in the usual parent-child way\n        parentInstance.add(child);\n        added = true;\n      }\n      // This is for anything that used attach, and for non-Object3Ds that don't get attached to props;\n      // that is, anything that's a child in React but not a child in the scenegraph.\n      if (!added) (_parentInstance$__r3f = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f.objects.push(child);\n      if (!child.__r3f) prepare(child, {});\n      child.__r3f.parent = parentInstance;\n      updateInstance(child);\n      invalidateInstance(child);\n    }\n  }\n  function insertBefore(parentInstance, child, beforeChild) {\n    let added = false;\n    if (child) {\n      var _child$__r3f2, _parentInstance$__r3f2;\n      if ((_child$__r3f2 = child.__r3f) != null && _child$__r3f2.attach) {\n        attach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        child.parent = parentInstance;\n        child.dispatchEvent({\n          type: 'added'\n        });\n        const restSiblings = parentInstance.children.filter(sibling => sibling !== child);\n        const index = restSiblings.indexOf(beforeChild);\n        parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n        added = true;\n      }\n      if (!added) (_parentInstance$__r3f2 = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f2.objects.push(child);\n      if (!child.__r3f) prepare(child, {});\n      child.__r3f.parent = parentInstance;\n      updateInstance(child);\n      invalidateInstance(child);\n    }\n  }\n  function removeRecursive(array, parent, dispose = false) {\n    if (array) [...array].forEach(child => removeChild(parent, child, dispose));\n  }\n  function removeChild(parentInstance, child, dispose) {\n    if (child) {\n      var _parentInstance$__r3f3, _child$__r3f3, _child$__r3f5;\n      // Clear the parent reference\n      if (child.__r3f) child.__r3f.parent = null;\n      // Remove child from the parents objects\n      if ((_parentInstance$__r3f3 = parentInstance.__r3f) != null && _parentInstance$__r3f3.objects) parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter(x => x !== child);\n      // Remove attachment\n      if ((_child$__r3f3 = child.__r3f) != null && _child$__r3f3.attach) {\n        detach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        var _child$__r3f4;\n        parentInstance.remove(child);\n        // Remove interactivity\n        if ((_child$__r3f4 = child.__r3f) != null && _child$__r3f4.root) {\n          removeInteractivity(child.__r3f.root, child);\n        }\n      }\n\n      // Allow objects to bail out of recursive dispose altogether by passing dispose={null}\n      // Never dispose of primitives because their state may be kept outside of React!\n      // In order for an object to be able to dispose it has to have\n      //   - a dispose method,\n      //   - it cannot be a <primitive object={...} />\n      //   - it cannot be a THREE.Scene, because three has broken it's own api\n      //\n      // Since disposal is recursive, we can check the optional dispose arg, which will be undefined\n      // when the reconciler calls it, but then carry our own check recursively\n      const isPrimitive = (_child$__r3f5 = child.__r3f) == null ? void 0 : _child$__r3f5.primitive;\n      const shouldDispose = dispose === undefined ? child.dispose !== null && !isPrimitive : dispose;\n\n      // Remove nested child objects. Primitives should not have objects and children that are\n      // attached to them declaratively ...\n      if (!isPrimitive) {\n        var _child$__r3f6;\n        removeRecursive((_child$__r3f6 = child.__r3f) == null ? void 0 : _child$__r3f6.objects, child, shouldDispose);\n        removeRecursive(child.children, child, shouldDispose);\n      }\n\n      // Remove references\n      if (child.__r3f) {\n        delete child.__r3f.root;\n        delete child.__r3f.objects;\n        delete child.__r3f.handlers;\n        delete child.__r3f.memoizedProps;\n        if (!isPrimitive) delete child.__r3f;\n      }\n\n      // Dispose item whenever the reconciler feels like it\n      if (shouldDispose && child.dispose && child.type !== 'Scene') {\n        unstable_scheduleCallback(unstable_IdlePriority, () => {\n          try {\n            child.dispose();\n          } catch (e) {\n            /* ... */\n          }\n        });\n      }\n      invalidateInstance(parentInstance);\n    }\n  }\n  function switchInstance(instance, type, newProps, fiber) {\n    var _instance$__r3f;\n    const parent = (_instance$__r3f = instance.__r3f) == null ? void 0 : _instance$__r3f.parent;\n    if (!parent) return;\n    const newInstance = createInstance(type, newProps, instance.__r3f.root);\n\n    // https://github.com/pmndrs/react-three-fiber/issues/1348\n    // When args change the instance has to be re-constructed, which then\n    // forces r3f to re-parent the children and non-scene objects\n    if (instance.children) {\n      for (const child of instance.children) {\n        if (child.__r3f) appendChild(newInstance, child);\n      }\n      instance.children = instance.children.filter(child => !child.__r3f);\n    }\n    instance.__r3f.objects.forEach(child => appendChild(newInstance, child));\n    instance.__r3f.objects = [];\n    if (!instance.__r3f.autoRemovedBeforeAppend) {\n      removeChild(parent, instance);\n    }\n    if (newInstance.parent) {\n      newInstance.__r3f.autoRemovedBeforeAppend = true;\n    }\n    appendChild(parent, newInstance);\n\n    // Re-bind event handlers\n    if (newInstance.raycast && newInstance.__r3f.eventCount) {\n      const rootState = newInstance.__r3f.root.getState();\n      rootState.internal.interaction.push(newInstance);\n    }\n    [fiber, fiber.alternate].forEach(fiber => {\n      if (fiber !== null) {\n        fiber.stateNode = newInstance;\n        if (fiber.ref) {\n          if (typeof fiber.ref === 'function') fiber.ref(newInstance);else fiber.ref.current = newInstance;\n        }\n      }\n    });\n  }\n\n  // Don't handle text instances, warn on undefined behavior\n  const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.');\n  const reconciler = Reconciler({\n    createInstance,\n    removeChild,\n    appendChild,\n    appendInitialChild: appendChild,\n    insertBefore,\n    supportsMutation: true,\n    isPrimaryRenderer: false,\n    supportsPersistence: false,\n    supportsHydration: false,\n    noTimeout: -1,\n    appendChildToContainer: (container, child) => {\n      if (!child) return;\n\n      // Don't append to unmounted container\n      const scene = container.getState().scene;\n      if (!scene.__r3f) return;\n\n      // Link current root to the default scene\n      scene.__r3f.root = container;\n      appendChild(scene, child);\n    },\n    removeChildFromContainer: (container, child) => {\n      if (!child) return;\n      removeChild(container.getState().scene, child);\n    },\n    insertInContainerBefore: (container, child, beforeChild) => {\n      if (!child || !beforeChild) return;\n\n      // Don't append to unmounted container\n      const scene = container.getState().scene;\n      if (!scene.__r3f) return;\n      insertBefore(scene, child, beforeChild);\n    },\n    getRootHostContext: () => null,\n    getChildHostContext: parentHostContext => parentHostContext,\n    finalizeInitialChildren(instance) {\n      var _instance$__r3f2;\n      const localState = (_instance$__r3f2 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f2 : {};\n      // https://github.com/facebook/react/issues/20271\n      // Returning true will trigger commitMount\n      return Boolean(localState.handlers);\n    },\n    prepareUpdate(instance, _type, oldProps, newProps) {\n      // Create diff-sets\n      if (instance.__r3f.primitive && newProps.object && newProps.object !== instance) {\n        return [true];\n      } else {\n        // This is a data object, let's extract critical information about it\n        const {\n          args: argsNew = [],\n          children: cN,\n          ...restNew\n        } = newProps;\n        const {\n          args: argsOld = [],\n          children: cO,\n          ...restOld\n        } = oldProps;\n\n        // Throw if an object or literal was passed for args\n        if (!Array.isArray(argsNew)) throw new Error('R3F: the args prop must be an array!');\n\n        // If it has new props or arguments, then it needs to be re-instantiated\n        if (argsNew.some((value, index) => value !== argsOld[index])) return [true];\n        // Create a diff-set, flag if there are any changes\n        const diff = diffProps(instance, restNew, restOld, true);\n        if (diff.changes.length) return [false, diff];\n\n        // Otherwise do not touch the instance\n        return null;\n      }\n    },\n    commitUpdate(instance, [reconstruct, diff], type, _oldProps, newProps, fiber) {\n      // Reconstruct when args or <primitive object={...} have changes\n      if (reconstruct) switchInstance(instance, type, newProps, fiber);\n      // Otherwise just overwrite props\n      else applyProps$1(instance, diff);\n    },\n    commitMount(instance, _type, _props, _int) {\n      var _instance$__r3f3;\n      // https://github.com/facebook/react/issues/20271\n      // This will make sure events are only added once to the central container\n      const localState = (_instance$__r3f3 = instance.__r3f) != null ? _instance$__r3f3 : {};\n      if (instance.raycast && localState.handlers && localState.eventCount) {\n        instance.__r3f.root.getState().internal.interaction.push(instance);\n      }\n    },\n    getPublicInstance: instance => instance,\n    prepareForCommit: () => null,\n    preparePortalMount: container => prepare(container.getState().scene),\n    resetAfterCommit: () => {},\n    shouldSetTextContent: () => false,\n    clearContainer: () => false,\n    hideInstance(instance) {\n      var _instance$__r3f4;\n      // Detach while the instance is hidden\n      const {\n        attach: type,\n        parent\n      } = (_instance$__r3f4 = instance.__r3f) != null ? _instance$__r3f4 : {};\n      if (type && parent) detach(parent, instance, type);\n      if (instance.isObject3D) instance.visible = false;\n      invalidateInstance(instance);\n    },\n    unhideInstance(instance, props) {\n      var _instance$__r3f5;\n      // Re-attach when the instance is unhidden\n      const {\n        attach: type,\n        parent\n      } = (_instance$__r3f5 = instance.__r3f) != null ? _instance$__r3f5 : {};\n      if (type && parent) attach(parent, instance, type);\n      if (instance.isObject3D && props.visible == null || props.visible) instance.visible = true;\n      invalidateInstance(instance);\n    },\n    createTextInstance: handleTextInstance,\n    hideTextInstance: handleTextInstance,\n    unhideTextInstance: handleTextInstance,\n    // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n    // @ts-ignore\n    getCurrentEventPriority: () => _getEventPriority ? _getEventPriority() : DefaultEventPriority,\n    beforeActiveInstanceBlur: () => {},\n    afterActiveInstanceBlur: () => {},\n    detachDeletedInstance: () => {},\n    now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : () => 0,\n    // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r920883503\n    scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n    cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined\n  });\n  return {\n    reconciler,\n    applyProps: applyProps$1\n  };\n}\n\nvar _window$document, _window$navigator;\n/**\n * Returns `true` with correct TS type inference if an object has a configurable color space (since r152).\n */\nconst hasColorSpace = object => 'colorSpace' in object || 'outputColorSpace' in object;\n/**\n * The current THREE.ColorManagement instance, if present.\n */\nconst getColorManagement = () => {\n  var _ColorManagement;\n  return (_ColorManagement = catalogue.ColorManagement) != null ? _ColorManagement : null;\n};\nconst isOrthographicCamera = def => def && def.isOrthographicCamera;\nconst isRef = obj => obj && obj.hasOwnProperty('current');\n\n/**\n * An SSR-friendly useLayoutEffect.\n *\n * React currently throws a warning when using useLayoutEffect on the server.\n * To get around it, we can conditionally useEffect on the server (no-op) and\n * useLayoutEffect elsewhere.\n *\n * @see https://github.com/facebook/react/issues/14927\n */\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === 'ReactNative') ? React.useLayoutEffect : React.useEffect;\nfunction useMutableCallback(fn) {\n  const ref = React.useRef(fn);\n  useIsomorphicLayoutEffect(() => void (ref.current = fn), [fn]);\n  return ref;\n}\nfunction Block({\n  set\n}) {\n  useIsomorphicLayoutEffect(() => {\n    set(new Promise(() => null));\n    return () => set(false);\n  }, [set]);\n  return null;\n}\nclass ErrorBoundary extends React.Component {\n  constructor(...args) {\n    super(...args);\n    this.state = {\n      error: false\n    };\n  }\n  componentDidCatch(err) {\n    this.props.set(err);\n  }\n  render() {\n    return this.state.error ? null : this.props.children;\n  }\n}\nErrorBoundary.getDerivedStateFromError = () => ({\n  error: true\n});\nconst DEFAULT = '__default';\nconst DEFAULTS = new Map();\nconst isDiffSet = def => def && !!def.memoized && !!def.changes;\nfunction calculateDpr(dpr) {\n  var _window$devicePixelRa;\n  // Err on the side of progress by assuming 2x dpr if we can't detect it\n  // This will happen in workers where window is defined but dpr isn't.\n  const target = typeof window !== 'undefined' ? (_window$devicePixelRa = window.devicePixelRatio) != null ? _window$devicePixelRa : 2 : 1;\n  return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;\n}\n\n/**\n * Returns instance root state\n */\nconst getRootState = obj => {\n  var _r3f;\n  return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n};\n// A collection of compare functions\nconst is = {\n  obj: a => a === Object(a) && !is.arr(a) && typeof a !== 'function',\n  fun: a => typeof a === 'function',\n  str: a => typeof a === 'string',\n  num: a => typeof a === 'number',\n  boo: a => typeof a === 'boolean',\n  und: a => a === void 0,\n  arr: a => Array.isArray(a),\n  equ(a, b, {\n    arrays = 'shallow',\n    objects = 'reference',\n    strict = true\n  } = {}) {\n    // Wrong type or one of the two undefined, doesn't match\n    if (typeof a !== typeof b || !!a !== !!b) return false;\n    // Atomic, just compare a against b\n    if (is.str(a) || is.num(a)) return a === b;\n    const isObj = is.obj(a);\n    if (isObj && objects === 'reference') return a === b;\n    const isArr = is.arr(a);\n    if (isArr && arrays === 'reference') return a === b;\n    // Array or Object, shallow compare first to see if it's a match\n    if ((isArr || isObj) && a === b) return true;\n    // Last resort, go through keys\n    let i;\n    // Check if a has all the keys of b\n    for (i in a) if (!(i in b)) return false;\n    // Check if values between keys match\n    if (isObj && arrays === 'shallow' && objects === 'shallow') {\n      for (i in strict ? b : a) if (!is.equ(a[i], b[i], {\n        strict,\n        objects: 'reference'\n      })) return false;\n    } else {\n      for (i in strict ? b : a) if (a[i] !== b[i]) return false;\n    }\n    // If i is undefined\n    if (is.und(i)) {\n      // If both arrays are empty we consider them equal\n      if (isArr && a.length === 0 && b.length === 0) return true;\n      // If both objects are empty we consider them equal\n      if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0) return true;\n      // Otherwise match them by value\n      if (a !== b) return false;\n    }\n    return true;\n  }\n};\n\n// Collects nodes and materials from a THREE.Object3D\nfunction buildGraph(object) {\n  const data = {\n    nodes: {},\n    materials: {}\n  };\n  if (object) {\n    object.traverse(obj => {\n      if (obj.name) data.nodes[obj.name] = obj;\n      if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n    });\n  }\n  return data;\n}\n\n// Disposes an object and all its properties\nfunction dispose(obj) {\n  if (obj.dispose && obj.type !== 'Scene') obj.dispose();\n  for (const p in obj) {\n    p.dispose == null ? void 0 : p.dispose();\n    delete obj[p];\n  }\n}\n\n// Each object in the scene carries a small LocalState descriptor\nfunction prepare(object, state) {\n  const instance = object;\n  if (state != null && state.primitive || !instance.__r3f) {\n    instance.__r3f = {\n      type: '',\n      root: null,\n      previousAttach: null,\n      memoizedProps: {},\n      eventCount: 0,\n      handlers: {},\n      objects: [],\n      parent: null,\n      ...state\n    };\n  }\n  return object;\n}\nfunction resolve(instance, key) {\n  let target = instance;\n  if (key.includes('-')) {\n    const entries = key.split('-');\n    const last = entries.pop();\n    target = entries.reduce((acc, key) => acc[key], instance);\n    return {\n      target,\n      key: last\n    };\n  } else return {\n    target,\n    key\n  };\n}\n\n// Checks if a dash-cased string ends with an integer\nconst INDEX_REGEX = /-\\d+$/;\nfunction attach(parent, child, type) {\n  if (is.str(type)) {\n    // If attaching into an array (foo-0), create one\n    if (INDEX_REGEX.test(type)) {\n      const root = type.replace(INDEX_REGEX, '');\n      const {\n        target,\n        key\n      } = resolve(parent, root);\n      if (!Array.isArray(target[key])) target[key] = [];\n    }\n    const {\n      target,\n      key\n    } = resolve(parent, type);\n    child.__r3f.previousAttach = target[key];\n    target[key] = child;\n  } else child.__r3f.previousAttach = type(parent, child);\n}\nfunction detach(parent, child, type) {\n  var _child$__r3f, _child$__r3f2;\n  if (is.str(type)) {\n    const {\n      target,\n      key\n    } = resolve(parent, type);\n    const previous = child.__r3f.previousAttach;\n    // When the previous value was undefined, it means the value was never set to begin with\n    if (previous === undefined) delete target[key];\n    // Otherwise set the previous value\n    else target[key] = previous;\n  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);\n  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;\n}\n\n// This function prepares a set of changes to be applied to the instance\nfunction diffProps(instance, {\n  children: cN,\n  key: kN,\n  ref: rN,\n  ...props\n}, {\n  children: cP,\n  key: kP,\n  ref: rP,\n  ...previous\n} = {}, remove = false) {\n  var _instance$__r3f;\n  const localState = (_instance$__r3f = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f : {};\n  const entries = Object.entries(props);\n  const changes = [];\n\n  // Catch removed props, prepend them so they can be reset or removed\n  if (remove) {\n    const previousKeys = Object.keys(previous);\n    for (let i = 0; i < previousKeys.length; i++) {\n      if (!props.hasOwnProperty(previousKeys[i])) entries.unshift([previousKeys[i], DEFAULT + 'remove']);\n    }\n  }\n  entries.forEach(([key, value]) => {\n    var _instance$__r3f2;\n    // Bail out on primitive object\n    if ((_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.primitive && key === 'object') return;\n    // When props match bail out\n    if (is.equ(value, previous[key])) return;\n    // Collect handlers and bail out\n    if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]);\n    // Split dashed props\n    let entries = [];\n    if (key.includes('-')) entries = key.split('-');\n    changes.push([key, value, false, entries]);\n\n    // Reset pierced props\n    for (const prop in props) {\n      const value = props[prop];\n      if (prop.startsWith(`${key}-`)) changes.push([prop, value, false, prop.split('-')]);\n    }\n  });\n  const memoized = {\n    ...props\n  };\n  if (localState.memoizedProps && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n  if (localState.memoizedProps && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n  return {\n    memoized,\n    changes\n  };\n}\n\n// This function applies a set of changes to the instance\nfunction applyProps$1(instance, data) {\n  var _instance$__r3f3, _root$getState, _instance$__r3f4;\n  // Filter equals, events and reserved props\n  const localState = (_instance$__r3f3 = instance.__r3f) != null ? _instance$__r3f3 : {};\n  const root = localState.root;\n  const rootState = (_root$getState = root == null ? void 0 : root.getState == null ? void 0 : root.getState()) != null ? _root$getState : {};\n  const {\n    memoized,\n    changes\n  } = isDiffSet(data) ? data : diffProps(instance, data);\n  const prevHandlers = localState.eventCount;\n\n  // Prepare memoized props\n  if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n  for (let i = 0; i < changes.length; i++) {\n    let [key, value, isEvent, keys] = changes[i];\n\n    // Alias (output)encoding => (output)colorSpace (since r152)\n    // https://github.com/pmndrs/react-three-fiber/pull/2829\n    if (hasColorSpace(instance)) {\n      const sRGBEncoding = 3001;\n      const SRGBColorSpace = 'srgb';\n      const LinearSRGBColorSpace = 'srgb-linear';\n      if (key === 'encoding') {\n        key = 'colorSpace';\n        value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n      } else if (key === 'outputEncoding') {\n        key = 'outputColorSpace';\n        value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n      }\n    }\n    let currentInstance = instance;\n    let targetProp = currentInstance[key];\n\n    // Revolve dashed props\n    if (keys.length) {\n      targetProp = keys.reduce((acc, key) => acc[key], instance);\n      // If the target is atomic, it forces us to switch the root\n      if (!(targetProp && targetProp.set)) {\n        const [name, ...reverseEntries] = keys.reverse();\n        currentInstance = reverseEntries.reverse().reduce((acc, key) => acc[key], instance);\n        key = name;\n      }\n    }\n\n    // https://github.com/mrdoob/three.js/issues/21209\n    // HMR/fast-refresh relies on the ability to cancel out props, but threejs\n    // has no means to do this. Hence we curate a small collection of value-classes\n    // with their respective constructor/set arguments\n    // For removed props, try to set default values, if possible\n    if (value === DEFAULT + 'remove') {\n      if (currentInstance.constructor) {\n        // create a blank slate of the instance and copy the particular parameter.\n        let ctor = DEFAULTS.get(currentInstance.constructor);\n        if (!ctor) {\n          // @ts-ignore\n          ctor = new currentInstance.constructor();\n          DEFAULTS.set(currentInstance.constructor, ctor);\n        }\n        value = ctor[key];\n      } else {\n        // instance does not have constructor, just set it to 0\n        value = 0;\n      }\n    }\n\n    // Deal with pointer events ...\n    if (isEvent) {\n      if (value) localState.handlers[key] = value;else delete localState.handlers[key];\n      localState.eventCount = Object.keys(localState.handlers).length;\n    }\n    // Special treatment for objects with support for set/copy, and layers\n    else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE.Layers)) {\n      // If value is an array\n      if (Array.isArray(value)) {\n        if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);\n      }\n      // Test again target.copy(class) next ...\n      else if (targetProp.copy && value && value.constructor && targetProp.constructor === value.constructor) {\n        targetProp.copy(value);\n      }\n      // If nothing else fits, just set the single value, ignore undefined\n      // https://github.com/pmndrs/react-three-fiber/issues/274\n      else if (value !== undefined) {\n        const isColor = targetProp instanceof THREE.Color;\n        // Allow setting array scalars\n        if (!isColor && targetProp.setScalar) targetProp.setScalar(value);\n        // Layers have no copy function, we must therefore copy the mask property\n        else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask;\n        // Otherwise just set ...\n        else targetProp.set(value);\n        // For versions of three which don't support THREE.ColorManagement,\n        // Auto-convert sRGB colors\n        // https://github.com/pmndrs/react-three-fiber/issues/344\n        if (!getColorManagement() && !rootState.linear && isColor) targetProp.convertSRGBToLinear();\n      }\n      // Else, just overwrite the value\n    } else {\n      currentInstance[key] = value;\n\n      // Auto-convert sRGB textures, for now ...\n      // https://github.com/pmndrs/react-three-fiber/issues/344\n      if (currentInstance[key] instanceof THREE.Texture &&\n      // sRGB textures must be RGBA8 since r137 https://github.com/mrdoob/three.js/pull/23129\n      currentInstance[key].format === THREE.RGBAFormat && currentInstance[key].type === THREE.UnsignedByteType) {\n        const texture = currentInstance[key];\n        if (hasColorSpace(texture) && hasColorSpace(rootState.gl)) texture.colorSpace = rootState.gl.outputColorSpace;else texture.encoding = rootState.gl.outputEncoding;\n      }\n    }\n    invalidateInstance(instance);\n  }\n  if (localState.parent && rootState.internal && instance.raycast && prevHandlers !== localState.eventCount) {\n    // Pre-emptively remove the instance from the interaction manager\n    const index = rootState.internal.interaction.indexOf(instance);\n    if (index > -1) rootState.internal.interaction.splice(index, 1);\n    // Add the instance to the interaction manager only when it has handlers\n    if (localState.eventCount) rootState.internal.interaction.push(instance);\n  }\n\n  // Call the update lifecycle when it is being updated, but only when it is part of the scene.\n  // Skip updates to the `onUpdate` prop itself\n  const isCircular = changes.length === 1 && changes[0][0] === 'onUpdate';\n  if (!isCircular && changes.length && (_instance$__r3f4 = instance.__r3f) != null && _instance$__r3f4.parent) updateInstance(instance);\n  return instance;\n}\nfunction invalidateInstance(instance) {\n  var _instance$__r3f5, _instance$__r3f5$root;\n  const state = (_instance$__r3f5 = instance.__r3f) == null ? void 0 : (_instance$__r3f5$root = _instance$__r3f5.root) == null ? void 0 : _instance$__r3f5$root.getState == null ? void 0 : _instance$__r3f5$root.getState();\n  if (state && state.internal.frames === 0) state.invalidate();\n}\nfunction updateInstance(instance) {\n  instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n}\nfunction updateCamera(camera, size) {\n  // https://github.com/pmndrs/react-three-fiber/issues/92\n  // Do not mess with the camera if it belongs to the user\n  if (!camera.manual) {\n    if (isOrthographicCamera(camera)) {\n      camera.left = size.width / -2;\n      camera.right = size.width / 2;\n      camera.top = size.height / 2;\n      camera.bottom = size.height / -2;\n    } else {\n      camera.aspect = size.width / size.height;\n    }\n    camera.updateProjectionMatrix();\n    // https://github.com/pmndrs/react-three-fiber/issues/178\n    // Update matrix world since the renderer is a frame late\n    camera.updateMatrixWorld();\n  }\n}\n\nfunction makeId(event) {\n  return (event.eventObject || event.object).uuid + '/' + event.index + event.instanceId;\n}\n\n// https://github.com/facebook/react/tree/main/packages/react-reconciler#getcurrenteventpriority\n// Gives React a clue as to how import the current interaction is\nfunction getEventPriority() {\n  var _globalScope$event;\n  // Get a handle to the current global scope in window and worker contexts if able\n  // https://github.com/pmndrs/react-three-fiber/pull/2493\n  const globalScope = typeof self !== 'undefined' && self || typeof window !== 'undefined' && window;\n  if (!globalScope) return DefaultEventPriority;\n  const name = (_globalScope$event = globalScope.event) == null ? void 0 : _globalScope$event.type;\n  switch (name) {\n    case 'click':\n    case 'contextmenu':\n    case 'dblclick':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointerup':\n      return DiscreteEventPriority;\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'pointerenter':\n    case 'pointerleave':\n    case 'wheel':\n      return ContinuousEventPriority;\n    default:\n      return DefaultEventPriority;\n  }\n}\n\n/**\n * Release pointer captures.\n * This is called by releasePointerCapture in the API, and when an object is removed.\n */\nfunction releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {\n  const captureData = captures.get(obj);\n  if (captureData) {\n    captures.delete(obj);\n    // If this was the last capturing object for this pointer\n    if (captures.size === 0) {\n      capturedMap.delete(pointerId);\n      captureData.target.releasePointerCapture(pointerId);\n    }\n  }\n}\nfunction removeInteractivity(store, object) {\n  const {\n    internal\n  } = store.getState();\n  // Removes every trace of an object from the data store\n  internal.interaction = internal.interaction.filter(o => o !== object);\n  internal.initialHits = internal.initialHits.filter(o => o !== object);\n  internal.hovered.forEach((value, key) => {\n    if (value.eventObject === object || value.object === object) {\n      // Clear out intersects, they are outdated by now\n      internal.hovered.delete(key);\n    }\n  });\n  internal.capturedMap.forEach((captures, pointerId) => {\n    releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n  });\n}\nfunction createEvents(store) {\n  /** Calculates delta */\n  function calculateDistance(event) {\n    const {\n      internal\n    } = store.getState();\n    const dx = event.offsetX - internal.initialClick[0];\n    const dy = event.offsetY - internal.initialClick[1];\n    return Math.round(Math.sqrt(dx * dx + dy * dy));\n  }\n\n  /** Returns true if an instance has a valid pointer-event registered, this excludes scroll, clicks etc */\n  function filterPointerEvents(objects) {\n    return objects.filter(obj => ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(name => {\n      var _r3f;\n      return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers['onPointer' + name];\n    }));\n  }\n  function intersect(event, filter) {\n    const state = store.getState();\n    const duplicates = new Set();\n    const intersections = [];\n    // Allow callers to eliminate event objects\n    const eventsObjects = filter ? filter(state.internal.interaction) : state.internal.interaction;\n    // Reset all raycaster cameras to undefined\n    for (let i = 0; i < eventsObjects.length; i++) {\n      const state = getRootState(eventsObjects[i]);\n      if (state) {\n        state.raycaster.camera = undefined;\n      }\n    }\n    if (!state.previousRoot) {\n      // Make sure root-level pointer and ray are set up\n      state.events.compute == null ? void 0 : state.events.compute(event, state);\n    }\n    function handleRaycast(obj) {\n      const state = getRootState(obj);\n      // Skip event handling when noEvents is set, or when the raycasters camera is null\n      if (!state || !state.events.enabled || state.raycaster.camera === null) return [];\n\n      // When the camera is undefined we have to call the event layers update function\n      if (state.raycaster.camera === undefined) {\n        var _state$previousRoot;\n        state.events.compute == null ? void 0 : state.events.compute(event, state, (_state$previousRoot = state.previousRoot) == null ? void 0 : _state$previousRoot.getState());\n        // If the camera is still undefined we have to skip this layer entirely\n        if (state.raycaster.camera === undefined) state.raycaster.camera = null;\n      }\n\n      // Intersect object by object\n      return state.raycaster.camera ? state.raycaster.intersectObject(obj, true) : [];\n    }\n\n    // Collect events\n    let hits = eventsObjects\n    // Intersect objects\n    .flatMap(handleRaycast)\n    // Sort by event priority and distance\n    .sort((a, b) => {\n      const aState = getRootState(a.object);\n      const bState = getRootState(b.object);\n      if (!aState || !bState) return a.distance - b.distance;\n      return bState.events.priority - aState.events.priority || a.distance - b.distance;\n    })\n    // Filter out duplicates\n    .filter(item => {\n      const id = makeId(item);\n      if (duplicates.has(id)) return false;\n      duplicates.add(id);\n      return true;\n    });\n\n    // https://github.com/mrdoob/three.js/issues/16031\n    // Allow custom userland intersect sort order, this likely only makes sense on the root filter\n    if (state.events.filter) hits = state.events.filter(hits, state);\n\n    // Bubble up the events, find the event source (eventObject)\n    for (const hit of hits) {\n      let eventObject = hit.object;\n      // Bubble event up\n      while (eventObject) {\n        var _r3f2;\n        if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push({\n          ...hit,\n          eventObject\n        });\n        eventObject = eventObject.parent;\n      }\n    }\n\n    // If the interaction is captured, make all capturing targets part of the intersect.\n    if ('pointerId' in event && state.internal.capturedMap.has(event.pointerId)) {\n      for (let captureData of state.internal.capturedMap.get(event.pointerId).values()) {\n        if (!duplicates.has(makeId(captureData.intersection))) intersections.push(captureData.intersection);\n      }\n    }\n    return intersections;\n  }\n\n  /**  Handles intersections by forwarding them to handlers */\n  function handleIntersects(intersections, event, delta, callback) {\n    const rootState = store.getState();\n\n    // If anything has been found, forward it to the event listeners\n    if (intersections.length) {\n      const localState = {\n        stopped: false\n      };\n      for (const hit of intersections) {\n        const state = getRootState(hit.object) || rootState;\n        const {\n          raycaster,\n          pointer,\n          camera,\n          internal\n        } = state;\n        const unprojectedPoint = new THREE.Vector3(pointer.x, pointer.y, 0).unproject(camera);\n        const hasPointerCapture = id => {\n          var _internal$capturedMap, _internal$capturedMap2;\n          return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n        };\n        const setPointerCapture = id => {\n          const captureData = {\n            intersection: hit,\n            target: event.target\n          };\n          if (internal.capturedMap.has(id)) {\n            // if the pointerId was previously captured, we add the hit to the\n            // event capturedMap.\n            internal.capturedMap.get(id).set(hit.eventObject, captureData);\n          } else {\n            // if the pointerId was not previously captured, we create a map\n            // containing the hitObject, and the hit. hitObject is used for\n            // faster access.\n            internal.capturedMap.set(id, new Map([[hit.eventObject, captureData]]));\n          }\n          event.target.setPointerCapture(id);\n        };\n        const releasePointerCapture = id => {\n          const captures = internal.capturedMap.get(id);\n          if (captures) {\n            releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n          }\n        };\n\n        // Add native event props\n        let extractEventProps = {};\n        // This iterates over the event's properties including the inherited ones. Native PointerEvents have most of their props as getters which are inherited, but polyfilled PointerEvents have them all as their own properties (i.e. not inherited). We can't use Object.keys() or Object.entries() as they only return \"own\" properties; nor Object.getPrototypeOf(event) as that *doesn't* return \"own\" properties, only inherited ones.\n        for (let prop in event) {\n          let property = event[prop];\n          // Only copy over atomics, leave functions alone as these should be\n          // called as event.nativeEvent.fn()\n          if (typeof property !== 'function') extractEventProps[prop] = property;\n        }\n        let raycastEvent = {\n          ...hit,\n          ...extractEventProps,\n          pointer,\n          intersections,\n          stopped: localState.stopped,\n          delta,\n          unprojectedPoint,\n          ray: raycaster.ray,\n          camera: camera,\n          // Hijack stopPropagation, which just sets a flag\n          stopPropagation() {\n            // https://github.com/pmndrs/react-three-fiber/issues/596\n            // Events are not allowed to stop propagation if the pointer has been captured\n            const capturesForPointer = 'pointerId' in event && internal.capturedMap.get(event.pointerId);\n\n            // We only authorize stopPropagation...\n            if (\n            // ...if this pointer hasn't been captured\n            !capturesForPointer ||\n            // ... or if the hit object is capturing the pointer\n            capturesForPointer.has(hit.eventObject)) {\n              raycastEvent.stopped = localState.stopped = true;\n              // Propagation is stopped, remove all other hover records\n              // An event handler is only allowed to flush other handlers if it is hovered itself\n              if (internal.hovered.size && Array.from(internal.hovered.values()).find(i => i.eventObject === hit.eventObject)) {\n                // Objects cannot flush out higher up objects that have already caught the event\n                const higher = intersections.slice(0, intersections.indexOf(hit));\n                cancelPointer([...higher, hit]);\n              }\n            }\n          },\n          // there should be a distinction between target and currentTarget\n          target: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture\n          },\n          currentTarget: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture\n          },\n          nativeEvent: event\n        };\n\n        // Call subscribers\n        callback(raycastEvent);\n        // Event bubbling may be interrupted by stopPropagation\n        if (localState.stopped === true) break;\n      }\n    }\n    return intersections;\n  }\n  function cancelPointer(intersections) {\n    const {\n      internal\n    } = store.getState();\n    for (const hoveredObj of internal.hovered.values()) {\n      // When no objects were hit or the the hovered object wasn't found underneath the cursor\n      // we call onPointerOut and delete the object from the hovered-elements map\n      if (!intersections.length || !intersections.find(hit => hit.object === hoveredObj.object && hit.index === hoveredObj.index && hit.instanceId === hoveredObj.instanceId)) {\n        const eventObject = hoveredObj.eventObject;\n        const instance = eventObject.__r3f;\n        const handlers = instance == null ? void 0 : instance.handlers;\n        internal.hovered.delete(makeId(hoveredObj));\n        if (instance != null && instance.eventCount) {\n          // Clear out intersects, they are outdated by now\n          const data = {\n            ...hoveredObj,\n            intersections\n          };\n          handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n          handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n        }\n      }\n    }\n  }\n  function pointerMissed(event, objects) {\n    for (let i = 0; i < objects.length; i++) {\n      const instance = objects[i].__r3f;\n      instance == null ? void 0 : instance.handlers.onPointerMissed == null ? void 0 : instance.handlers.onPointerMissed(event);\n    }\n  }\n  function handlePointer(name) {\n    // Deal with cancelation\n    switch (name) {\n      case 'onPointerLeave':\n      case 'onPointerCancel':\n        return () => cancelPointer([]);\n      case 'onLostPointerCapture':\n        return event => {\n          const {\n            internal\n          } = store.getState();\n          if ('pointerId' in event && internal.capturedMap.has(event.pointerId)) {\n            // If the object event interface had onLostPointerCapture, we'd call it here on every\n            // object that's getting removed. We call it on the next frame because onLostPointerCapture\n            // fires before onPointerUp. Otherwise pointerUp would never be called if the event didn't\n            // happen in the object it originated from, leaving components in a in-between state.\n            requestAnimationFrame(() => {\n              // Only release if pointer-up didn't do it already\n              if (internal.capturedMap.has(event.pointerId)) {\n                internal.capturedMap.delete(event.pointerId);\n                cancelPointer([]);\n              }\n            });\n          }\n        };\n    }\n\n    // Any other pointer goes here ...\n    return function handleEvent(event) {\n      const {\n        onPointerMissed,\n        internal\n      } = store.getState();\n\n      // prepareRay(event)\n      internal.lastEvent.current = event;\n\n      // Get fresh intersects\n      const isPointerMove = name === 'onPointerMove';\n      const isClickEvent = name === 'onClick' || name === 'onContextMenu' || name === 'onDoubleClick';\n      const filter = isPointerMove ? filterPointerEvents : undefined;\n      const hits = intersect(event, filter);\n      const delta = isClickEvent ? calculateDistance(event) : 0;\n\n      // Save initial coordinates on pointer-down\n      if (name === 'onPointerDown') {\n        internal.initialClick = [event.offsetX, event.offsetY];\n        internal.initialHits = hits.map(hit => hit.eventObject);\n      }\n\n      // If a click yields no results, pass it back to the user as a miss\n      // Missed events have to come first in order to establish user-land side-effect clean up\n      if (isClickEvent && !hits.length) {\n        if (delta <= 2) {\n          pointerMissed(event, internal.interaction);\n          if (onPointerMissed) onPointerMissed(event);\n        }\n      }\n      // Take care of unhover\n      if (isPointerMove) cancelPointer(hits);\n      function onIntersect(data) {\n        const eventObject = data.eventObject;\n        const instance = eventObject.__r3f;\n        const handlers = instance == null ? void 0 : instance.handlers;\n\n        // Check presence of handlers\n        if (!(instance != null && instance.eventCount)) return;\n\n        /*\n        MAYBE TODO, DELETE IF NOT: \n          Check if the object is captured, captured events should not have intersects running in parallel\n          But wouldn't it be better to just replace capturedMap with a single entry?\n          Also, are we OK with straight up making picking up multiple objects impossible?\n          \n        const pointerId = (data as ThreeEvent<PointerEvent>).pointerId        \n        if (pointerId !== undefined) {\n          const capturedMeshSet = internal.capturedMap.get(pointerId)\n          if (capturedMeshSet) {\n            const captured = capturedMeshSet.get(eventObject)\n            if (captured && captured.localState.stopped) return\n          }\n        }*/\n\n        if (isPointerMove) {\n          // Move event ...\n          if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n            // When enter or out is present take care of hover-state\n            const id = makeId(data);\n            const hoveredItem = internal.hovered.get(id);\n            if (!hoveredItem) {\n              // If the object wasn't previously hovered, book it and call its handler\n              internal.hovered.set(id, data);\n              handlers.onPointerOver == null ? void 0 : handlers.onPointerOver(data);\n              handlers.onPointerEnter == null ? void 0 : handlers.onPointerEnter(data);\n            } else if (hoveredItem.stopped) {\n              // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n              data.stopPropagation();\n            }\n          }\n          // Call mouse move\n          handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n        } else {\n          // All other events ...\n          const handler = handlers[name];\n          if (handler) {\n            // Forward all events back to their respective handlers with the exception of click events,\n            // which must use the initial target\n            if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n              // Missed events have to come first\n              pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n              // Now call the handler\n              handler(data);\n            }\n          } else {\n            // Trigger onPointerMissed on all elements that have pointer over/out handlers, but not click and weren't hit\n            if (isClickEvent && internal.initialHits.includes(eventObject)) {\n              pointerMissed(event, internal.interaction.filter(object => !internal.initialHits.includes(object)));\n            }\n          }\n        }\n      }\n      handleIntersects(hits, event, delta, onIntersect);\n    };\n  }\n  return {\n    handlePointer\n  };\n}\n\n// Keys that shouldn't be copied between R3F stores\nconst privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];\nconst isRenderer = def => !!(def != null && def.render);\nconst context = /*#__PURE__*/React.createContext(null);\nconst createStore = (invalidate, advance) => {\n  const rootState = create((set, get) => {\n    const position = new THREE.Vector3();\n    const defaultTarget = new THREE.Vector3();\n    const tempTarget = new THREE.Vector3();\n    function getCurrentViewport(camera = get().camera, target = defaultTarget, size = get().size) {\n      const {\n        width,\n        height,\n        top,\n        left\n      } = size;\n      const aspect = width / height;\n      if (target instanceof THREE.Vector3) tempTarget.copy(target);else tempTarget.set(...target);\n      const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n      if (isOrthographicCamera(camera)) {\n        return {\n          width: width / camera.zoom,\n          height: height / camera.zoom,\n          top,\n          left,\n          factor: 1,\n          distance,\n          aspect\n        };\n      } else {\n        const fov = camera.fov * Math.PI / 180; // convert vertical fov to radians\n        const h = 2 * Math.tan(fov / 2) * distance; // visible height\n        const w = h * (width / height);\n        return {\n          width: w,\n          height: h,\n          top,\n          left,\n          factor: width / w,\n          distance,\n          aspect\n        };\n      }\n    }\n    let performanceTimeout = undefined;\n    const setPerformanceCurrent = current => set(state => ({\n      performance: {\n        ...state.performance,\n        current\n      }\n    }));\n    const pointer = new THREE.Vector2();\n    const rootState = {\n      set,\n      get,\n      // Mock objects that have to be configured\n      gl: null,\n      camera: null,\n      raycaster: null,\n      events: {\n        priority: 1,\n        enabled: true,\n        connected: false\n      },\n      xr: null,\n      scene: null,\n      invalidate: (frames = 1) => invalidate(get(), frames),\n      advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),\n      legacy: false,\n      linear: false,\n      flat: false,\n      controls: null,\n      clock: new THREE.Clock(),\n      pointer,\n      mouse: pointer,\n      frameloop: 'always',\n      onPointerMissed: undefined,\n      performance: {\n        current: 1,\n        min: 0.5,\n        max: 1,\n        debounce: 200,\n        regress: () => {\n          const state = get();\n          // Clear timeout\n          if (performanceTimeout) clearTimeout(performanceTimeout);\n          // Set lower bound performance\n          if (state.performance.current !== state.performance.min) setPerformanceCurrent(state.performance.min);\n          // Go back to upper bound performance after a while unless something regresses meanwhile\n          performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state.performance.debounce);\n        }\n      },\n      size: {\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n        updateStyle: false\n      },\n      viewport: {\n        initialDpr: 0,\n        dpr: 0,\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n        aspect: 0,\n        distance: 0,\n        factor: 0,\n        getCurrentViewport\n      },\n      setEvents: events => set(state => ({\n        ...state,\n        events: {\n          ...state.events,\n          ...events\n        }\n      })),\n      setSize: (width, height, updateStyle, top, left) => {\n        const camera = get().camera;\n        const size = {\n          width,\n          height,\n          top: top || 0,\n          left: left || 0,\n          updateStyle\n        };\n        set(state => ({\n          size,\n          viewport: {\n            ...state.viewport,\n            ...getCurrentViewport(camera, defaultTarget, size)\n          }\n        }));\n      },\n      setDpr: dpr => set(state => {\n        const resolved = calculateDpr(dpr);\n        return {\n          viewport: {\n            ...state.viewport,\n            dpr: resolved,\n            initialDpr: state.viewport.initialDpr || resolved\n          }\n        };\n      }),\n      setFrameloop: (frameloop = 'always') => {\n        const clock = get().clock;\n\n        // if frameloop === \"never\" clock.elapsedTime is updated using advance(timestamp)\n        clock.stop();\n        clock.elapsedTime = 0;\n        if (frameloop !== 'never') {\n          clock.start();\n          clock.elapsedTime = 0;\n        }\n        set(() => ({\n          frameloop\n        }));\n      },\n      previousRoot: undefined,\n      internal: {\n        active: false,\n        priority: 0,\n        frames: 0,\n        lastEvent: /*#__PURE__*/React.createRef(),\n        interaction: [],\n        hovered: new Map(),\n        subscribers: [],\n        initialClick: [0, 0],\n        initialHits: [],\n        capturedMap: new Map(),\n        subscribe: (ref, priority, store) => {\n          const internal = get().internal;\n          // If this subscription was given a priority, it takes rendering into its own hands\n          // For that reason we switch off automatic rendering and increase the manual flag\n          // As long as this flag is positive there can be no internal rendering at all\n          // because there could be multiple render subscriptions\n          internal.priority = internal.priority + (priority > 0 ? 1 : 0);\n          internal.subscribers.push({\n            ref,\n            priority,\n            store\n          });\n          // Register subscriber and sort layers from lowest to highest, meaning,\n          // highest priority renders last (on top of the other frames)\n          internal.subscribers = internal.subscribers.sort((a, b) => a.priority - b.priority);\n          return () => {\n            const internal = get().internal;\n            if (internal != null && internal.subscribers) {\n              // Decrease manual flag if this subscription had a priority\n              internal.priority = internal.priority - (priority > 0 ? 1 : 0);\n              // Remove subscriber from list\n              internal.subscribers = internal.subscribers.filter(s => s.ref !== ref);\n            }\n          };\n        }\n      }\n    };\n    return rootState;\n  });\n  const state = rootState.getState();\n  let oldSize = state.size;\n  let oldDpr = state.viewport.dpr;\n  let oldCamera = state.camera;\n  rootState.subscribe(() => {\n    const {\n      camera,\n      size,\n      viewport,\n      gl,\n      set\n    } = rootState.getState();\n\n    // Resize camera and renderer on changes to size and pixelratio\n    if (size !== oldSize || viewport.dpr !== oldDpr) {\n      var _size$updateStyle;\n      oldSize = size;\n      oldDpr = viewport.dpr;\n      // Update camera & renderer\n      updateCamera(camera, size);\n      gl.setPixelRatio(viewport.dpr);\n      const updateStyle = (_size$updateStyle = size.updateStyle) != null ? _size$updateStyle : typeof HTMLCanvasElement !== 'undefined' && gl.domElement instanceof HTMLCanvasElement;\n      gl.setSize(size.width, size.height, updateStyle);\n    }\n\n    // Update viewport once the camera changes\n    if (camera !== oldCamera) {\n      oldCamera = camera;\n      // Update viewport\n      set(state => ({\n        viewport: {\n          ...state.viewport,\n          ...state.viewport.getCurrentViewport(camera)\n        }\n      }));\n    }\n  });\n\n  // Invalidate on any change\n  rootState.subscribe(state => invalidate(state));\n\n  // Return root state\n  return rootState;\n};\n\nfunction createSubs(callback, subs) {\n  const sub = {\n    callback\n  };\n  subs.add(sub);\n  return () => void subs.delete(sub);\n}\nlet i;\nlet globalEffects = new Set();\nlet globalAfterEffects = new Set();\nlet globalTailEffects = new Set();\n\n/**\n * Adds a global render callback which is called each frame.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addEffect\n */\nconst addEffect = callback => createSubs(callback, globalEffects);\n\n/**\n * Adds a global after-render callback which is called each frame.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addAfterEffect\n */\nconst addAfterEffect = callback => createSubs(callback, globalAfterEffects);\n\n/**\n * Adds a global callback which is called when rendering stops.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addTail\n */\nconst addTail = callback => createSubs(callback, globalTailEffects);\nfunction run(effects, timestamp) {\n  if (!effects.size) return;\n  for (const {\n    callback\n  } of effects.values()) {\n    callback(timestamp);\n  }\n}\nfunction flushGlobalEffects(type, timestamp) {\n  switch (type) {\n    case 'before':\n      return run(globalEffects, timestamp);\n    case 'after':\n      return run(globalAfterEffects, timestamp);\n    case 'tail':\n      return run(globalTailEffects, timestamp);\n  }\n}\nlet subscribers;\nlet subscription;\nfunction render$1(timestamp, state, frame) {\n  // Run local effects\n  let delta = state.clock.getDelta();\n  // In frameloop='never' mode, clock times are updated using the provided timestamp\n  if (state.frameloop === 'never' && typeof timestamp === 'number') {\n    delta = timestamp - state.clock.elapsedTime;\n    state.clock.oldTime = state.clock.elapsedTime;\n    state.clock.elapsedTime = timestamp;\n  }\n  // Call subscribers (useFrame)\n  subscribers = state.internal.subscribers;\n  for (i = 0; i < subscribers.length; i++) {\n    subscription = subscribers[i];\n    subscription.ref.current(subscription.store.getState(), delta, frame);\n  }\n  // Render content\n  if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera);\n  // Decrease frame count\n  state.internal.frames = Math.max(0, state.internal.frames - 1);\n  return state.frameloop === 'always' ? 1 : state.internal.frames;\n}\nfunction createLoop(roots) {\n  let running = false;\n  let repeat;\n  let frame;\n  let state;\n  function loop(timestamp) {\n    frame = requestAnimationFrame(loop);\n    running = true;\n    repeat = 0;\n\n    // Run effects\n    flushGlobalEffects('before', timestamp);\n\n    // Render all roots\n    for (const root of roots.values()) {\n      var _state$gl$xr;\n      state = root.store.getState();\n      // If the frameloop is invalidated, do not run another frame\n      if (state.internal.active && (state.frameloop === 'always' || state.internal.frames > 0) && !((_state$gl$xr = state.gl.xr) != null && _state$gl$xr.isPresenting)) {\n        repeat += render$1(timestamp, state);\n      }\n    }\n\n    // Run after-effects\n    flushGlobalEffects('after', timestamp);\n\n    // Stop the loop if nothing invalidates it\n    if (repeat === 0) {\n      // Tail call effects, they are called when rendering stops\n      flushGlobalEffects('tail', timestamp);\n\n      // Flag end of operation\n      running = false;\n      return cancelAnimationFrame(frame);\n    }\n  }\n  function invalidate(state, frames = 1) {\n    var _state$gl$xr2;\n    if (!state) return roots.forEach(root => invalidate(root.store.getState()), frames);\n    if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return;\n    // Increase frames, do not go higher than 60\n    state.internal.frames = Math.min(60, state.internal.frames + frames);\n    // If the render-loop isn't active, start it\n    if (!running) {\n      running = true;\n      requestAnimationFrame(loop);\n    }\n  }\n  function advance(timestamp, runGlobalEffects = true, state, frame) {\n    if (runGlobalEffects) flushGlobalEffects('before', timestamp);\n    if (!state) for (const root of roots.values()) render$1(timestamp, root.store.getState());else render$1(timestamp, state, frame);\n    if (runGlobalEffects) flushGlobalEffects('after', timestamp);\n  }\n  return {\n    loop,\n    /**\n     * Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.\n     * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate\n     */\n    invalidate,\n    /**\n     * Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop=\"never\"`.\n     * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance\n     */\n    advance\n  };\n}\n\n/**\n * Exposes an object's {@link LocalState}.\n * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#useInstanceHandle\n *\n * **Note**: this is an escape hatch to react-internal fields. Expect this to change significantly between versions.\n */\nfunction useInstanceHandle(ref) {\n  const instance = React.useRef(null);\n  useIsomorphicLayoutEffect(() => void (instance.current = ref.current.__r3f), [ref]);\n  return instance;\n}\nfunction useStore() {\n  const store = React.useContext(context);\n  if (!store) throw new Error('R3F: Hooks can only be used within the Canvas component!');\n  return store;\n}\n\n/**\n * Accesses R3F's internal state, containing renderer, canvas, scene, etc.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usethree\n */\nfunction useThree(selector = state => state, equalityFn) {\n  return useStore()(selector, equalityFn);\n}\n\n/**\n * Executes a callback before render in a shared frame loop.\n * Can order effects with render priority or manually render with a positive priority.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useframe\n */\nfunction useFrame(callback, renderPriority = 0) {\n  const store = useStore();\n  const subscribe = store.getState().internal.subscribe;\n  // Memoize ref\n  const ref = useMutableCallback(callback);\n  // Subscribe on mount, unsubscribe on unmount\n  useIsomorphicLayoutEffect(() => subscribe(ref, renderPriority, store), [renderPriority, subscribe, store]);\n  return null;\n}\n\n/**\n * Returns a node graph of an object with named nodes & materials.\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#usegraph\n */\nfunction useGraph(object) {\n  return React.useMemo(() => buildGraph(object), [object]);\n}\nfunction loadingFn(extensions, onProgress) {\n  return function (Proto, ...input) {\n    // Construct new loader and run extensions\n    const loader = new Proto();\n    if (extensions) extensions(loader);\n    // Go through the urls and load them\n    return Promise.all(input.map(input => new Promise((res, reject) => loader.load(input, data => {\n      if (data.scene) Object.assign(data, buildGraph(data.scene));\n      res(data);\n    }, onProgress, error => reject(new Error(`Could not load ${input}: ${error.message})`))))));\n  };\n}\n\n/**\n * Synchronously loads and caches assets with a three loader.\n *\n * Note: this hook's caller must be wrapped with `React.Suspense`\n * @see https://docs.pmnd.rs/react-three-fiber/api/hooks#useloader\n */\nfunction useLoader(Proto, input, extensions, onProgress) {\n  // Use suspense to load async assets\n  const keys = Array.isArray(input) ? input : [input];\n  const results = suspend(loadingFn(extensions, onProgress), [Proto, ...keys], {\n    equal: is.equ\n  });\n  // Return the object/s\n  return Array.isArray(input) ? results : results[0];\n}\n\n/**\n * Preloads an asset into cache as a side-effect.\n */\nuseLoader.preload = function (Proto, input, extensions) {\n  const keys = Array.isArray(input) ? input : [input];\n  return preload(loadingFn(extensions), [Proto, ...keys]);\n};\n\n/**\n * Removes a loaded asset from cache.\n */\nuseLoader.clear = function (Proto, input) {\n  const keys = Array.isArray(input) ? input : [input];\n  return clear([Proto, ...keys]);\n};\n\nconst roots = new Map();\nconst {\n  invalidate,\n  advance\n} = createLoop(roots);\nconst {\n  reconciler,\n  applyProps\n} = createRenderer(roots, getEventPriority);\nconst shallowLoose = {\n  objects: 'shallow',\n  strict: false\n};\nconst createRendererInstance = (gl, canvas) => {\n  const customRenderer = typeof gl === 'function' ? gl(canvas) : gl;\n  if (isRenderer(customRenderer)) return customRenderer;else return new THREE.WebGLRenderer({\n    powerPreference: 'high-performance',\n    canvas: canvas,\n    antialias: true,\n    alpha: true,\n    ...gl\n  });\n};\nfunction computeInitialSize(canvas, defaultSize) {\n  if (defaultSize) return defaultSize;\n  if (typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement && canvas.parentElement) {\n    const {\n      width,\n      height,\n      top,\n      left\n    } = canvas.parentElement.getBoundingClientRect();\n    return {\n      width,\n      height,\n      top,\n      left\n    };\n  } else if (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n    return {\n      width: canvas.width,\n      height: canvas.height,\n      top: 0,\n      left: 0\n    };\n  }\n  return {\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  };\n}\nfunction createRoot(canvas) {\n  // Check against mistaken use of createRoot\n  const prevRoot = roots.get(canvas);\n  const prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;\n  const prevStore = prevRoot == null ? void 0 : prevRoot.store;\n  if (prevRoot) console.warn('R3F.createRoot should only be called once!');\n\n  // Report when an error was detected in a previous render\n  // https://github.com/pmndrs/react-three-fiber/pull/2261\n  const logRecoverableError = typeof reportError === 'function' ?\n  // In modern browsers, reportError will dispatch an error event,\n  // emulating an uncaught JavaScript error.\n  reportError :\n  // In older browsers and test environments, fallback to console.error.\n  console.error;\n\n  // Create store\n  const store = prevStore || createStore(invalidate, advance);\n  // Create renderer\n  const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, '', logRecoverableError, null);\n  // Map it\n  if (!prevRoot) roots.set(canvas, {\n    fiber,\n    store\n  });\n\n  // Locals\n  let onCreated;\n  let configured = false;\n  let lastCamera;\n  return {\n    configure(props = {}) {\n      let {\n        gl: glConfig,\n        size: propsSize,\n        scene: sceneOptions,\n        events,\n        onCreated: onCreatedCallback,\n        shadows = false,\n        linear = false,\n        flat = false,\n        legacy = false,\n        orthographic = false,\n        frameloop = 'always',\n        dpr = [1, 2],\n        performance,\n        raycaster: raycastOptions,\n        camera: cameraOptions,\n        onPointerMissed\n      } = props;\n      let state = store.getState();\n\n      // Set up renderer (one time only!)\n      let gl = state.gl;\n      if (!state.gl) state.set({\n        gl: gl = createRendererInstance(glConfig, canvas)\n      });\n\n      // Set up raycaster (one time only!)\n      let raycaster = state.raycaster;\n      if (!raycaster) state.set({\n        raycaster: raycaster = new THREE.Raycaster()\n      });\n\n      // Set raycaster options\n      const {\n        params,\n        ...options\n      } = raycastOptions || {};\n      if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, {\n        ...options\n      });\n      if (!is.equ(params, raycaster.params, shallowLoose)) applyProps(raycaster, {\n        params: {\n          ...raycaster.params,\n          ...params\n        }\n      });\n\n      // Create default camera, don't overwrite any user-set state\n      if (!state.camera || state.camera === lastCamera && !is.equ(lastCamera, cameraOptions, shallowLoose)) {\n        lastCamera = cameraOptions;\n        const isCamera = cameraOptions instanceof THREE.Camera;\n        const camera = isCamera ? cameraOptions : orthographic ? new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new THREE.PerspectiveCamera(75, 0, 0.1, 1000);\n        if (!isCamera) {\n          camera.position.z = 5;\n          if (cameraOptions) applyProps(camera, cameraOptions);\n          // Always look at center by default\n          if (!state.camera && !(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n        }\n        state.set({\n          camera\n        });\n      }\n\n      // Set up scene (one time only!)\n      if (!state.scene) {\n        let scene;\n        if (sceneOptions instanceof THREE.Scene) {\n          scene = sceneOptions;\n        } else {\n          scene = new THREE.Scene();\n          if (sceneOptions) applyProps(scene, sceneOptions);\n        }\n        state.set({\n          scene: prepare(scene)\n        });\n      }\n\n      // Set up XR (one time only!)\n      if (!state.xr) {\n        // Handle frame behavior in WebXR\n        const handleXRFrame = (timestamp, frame) => {\n          const state = store.getState();\n          if (state.frameloop === 'never') return;\n          advance(timestamp, true, state, frame);\n        };\n\n        // Toggle render switching on session\n        const handleSessionChange = () => {\n          const state = store.getState();\n          state.gl.xr.enabled = state.gl.xr.isPresenting;\n          state.gl.xr.setAnimationLoop(state.gl.xr.isPresenting ? handleXRFrame : null);\n          if (!state.gl.xr.isPresenting) invalidate(state);\n        };\n\n        // WebXR session manager\n        const xr = {\n          connect() {\n            const gl = store.getState().gl;\n            gl.xr.addEventListener('sessionstart', handleSessionChange);\n            gl.xr.addEventListener('sessionend', handleSessionChange);\n          },\n          disconnect() {\n            const gl = store.getState().gl;\n            gl.xr.removeEventListener('sessionstart', handleSessionChange);\n            gl.xr.removeEventListener('sessionend', handleSessionChange);\n          }\n        };\n\n        // Subscribe to WebXR session events\n        if (gl.xr) xr.connect();\n        state.set({\n          xr\n        });\n      }\n\n      // Set shadowmap\n      if (gl.shadowMap) {\n        const oldEnabled = gl.shadowMap.enabled;\n        const oldType = gl.shadowMap.type;\n        gl.shadowMap.enabled = !!shadows;\n        if (is.boo(shadows)) {\n          gl.shadowMap.type = THREE.PCFSoftShadowMap;\n        } else if (is.str(shadows)) {\n          var _types$shadows;\n          const types = {\n            basic: THREE.BasicShadowMap,\n            percentage: THREE.PCFShadowMap,\n            soft: THREE.PCFSoftShadowMap,\n            variance: THREE.VSMShadowMap\n          };\n          gl.shadowMap.type = (_types$shadows = types[shadows]) != null ? _types$shadows : THREE.PCFSoftShadowMap;\n        } else if (is.obj(shadows)) {\n          Object.assign(gl.shadowMap, shadows);\n        }\n        if (oldEnabled !== gl.shadowMap.enabled || oldType !== gl.shadowMap.type) gl.shadowMap.needsUpdate = true;\n      }\n\n      // Safely set color management if available.\n      // Avoid accessing THREE.ColorManagement to play nice with older versions\n      const ColorManagement = getColorManagement();\n      if (ColorManagement) {\n        if ('enabled' in ColorManagement) ColorManagement.enabled = !legacy;else if ('legacyMode' in ColorManagement) ColorManagement.legacyMode = legacy;\n      }\n\n      // Set color space and tonemapping preferences\n      const LinearEncoding = 3000;\n      const sRGBEncoding = 3001;\n      applyProps(gl, {\n        outputEncoding: linear ? LinearEncoding : sRGBEncoding,\n        toneMapping: flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping\n      });\n\n      // Update color management state\n      if (state.legacy !== legacy) state.set(() => ({\n        legacy\n      }));\n      if (state.linear !== linear) state.set(() => ({\n        linear\n      }));\n      if (state.flat !== flat) state.set(() => ({\n        flat\n      }));\n\n      // Set gl props\n      if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, gl, shallowLoose)) applyProps(gl, glConfig);\n      // Store events internally\n      if (events && !state.events.handlers) state.set({\n        events: events(store)\n      });\n      // Check size, allow it to take on container bounds initially\n      const size = computeInitialSize(canvas, propsSize);\n      if (!is.equ(size, state.size, shallowLoose)) {\n        state.setSize(size.width, size.height, size.updateStyle, size.top, size.left);\n      }\n      // Check pixelratio\n      if (dpr && state.viewport.dpr !== calculateDpr(dpr)) state.setDpr(dpr);\n      // Check frameloop\n      if (state.frameloop !== frameloop) state.setFrameloop(frameloop);\n      // Check pointer missed\n      if (!state.onPointerMissed) state.set({\n        onPointerMissed\n      });\n      // Check performance\n      if (performance && !is.equ(performance, state.performance, shallowLoose)) state.set(state => ({\n        performance: {\n          ...state.performance,\n          ...performance\n        }\n      }));\n\n      // Set locals\n      onCreated = onCreatedCallback;\n      configured = true;\n      return this;\n    },\n    render(children) {\n      // The root has to be configured before it can be rendered\n      if (!configured) this.configure();\n      reconciler.updateContainer( /*#__PURE__*/React.createElement(Provider, {\n        store: store,\n        children: children,\n        onCreated: onCreated,\n        rootElement: canvas\n      }), fiber, null, () => undefined);\n      return store;\n    },\n    unmount() {\n      unmountComponentAtNode(canvas);\n    }\n  };\n}\nfunction render(children, canvas, config) {\n  console.warn('R3F.render is no longer supported in React 18. Use createRoot instead!');\n  const root = createRoot(canvas);\n  root.configure(config);\n  return root.render(children);\n}\nfunction Provider({\n  store,\n  children,\n  onCreated,\n  rootElement\n}) {\n  useIsomorphicLayoutEffect(() => {\n    const state = store.getState();\n    // Flag the canvas active, rendering will now begin\n    state.set(state => ({\n      internal: {\n        ...state.internal,\n        active: true\n      }\n    }));\n    // Notifiy that init is completed, the scene graph exists, but nothing has yet rendered\n    if (onCreated) onCreated(state);\n    // Connect events to the targets parent, this is done to ensure events are registered on\n    // a shared target, and not on the canvas itself\n    if (!store.getState().events.connected) state.events.connect == null ? void 0 : state.events.connect(rootElement);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  return /*#__PURE__*/React.createElement(context.Provider, {\n    value: store\n  }, children);\n}\nfunction unmountComponentAtNode(canvas, callback) {\n  const root = roots.get(canvas);\n  const fiber = root == null ? void 0 : root.fiber;\n  if (fiber) {\n    const state = root == null ? void 0 : root.store.getState();\n    if (state) state.internal.active = false;\n    reconciler.updateContainer(null, fiber, null, () => {\n      if (state) {\n        setTimeout(() => {\n          try {\n            var _state$gl, _state$gl$renderLists, _state$gl2, _state$gl3;\n            state.events.disconnect == null ? void 0 : state.events.disconnect();\n            (_state$gl = state.gl) == null ? void 0 : (_state$gl$renderLists = _state$gl.renderLists) == null ? void 0 : _state$gl$renderLists.dispose == null ? void 0 : _state$gl$renderLists.dispose();\n            (_state$gl2 = state.gl) == null ? void 0 : _state$gl2.forceContextLoss == null ? void 0 : _state$gl2.forceContextLoss();\n            if ((_state$gl3 = state.gl) != null && _state$gl3.xr) state.xr.disconnect();\n            dispose(state);\n            roots.delete(canvas);\n            if (callback) callback(canvas);\n          } catch (e) {\n            /* ... */\n          }\n        }, 500);\n      }\n    });\n  }\n}\nfunction createPortal(children, container, state) {\n  return /*#__PURE__*/React.createElement(Portal, {\n    key: container.uuid,\n    children: children,\n    container: container,\n    state: state\n  });\n}\nfunction Portal({\n  state = {},\n  children,\n  container\n}) {\n  /** This has to be a component because it would not be able to call useThree/useStore otherwise since\n   *  if this is our environment, then we are not in r3f's renderer but in react-dom, it would trigger\n   *  the \"R3F hooks can only be used within the Canvas component!\" warning:\n   *  <Canvas>\n   *    {createPortal(...)} */\n  const {\n    events,\n    size,\n    ...rest\n  } = state;\n  const previousRoot = useStore();\n  const [raycaster] = React.useState(() => new THREE.Raycaster());\n  const [pointer] = React.useState(() => new THREE.Vector2());\n  const inject = React.useCallback((rootState, injectState) => {\n    const intersect = {\n      ...rootState\n    }; // all prev state props\n\n    // Only the fields of \"rootState\" that do not differ from injectState\n    // Some props should be off-limits\n    // Otherwise filter out the props that are different and let the inject layer take precedence\n    Object.keys(rootState).forEach(key => {\n      if (\n      // Some props should be off-limits\n      privateKeys.includes(key) ||\n      // Otherwise filter out the props that are different and let the inject layer take precedence\n      // Unless the inject layer props is undefined, then we keep the root layer\n      rootState[key] !== injectState[key] && injectState[key]) {\n        delete intersect[key];\n      }\n    });\n    let viewport = undefined;\n    if (injectState && size) {\n      const camera = injectState.camera;\n      // Calculate the override viewport, if present\n      viewport = rootState.viewport.getCurrentViewport(camera, new THREE.Vector3(), size);\n      // Update the portal camera, if it differs from the previous layer\n      if (camera !== rootState.camera) updateCamera(camera, size);\n    }\n    return {\n      // The intersect consists of the previous root state\n      ...intersect,\n      // Portals have their own scene, which forms the root, a raycaster and a pointer\n      scene: container,\n      raycaster,\n      pointer,\n      mouse: pointer,\n      // Their previous root is the layer before it\n      previousRoot,\n      // Events, size and viewport can be overridden by the inject layer\n      events: {\n        ...rootState.events,\n        ...(injectState == null ? void 0 : injectState.events),\n        ...events\n      },\n      size: {\n        ...rootState.size,\n        ...size\n      },\n      viewport: {\n        ...rootState.viewport,\n        ...viewport\n      },\n      ...rest\n    };\n  }, [state]);\n  const [usePortalStore] = React.useState(() => {\n    // Create a mirrored store, based on the previous root with a few overrides ...\n    const previousState = previousRoot.getState();\n    const store = create((set, get) => ({\n      ...previousState,\n      scene: container,\n      raycaster,\n      pointer,\n      mouse: pointer,\n      previousRoot,\n      events: {\n        ...previousState.events,\n        ...events\n      },\n      size: {\n        ...previousState.size,\n        ...size\n      },\n      ...rest,\n      // Set and get refer to this root-state\n      set,\n      get,\n      // Layers are allowed to override events\n      setEvents: events => set(state => ({\n        ...state,\n        events: {\n          ...state.events,\n          ...events\n        }\n      }))\n    }));\n    return store;\n  });\n  React.useEffect(() => {\n    // Subscribe to previous root-state and copy changes over to the mirrored portal-state\n    const unsub = previousRoot.subscribe(prev => usePortalStore.setState(state => inject(prev, state)));\n    return () => {\n      unsub();\n      usePortalStore.destroy();\n    };\n  }, []);\n  React.useEffect(() => {\n    usePortalStore.setState(injectState => inject(previousRoot.getState(), injectState));\n  }, [inject]);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, reconciler.createPortal( /*#__PURE__*/React.createElement(context.Provider, {\n    value: usePortalStore\n  }, children), usePortalStore, null));\n}\nreconciler.injectIntoDevTools({\n  bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n  rendererPackageName: '@react-three/fiber',\n  version: React.version\n});\nconst act = React.unstable_act;\n\nexport { useFrame as A, Block as B, useGraph as C, useLoader as D, ErrorBoundary as E, useIsomorphicLayoutEffect as a, createRoot as b, createEvents as c, unmountComponentAtNode as d, extend as e, context as f, createPortal as g, reconciler as h, isRef as i, applyProps as j, dispose as k, invalidate as l, advance as m, addEffect as n, addAfterEffect as o, addTail as p, flushGlobalEffects as q, render as r, getRootState as s, threeTypes as t, useMutableCallback as u, act as v, roots as w, useInstanceHandle as x, useStore as y, useThree as z };\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const months = '[\"' + 'January,February,March,April,May,June,July,August,September,October,November,December'.split(',').join('\",\"') + '\"]';\nconst days = '[\"' + 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(',').join('\",\"') + '\"]';\nconst formats = {\n\tdatetime: 'MMMM d yyyy h:mm a',\n\tdate: 'MMMM d yyyy'\n};\n\nconst compiledTemplates = {};\n\n/**\n * See http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html for formatting conventions used\n *\n *Comments indicate the value returned for 3.05 pm on Tuesday 4th February 2014\n */\nconst formatReplacementsMap = {\n\tMMMM: 'months[date.getMonth()]', // e.g. February\n\tMMM: 'months[date.getMonth()].substr(0,3)', // Feb\n\tMM: 'pad2(date.getMonth() + 1, 2)', // 02\n\tM: '(date.getMonth() + 1)', // 2\n\tyyyy: 'date.getFullYear()', // 2014\n\tyy: '(\"\"+date.getFullYear()).substr(-2, 2)', // 14\n\tEEEE: 'days[date.getDay()]', // Tuesday\n\tEEE: 'days[date.getDay()].substr(0,3)', // Tue\n\td: 'date.getDate()', // 4\n\tdd: 'pad2(date.getDate())', // 04\n\tdo: 'ordinal(date.getDate())', // 4th\n\tm: 'date.getMinutes()', // 5\n\tmm: 'pad2(date.getMinutes())', // 05\n\th: '(((date.getHours() + 11) % 12) + 1)', // 3\n\thh: 'pad2(((date.getHours() + 11) % 12) + 1)', // 03\n\tH: 'date.getHours()', // 15\n\tHH: 'pad2(date.getHours())', // 15\n\ta: '(date.getHours() >= 12 ? \"pm\" : \"am\")' // pm\n};\n\nconst inSeconds = {\n\tminute: 60,\n\thour: 60 * 60,\n\tday: 24 * 60 * 60,\n\tweek: 7 * 24 * 60 * 60,\n\tmonth: 60 * 60 * 24 * 30,\n\tyear: 365 * 24 * 60 * 60\n};\n\nfunction compile(format) {\n\tconst tpl = formats[format] || format;\n\n\tlet funcString = 'var months= ' + months + ', days= ' + days + ';';\n\tfuncString += 'function pad2 (number) {return (\"0\" + number).slice(-2)}';\n\tfuncString += `function ordinal(number) {\n\t\tconst suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n\t\tconst v = number % 100;\n\t\treturn number + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n\t}`;\n\tfuncString += 'return \"' + tpl.replace(/\\\\?[a-z]+/ig, function (match) {\n\t\tif (match.charAt(0) === '\\\\') {\n\t\t\treturn match.substr(1);\n\t\t}\n\t\tconst replacer = formatReplacementsMap[match];\n\n\t\treturn replacer ? '\" + ' + replacer + ' + \"' : match;\n\t}) + '\"';\n\n\treturn (compiledTemplates[format] = new Function('date', funcString)); // eslint-disable-line no-new-func\n}\n\nconst ftDateFormat = {\n\ttoDate: function (date) {\n\t\tdate = date instanceof Date ? date : new Date(date);\n\t\tif (date.toString() !== 'Invalid Date') {\n\t\t\treturn date;\n\t\t}\n\t},\n\tasTodayOrYesterdayOrNothing: function (date) {\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, date);\n\n\t\tlet dateString;\n\n\t\t// If this was less than a day ago\n\t\tif (ftDateFormat.isToday(date, now, interval)) {\n\t\t\tdateString = 'today';\n\t\t} else if (ftDateFormat.isYesterday(date, now, interval)) {\n\t\t\tdateString = 'yesterday';\n\t\t} else {\n\t\t\tdateString = '';\n\t\t}\n\n\t\treturn dateString;\n\t},\n\tformat: function (date, dateFormat) {\n\t\tdateFormat = dateFormat || 'datetime';\n\t\tconst tpl = compiledTemplates[dateFormat] || compile(dateFormat);\n\t\tdate = ftDateFormat.toDate(date);\n\t\treturn date && tpl(date);\n\t},\n\ttimeAgo: function (date, interval, options) {\n\n\t\tdate = ftDateFormat.toDate(date);\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Accept an interval argument for backwards compatibility\n\t\tif (arguments.length === 2 && typeof interval === 'object') {\n\t\t\toptions = interval;\n\t\t\tinterval = options.interval;\n\t\t}\n\n\t\t// Default the interval option to the time since the given date\n\t\tif (!interval) {\n\t\t\tinterval = ftDateFormat.getSecondsBetween(new Date(), date);\n\t\t}\n\n\t\t// If a limit has been supplied and the interval is longer ago than that limit\n\t\tif (options && options.limit > 0 && (!interval || interval > options.limit)) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst abbreviated = options ? options.abbreviated : false;\n\n\t\tlet suffix = interval < 0 ? \"from now\" : \"ago\";\n\n\t\tinterval = Math.abs(interval);\n\n\t\tif (interval < inSeconds.minute) {\n\t\t\treturn `${abbreviated ? interval + 's' : interval + ' seconds'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.minute)) {\n\t\t\treturn `${abbreviated ? '1m' : 'a minute'} ${suffix}`;\n\t\t} else if (interval < (59 * inSeconds.minute)) {\n\t\t\treturn `${Math.round(interval / inSeconds.minute)}${abbreviated ? 'm' : ' minutes'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.hour)) {\n\t\t\treturn `${abbreviated ? '1h' : 'an hour'} ${suffix}`;\n\t\t} else if (interval < 22 * inSeconds.hour) {\n\t\t\treturn `${Math.round(interval / inSeconds.hour)}${abbreviated ? 'h' : ' hours'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1d' : 'a day'} ${suffix}`;\n\t\t} else if (interval < 25 * inSeconds.day) {\n\t\t\treturn `${Math.round(interval / inSeconds.day)}${abbreviated ? 'd' : ' days'} ${suffix}`;\n\t\t} else if (interval < (45 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1mth' : 'a month'} ${suffix}`;\n\t\t} else if (interval < 345 * inSeconds.day) {\n\t\t\treturn `${Math.round(interval / inSeconds.month)}${abbreviated ? 'mth' : ' months'} ${suffix}`;\n\t\t} else if (interval < (547 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1y' : 'a year'} ${suffix}`;\n\t\t} else {\n\t\t\treturn `${ Math.max(2, Math.floor(interval / inSeconds.year))}${abbreviated ? 'y' : ' years'} ${suffix}`;\n\t\t}\n\t},\n\ttimeAgoNoSeconds: function (date) {\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, date);\n\n\t\t// If this was less than a minute ago\n\t\tif (interval < 60) {\n\t\t\treturn 'Less than a minute ago';\n\t\t}\n\t\treturn ftDateFormat.timeAgo(date);\n\t},\n\tftTime: function (dateObj) {\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, dateObj);\n\t\tlet dateString;\n\n\t\t// If the date will occur in the next 5 minutes. This check is to allow for\n\t\t// reasonably differences in machine clocks.\n\t\tif (ftDateFormat.isNearFuture(interval)) {\n\t\t\tdateString = 'just now';\n\n\t\t\t// If it's beyond 5 minutes, fall back to printing the whole date, the machine\n\t\t\t// clock could be way out.\n\t\t} else if (ftDateFormat.isFarFuture(interval)) {\n\t\t\tdateString = ftDateFormat.format(dateObj, 'date');\n\n\t\t\t// Relative times for today or within the last 4 hours\n\t\t} else if (ftDateFormat.isToday(dateObj, now, interval) || (interval < (4 * inSeconds.hour))) {\n\t\t\tdateString = ftDateFormat.timeAgo(dateObj, interval);\n\n\t\t\t// 'Yesterday' for dates that occurred yesterday\n\t\t} else if (ftDateFormat.isYesterday(dateObj, now, interval)) {\n\t\t\tdateString = 'yesterday';\n\n\t\t\t// Else print the date\n\t\t} else {\n\t\t\tdateString = ftDateFormat.format(dateObj, 'date');\n\t\t}\n\n\t\treturn dateString;\n\t},\n\tgetSecondsBetween: function (time, otherTime) {\n\t\treturn Math.round((time - otherTime) / 1000);\n\t},\n\tisNearFuture: function (interval) {\n\t\t// If the interval within the next 5 minutes\n\t\treturn (interval < 0 && interval > -(5 * inSeconds.minute));\n\t},\n\tisFarFuture: function (interval) {\n\t\t// If the interval is further in the future than 5 minutes\n\t\treturn interval < -(5 * inSeconds.minute);\n\t},\n\tisToday: function (date, now, interval) {\n\t\tconst within24Hours = interval < inSeconds.day;\n\t\tconst sameDayOfWeek = now.getDay() === date.getDay();\n\t\treturn (within24Hours && sameDayOfWeek);\n\t},\n\tisYesterday: function (date, now, interval) {\n\t\tconst within48Hours = interval < 2 * inSeconds.day;\n\t\tconst consecutiveDaysOfTheWeek = now.getDay() === date.getDay() + 1;\n\t\treturn (within48Hours && consecutiveDaysOfTheWeek);\n\t},\n\tinSeconds\n};\n\nmodule.exports = ftDateFormat;\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport createDebounce from 'debounce';\n\nfunction useMeasure(_temp) {\n  let {\n    debounce,\n    scroll,\n    polyfill,\n    offsetSize\n  } = _temp === void 0 ? {\n    debounce: 0,\n    scroll: false,\n    offsetSize: false\n  } : _temp;\n  const ResizeObserver = polyfill || (typeof window === 'undefined' ? class ResizeObserver {} : window.ResizeObserver);\n\n  if (!ResizeObserver) {\n    throw new Error('This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills');\n  }\n\n  const [bounds, set] = useState({\n    left: 0,\n    top: 0,\n    width: 0,\n    height: 0,\n    bottom: 0,\n    right: 0,\n    x: 0,\n    y: 0\n  }); // keep all state in a ref\n\n  const state = useRef({\n    element: null,\n    scrollContainers: null,\n    resizeObserver: null,\n    lastBounds: bounds\n  }); // set actual debounce values early, so effects know if they should react accordingly\n\n  const scrollDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.scroll : null;\n  const resizeDebounce = debounce ? typeof debounce === 'number' ? debounce : debounce.resize : null; // make sure to update state only as long as the component is truly mounted\n\n  const mounted = useRef(false);\n  useEffect(() => {\n    mounted.current = true;\n    return () => void (mounted.current = false);\n  }); // memoize handlers, so event-listeners know when they should update\n\n  const [forceRefresh, resizeChange, scrollChange] = useMemo(() => {\n    const callback = () => {\n      if (!state.current.element) return;\n      const {\n        left,\n        top,\n        width,\n        height,\n        bottom,\n        right,\n        x,\n        y\n      } = state.current.element.getBoundingClientRect();\n      const size = {\n        left,\n        top,\n        width,\n        height,\n        bottom,\n        right,\n        x,\n        y\n      };\n\n      if (state.current.element instanceof HTMLElement && offsetSize) {\n        size.height = state.current.element.offsetHeight;\n        size.width = state.current.element.offsetWidth;\n      }\n\n      Object.freeze(size);\n      if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n    };\n\n    return [callback, resizeDebounce ? createDebounce(callback, resizeDebounce) : callback, scrollDebounce ? createDebounce(callback, scrollDebounce) : callback];\n  }, [set, offsetSize, scrollDebounce, resizeDebounce]); // cleanup current scroll-listeners / observers\n\n  function removeListeners() {\n    if (state.current.scrollContainers) {\n      state.current.scrollContainers.forEach(element => element.removeEventListener('scroll', scrollChange, true));\n      state.current.scrollContainers = null;\n    }\n\n    if (state.current.resizeObserver) {\n      state.current.resizeObserver.disconnect();\n      state.current.resizeObserver = null;\n    }\n  } // add scroll-listeners / observers\n\n\n  function addListeners() {\n    if (!state.current.element) return;\n    state.current.resizeObserver = new ResizeObserver(scrollChange);\n    state.current.resizeObserver.observe(state.current.element);\n\n    if (scroll && state.current.scrollContainers) {\n      state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {\n        capture: true,\n        passive: true\n      }));\n    }\n  } // the ref we expose to the user\n\n\n  const ref = node => {\n    if (!node || node === state.current.element) return;\n    removeListeners();\n    state.current.element = node;\n    state.current.scrollContainers = findScrollContainers(node);\n    addListeners();\n  }; // add general event listeners\n\n\n  useOnWindowScroll(scrollChange, Boolean(scroll));\n  useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n  useEffect(() => {\n    removeListeners();\n    addListeners();\n  }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n  useEffect(() => removeListeners, []);\n  return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n  useEffect(() => {\n    const cb = onWindowResize;\n    window.addEventListener('resize', cb);\n    return () => void window.removeEventListener('resize', cb);\n  }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n  useEffect(() => {\n    if (enabled) {\n      const cb = onScroll;\n      window.addEventListener('scroll', cb, {\n        capture: true,\n        passive: true\n      });\n      return () => void window.removeEventListener('scroll', cb, true);\n    }\n  }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n  const result = [];\n  if (!element || element === document.body) return result;\n  const {\n    overflow,\n    overflowX,\n    overflowY\n  } = window.getComputedStyle(element);\n  if ([overflow, overflowX, overflowY].some(prop => prop === 'auto' || prop === 'scroll')) result.push(element);\n  return [...result, ...findScrollContainers(element.parentElement)];\n} // Checks if element boundaries are equal\n\n\nconst keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nconst areBoundsEqual = (a, b) => keys.every(key => a[key] === b[key]);\n\nexport { useMeasure as default };\n","import * as React from \"react\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction traverseFiber(fiber, ascending, selector) {\n  if (!fiber)\n    return;\n  if (selector(fiber) === true)\n    return fiber;\n  let child = ascending ? fiber.return : fiber.child;\n  while (child) {\n    const match = traverseFiber(child, ascending, selector);\n    if (match)\n      return match;\n    child = ascending ? null : child.sibling;\n  }\n}\nfunction wrapContext(context) {\n  try {\n    return Object.defineProperties(context, {\n      _currentRenderer: {\n        get() {\n          return null;\n        },\n        set() {\n        }\n      },\n      _currentRenderer2: {\n        get() {\n          return null;\n        },\n        set() {\n        }\n      }\n    });\n  } catch (_) {\n    return context;\n  }\n}\nconst FiberContext = wrapContext(React.createContext(null));\nclass FiberProvider extends React.Component {\n  render() {\n    return /* @__PURE__ */ React.createElement(FiberContext.Provider, {\n      value: this._reactInternals\n    }, this.props.children);\n  }\n}\nconst { ReactCurrentOwner, ReactCurrentDispatcher } = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nfunction useFiber() {\n  const root = React.useContext(FiberContext);\n  if (root === null)\n    throw new Error(\"its-fine: useFiber must be called within a <FiberProvider />!\");\n  const id = React.useId();\n  const fiber = React.useMemo(() => {\n    for (const maybeFiber of [ReactCurrentOwner == null ? void 0 : ReactCurrentOwner.current, root, root == null ? void 0 : root.alternate]) {\n      if (!maybeFiber)\n        continue;\n      const fiber2 = traverseFiber(maybeFiber, false, (node) => {\n        let state = node.memoizedState;\n        while (state) {\n          if (state.memoizedState === id)\n            return true;\n          state = state.next;\n        }\n      });\n      if (fiber2)\n        return fiber2;\n    }\n  }, [root, id]);\n  return fiber;\n}\nfunction useContainer() {\n  const fiber = useFiber();\n  const root = React.useMemo(\n    () => traverseFiber(fiber, true, (node) => {\n      var _a;\n      return ((_a = node.stateNode) == null ? void 0 : _a.containerInfo) != null;\n    }),\n    [fiber]\n  );\n  return root == null ? void 0 : root.stateNode.containerInfo;\n}\nfunction useNearestChild(type) {\n  const fiber = useFiber();\n  const childRef = React.useRef();\n  React.useLayoutEffect(() => {\n    var _a;\n    childRef.current = (_a = traverseFiber(\n      fiber,\n      false,\n      (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n    )) == null ? void 0 : _a.stateNode;\n  }, [fiber]);\n  return childRef;\n}\nfunction useNearestParent(type) {\n  const fiber = useFiber();\n  const parentRef = React.useRef();\n  React.useLayoutEffect(() => {\n    var _a;\n    parentRef.current = (_a = traverseFiber(\n      fiber,\n      true,\n      (node) => typeof node.type === \"string\" && (type === void 0 || node.type === type)\n    )) == null ? void 0 : _a.stateNode;\n  }, [fiber]);\n  return parentRef;\n}\nfunction useContextMap() {\n  var _a, _b;\n  const fiber = useFiber();\n  const [contextMap] = React.useState(() => /* @__PURE__ */ new Map());\n  contextMap.clear();\n  let node = fiber;\n  while (node) {\n    const context = (_a = node.type) == null ? void 0 : _a._context;\n    if (context && context !== FiberContext && !contextMap.has(context)) {\n      contextMap.set(context, (_b = ReactCurrentDispatcher == null ? void 0 : ReactCurrentDispatcher.current) == null ? void 0 : _b.readContext(wrapContext(context)));\n    }\n    node = node.return;\n  }\n  return contextMap;\n}\nfunction useContextBridge() {\n  const contextMap = useContextMap();\n  return React.useMemo(\n    () => Array.from(contextMap.keys()).reduce(\n      (Prev, context) => (props) => /* @__PURE__ */ React.createElement(Prev, null, /* @__PURE__ */ React.createElement(context.Provider, __spreadProps(__spreadValues({}, props), {\n        value: contextMap.get(context)\n      }))),\n      (props) => /* @__PURE__ */ React.createElement(FiberProvider, __spreadValues({}, props))\n    ),\n    [contextMap]\n  );\n}\nexport {\n  FiberProvider,\n  traverseFiber,\n  useContainer,\n  useContextBridge,\n  useContextMap,\n  useFiber,\n  useNearestChild,\n  useNearestParent\n};\n//# sourceMappingURL=index.js.map\n","import { c as createEvents, e as extend, u as useMutableCallback, a as useIsomorphicLayoutEffect, b as createRoot, i as isRef, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from './index-22ee0173.esm.js';\nexport { t as ReactThreeFiber, w as _roots, v as act, o as addAfterEffect, n as addEffect, p as addTail, m as advance, j as applyProps, f as context, c as createEvents, g as createPortal, b as createRoot, k as dispose, e as extend, q as flushGlobalEffects, s as getRootState, l as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, A as useFrame, C as useGraph, x as useInstanceHandle, D as useLoader, y as useStore, z as useThree } from './index-22ee0173.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as THREE from 'three';\nimport useMeasure from 'react-use-measure';\nimport { FiberProvider, useContextBridge } from 'its-fine';\nimport 'react-reconciler/constants';\nimport 'zustand';\nimport 'react-reconciler';\nimport 'scheduler';\nimport 'suspend-react';\n\nconst DOM_EVENTS = {\n  onClick: ['click', false],\n  onContextMenu: ['contextmenu', false],\n  onDoubleClick: ['dblclick', false],\n  onWheel: ['wheel', true],\n  onPointerDown: ['pointerdown', true],\n  onPointerUp: ['pointerup', true],\n  onPointerLeave: ['pointerleave', true],\n  onPointerMove: ['pointermove', true],\n  onPointerCancel: ['pointercancel', true],\n  onLostPointerCapture: ['lostpointercapture', true]\n};\n\n/** Default R3F event manager for web */\nfunction createPointerEvents(store) {\n  const {\n    handlePointer\n  } = createEvents(store);\n  return {\n    priority: 1,\n    enabled: true,\n    compute(event, state, previous) {\n      // https://github.com/pmndrs/react-three-fiber/pull/782\n      // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n      state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n      state.raycaster.setFromCamera(state.pointer, state.camera);\n    },\n    connected: undefined,\n    handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({\n      ...acc,\n      [key]: handlePointer(key)\n    }), {}),\n    update: () => {\n      var _internal$lastEvent;\n      const {\n        events,\n        internal\n      } = store.getState();\n      if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);\n    },\n    connect: target => {\n      var _events$handlers;\n      const {\n        set,\n        events\n      } = store.getState();\n      events.disconnect == null ? void 0 : events.disconnect();\n      set(state => ({\n        events: {\n          ...state.events,\n          connected: target\n        }\n      }));\n      Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n        const [eventName, passive] = DOM_EVENTS[name];\n        target.addEventListener(eventName, event, {\n          passive\n        });\n      });\n    },\n    disconnect: () => {\n      const {\n        set,\n        events\n      } = store.getState();\n      if (events.connected) {\n        var _events$handlers2;\n        Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n          if (events && events.connected instanceof HTMLElement) {\n            const [eventName] = DOM_EVENTS[name];\n            events.connected.removeEventListener(eventName, event);\n          }\n        });\n        set(state => ({\n          events: {\n            ...state.events,\n            connected: undefined\n          }\n        }));\n      }\n    }\n  };\n}\n\nconst CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({\n  children,\n  fallback,\n  resize,\n  style,\n  gl,\n  events = createPointerEvents,\n  eventSource,\n  eventPrefix,\n  shadows,\n  linear,\n  flat,\n  legacy,\n  orthographic,\n  frameloop,\n  dpr,\n  performance,\n  raycaster,\n  camera,\n  onPointerMissed,\n  onCreated,\n  ...props\n}, forwardedRef) {\n  // Create a known catalogue of Threejs-native elements\n  // This will include the entire THREE namespace by default, users can extend\n  // their own elements by using the createRoot API instead\n  React.useMemo(() => extend(THREE), []);\n  const Bridge = useContextBridge();\n  const [containerRef, containerRect] = useMeasure({\n    scroll: true,\n    debounce: {\n      scroll: 50,\n      resize: 0\n    },\n    ...resize\n  });\n  const canvasRef = React.useRef(null);\n  const divRef = React.useRef(null);\n  React.useImperativeHandle(forwardedRef, () => canvasRef.current);\n  const handlePointerMissed = useMutableCallback(onPointerMissed);\n  const [block, setBlock] = React.useState(false);\n  const [error, setError] = React.useState(false);\n\n  // Suspend this component if block is a promise (2nd run)\n  if (block) throw block;\n  // Throw exception outwards if anything within canvas throws\n  if (error) throw error;\n  const root = React.useRef(null);\n  useIsomorphicLayoutEffect(() => {\n    const canvas = canvasRef.current;\n    if (containerRect.width > 0 && containerRect.height > 0 && canvas) {\n      if (!root.current) root.current = createRoot(canvas);\n      root.current.configure({\n        gl,\n        events,\n        shadows,\n        linear,\n        flat,\n        legacy,\n        orthographic,\n        frameloop,\n        dpr,\n        performance,\n        raycaster,\n        camera,\n        size: containerRect,\n        // Pass mutable reference to onPointerMissed so it's free to update\n        onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),\n        onCreated: state => {\n          // Connect to event source\n          state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef(eventSource) ? eventSource.current : eventSource : divRef.current);\n          // Set up compute function\n          if (eventPrefix) {\n            state.setEvents({\n              compute: (event, state) => {\n                const x = event[eventPrefix + 'X'];\n                const y = event[eventPrefix + 'Y'];\n                state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);\n                state.raycaster.setFromCamera(state.pointer, state.camera);\n              }\n            });\n          }\n          // Call onCreated callback\n          onCreated == null ? void 0 : onCreated(state);\n        }\n      });\n      root.current.render( /*#__PURE__*/React.createElement(Bridge, null, /*#__PURE__*/React.createElement(ErrorBoundary, {\n        set: setError\n      }, /*#__PURE__*/React.createElement(React.Suspense, {\n        fallback: /*#__PURE__*/React.createElement(Block, {\n          set: setBlock\n        })\n      }, children))));\n    }\n  });\n  React.useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) return () => unmountComponentAtNode(canvas);\n  }, []);\n\n  // When the event source is not this div, we need to set pointer-events to none\n  // Or else the canvas will block events from reaching the event source\n  const pointerEvents = eventSource ? 'none' : 'auto';\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: divRef,\n    style: {\n      position: 'relative',\n      width: '100%',\n      height: '100%',\n      overflow: 'hidden',\n      pointerEvents,\n      ...style\n    }\n  }, props), /*#__PURE__*/React.createElement(\"div\", {\n    ref: containerRef,\n    style: {\n      width: '100%',\n      height: '100%'\n    }\n  }, /*#__PURE__*/React.createElement(\"canvas\", {\n    ref: canvasRef,\n    style: {\n      display: 'block'\n    }\n  }, fallback)));\n});\n\n/**\n * A DOM canvas which accepts threejs elements as children.\n * @see https://docs.pmnd.rs/react-three-fiber/api/canvas\n */\nconst Canvas = /*#__PURE__*/React.forwardRef(function CanvasWrapper(props, ref) {\n  return /*#__PURE__*/React.createElement(FiberProvider, null, /*#__PURE__*/React.createElement(CanvasImpl, _extends({}, props, {\n    ref: ref\n  })));\n});\n\nexport { Canvas, createPointerEvents as events };\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","\nconst settings = {config:{}};\n\n/**\n * Very basic implementation of deep clone, and only supports simple POJO objects and\n * native arrays.\n *\n * @param  {*} value Any value\n * @returns {*}       Copy of value\n * @private\n */\nfunction clone(value) {\n\tif (value === undefined) {\n\t\treturn value;\n\t}\n\tswitch (Object.prototype.toString.call(value)) {\n\t\tcase '[object Object]':\n\t\t\treturn JSON.parse(JSON.stringify(value));\n\t\tcase '[object Array]':\n\t\t\treturn [].slice.call(value);\n\t\tdefault:\n\t\t\treturn value;\n\t}\n}\n\n/**\n * Saves a value. Stores a copy rather than a reference, to avoid mutations leaking.\n *\n * @param {string} key - The key to use to store the object\n * @param {*} value - The value\n * @returns {void}\n */\nfunction setValue(key, value) {\n\tsettings[key] = clone(value);\n}\n\n/**\n * Retrieves a value from the settings object. Returns a copy rather than reference, to\n * avoid mutations leaking.\n *\n * @param {string} key - The key to get\n * @returns {*} - The setting.\n */\nfunction getValue(key) {\n\treturn clone(settings[key]);\n}\n\n/**\n * Deletes a value\n *\n * @param  {string} key - The key to delete\n * @returns {void}\n */\nfunction destroy(key) {\n\tdelete settings[key];\n}\nconst set = setValue;\nconst get = getValue;\n\nexport {\n\tset,\n\tget,\n\tdestroy\n};\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 toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n","import * as Utils from '@financial-times/o-utils';\n\nlet debug;\n\n/**\n *\n * @param {string} eventType the name of the event\n * @param {object} data the payload of the event\n * @param {EventTarget} target the target of the event\n */\nfunction broadcast(eventType, data, target) {\n\ttarget = target || document.body;\n\n\tif (debug) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log('o-viewport', eventType, data);\n\t}\n\n\ttarget.dispatchEvent(\n\t\tnew CustomEvent('oViewport.' + eventType, {\n\t\t\tdetail: data,\n\t\t\tbubbles: true,\n\t\t})\n\t);\n}\n\n/**\n * Get the viewport height.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar height.\n * @returns {number} viewport height\n */\nfunction getHeight(ignoreScrollbars) {\n\treturn ignoreScrollbars\n\t\t? document.documentElement.clientHeight\n\t\t: Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n}\n\n/**\n * Get the viewport width.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width\n * @returns {number} viewport width\n */\nfunction getWidth(ignoreScrollbars) {\n\treturn ignoreScrollbars\n\t\t? document.documentElement.clientWidth\n\t\t: Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n}\n\n/**\n * Viewport size.\n *\n * @typedef {object} Size\n * @property {number} height viewport height\n * @property {number} width viewport width\n */\n\n/**\n * Get the viewport width and height.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width/height.\n * @returns {Size} viewport width and height object\n */\nfunction getSize(ignoreScrollbars) {\n\treturn {\n\t\theight: getHeight(ignoreScrollbars),\n\t\twidth: getWidth(ignoreScrollbars),\n\t};\n}\n\n/**\n * Scroll position.\n *\n * @typedef {object} ScrollPosition\n * @property {number} height - `document.body.scrollHeight`\n * @property {number} width - `document.body.scrollWidth`\n * @property {number} left - `window.pageXOffset || window.scrollX`\n * @property {number} top - `window.pageYOffset || window.scrollY`\n */\n\n/**\n * @returns {ScrollPosition} current scroll info\n */\nfunction getScrollPosition() {\n\treturn {\n\t\theight: document.body.scrollHeight,\n\t\twidth: document.body.scrollWidth,\n\t\tleft: window.pageXOffset || window.scrollX,\n\t\ttop: window.pageYOffset || window.scrollY,\n\t};\n}\n\n/**\n * @returns {string} - 'portrait' or 'landscape'\n */\nfunction getOrientation() {\n\tconst orientation = window.screen.orientation;\n\tif (orientation) {\n\t\treturn typeof orientation === 'string'\n\t\t\t? orientation.split('-')[0]\n\t\t\t: orientation.type.split('-')[0];\n\t} else if (window.matchMedia) {\n\t\treturn window.matchMedia('(orientation: portrait)').matches\n\t\t\t? 'portrait'\n\t\t\t: 'landscape';\n\t} else {\n\t\treturn getHeight() >= getWidth() ? 'portrait' : 'landscape';\n\t}\n}\n\n/**\n * @returns {boolean} - true if the viewport is visible\n */\nfunction getVisibility() {\n\treturn document.hidden;\n}\n\nexport default {\n\tdebug: function () {\n\t\tdebug = true;\n\t},\n\tbroadcast,\n\tgetWidth,\n\tgetHeight,\n\tgetSize,\n\tgetScrollPosition,\n\tgetVisibility,\n\tgetOrientation,\n\tdebounce: Utils.debounce,\n\tthrottle: Utils.throttle,\n};\n","import utils from './src/utils.js';\n\nconst throttle = utils.throttle;\nconst debounce = utils.debounce;\n\nconst listeners = {};\nconst intervals = {\n\tresize: 100,\n\torientation: 100,\n\tvisibility: 100,\n\tscroll: 100\n};\n\n/**\n *\n * @param {string} eventType - The type of event to throttle for this duration.\n * @param {number} interval - The duration to throttle in ms.\n * @returns {void}\n * @example\n * \t   // throttle for different events at different durations\n *     setThrottleInterval('scroll', 100)\n *     setThrottleInterval('resize', 300)\n *     setThrottleInterval('orientation', 30)\n *     setThrottleInterval('visibility', 30)\n * \t\t// throttle all events at 30ms\n *     setThrottleInterval(30);\n */\nfunction setThrottleInterval(eventType, interval) {\n\tif (typeof arguments[0] === 'number') {\n\t\tsetThrottleInterval('scroll', arguments[0]);\n\t\tsetThrottleInterval('resize', arguments[1]);\n\t\tsetThrottleInterval('orientation', arguments[2]);\n\t\tsetThrottleInterval('visibility', arguments[3]);\n\t} else if (interval) {\n\t\tintervals[eventType] = interval;\n\t}\n}\n\n/**\n * @access private\n */\nfunction listenToResize() {\n\tif (listeners.resize) {\n\t\treturn;\n\t}\n\tconst eventType = 'resize';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('resize', {\n\t\t\tviewport: utils.getSize(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.resize);\n\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.resize = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToOrientation() {\n\n\tif (listeners.orientation) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'orientationchange';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('orientation', {\n\t\t\tviewport: utils.getSize(),\n\t\t\torientation: utils.getOrientation(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.orientation);\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.orientation = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToVisibility() {\n\n\tif (listeners.visibility) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'visibilitychange';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('visibility', {\n\t\t\thidden: utils.getVisibility(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.visibility);\n\n\twindow.addEventListener(eventType, handler);\n\n\tlisteners.visibility = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToScroll() {\n\n\tif (listeners.scroll) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'scroll';\n\tconst handler = throttle(function(ev) {\n\t\tconst scrollPos = utils.getScrollPosition();\n\t\tutils.broadcast('scroll', {\n\t\t\tviewport: utils.getSize(),\n\t\t\tscrollHeight: scrollPos.height,\n\t\t\tscrollLeft: scrollPos.left,\n\t\t\tscrollTop: scrollPos.top,\n\t\t\tscrollWidth: scrollPos.width,\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.scroll);\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.scroll = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * Start listening for an event(s).\n *\n * @param {string} eventType - The event to start listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n *\n * \t\t// It is now possible to listen for debounce o-viewport events such as `oViewport.orientation`.\n *      document.body.addEventListener('oViewport.orientation', function(event) {\n *      \tconsole.log(event.type); // oViewport.orientation\n *      });\n */\nfunction listenTo(eventType) {\n\tif (eventType === 'resize' || eventType === 'all') {\n\t\tlistenToResize();\n\t}\n\n\tif (eventType === 'scroll' || eventType === 'all') {\n\t\tlistenToScroll();\n\t}\n\n\tif (eventType === 'orientation' || eventType === 'all') {\n\t\tlistenToOrientation();\n\t}\n\n\tif (eventType === 'visibility' || eventType === 'all') {\n\t\tlistenToVisibility();\n\t}\n}\n\n/**\n * Stop listening for an event(s).\n *\n * @param {string} eventType - The event to stop listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n * \t\t// We're done. Stop listening for all events.\n * \t\toViewport.stopListeningTo('all');\n */\nfunction stopListeningTo(eventType) {\n\tif (eventType === 'all') {\n\t\tObject.keys(listeners).forEach(stopListeningTo);\n\t} else if (listeners[eventType]) {\n\t\twindow.removeEventListener(listeners[eventType].eventType, listeners[eventType].handler);\n\t\tdelete listeners[eventType];\n\t}\n}\n\nexport default {\n\tdebug: function () {\n\t\tutils.debug();\n\t},\n\tlistenTo,\n\tstopListeningTo,\n\tsetThrottleInterval,\n\tgetOrientation: utils.getOrientation,\n\tgetSize: utils.getSize,\n\tgetScrollPosition: utils.getScrollPosition,\n\tgetVisibility: utils.getVisibility\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-reconciler-constants.production.min.js');\n} else {\n  module.exports = require('./cjs/react-reconciler-constants.development.js');\n}\n","/**\n *\n * Debounces function so it is only called after n milliseconds\n * without it not being called\n *\n * @example\n * Utils.debounce(myFunction() {}, 100);\n *\n * @param {Function} func - Function to be debounced\n * @param {number} wait - Time in miliseconds\n *\n * @returns {Function} - Debounced function\n */\nfunction debounce(func, wait) {\n\tlet timeout;\n\treturn function () {\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tfunc.apply(this, args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\n/**\n *\n * Throttle function so it is only called once every n milliseconds\n *\n * @example\n * Utils.throttle(myFunction() {}, 100);\n *\n * @param {Function} func - Function to be throttled\n * @param {number} wait - Time in miliseconds\n *\n * @returns {Function} - Throttled function\n */\nfunction throttle(func, wait) {\n\tlet timeout;\n\treturn function () {\n\t\tif (timeout) {\n\t\t\treturn;\n\t\t}\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tfunc.apply(this, args);\n\t\t};\n\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\n/**\n * Generates a unique ID string by concatenating the given component name, prefix, and a random number.\n *\n * @param {string} componentName - The name of the component to be included in the ID string.\n * @returns {function} A function that takes a prefix string and returns a unique ID string.\n *\n * @example\n *\n * const generateId = uidBuilder('myComponent');\n * const id = generateId('prefix');\n * console.log(id); // 'myComponent-prefix1234567890'\n */\n\nconst uidBuilder = (componentName) => prefix => {\n\tconst uid = String(Math.random()).split('.')[1];\n\treturn `${componentName}-${prefix}${uid}`;\n};\n\n\nexport {\n\tdebounce,\n\tthrottle,\n\tuidBuilder\n};\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n  if (arrA === arrB) return true;\n  if (!arrA || !arrB) return false;\n  const len = arrA.length;\n  if (arrB.length !== len) return false;\n\n  for (let i = 0; i < len; i++) if (!equal(arrA[i], arrB[i])) return false;\n\n  return true;\n}\n\nconst globalCache = [];\n\nfunction query(fn, keys, preload = false, config = {}) {\n  for (const entry of globalCache) {\n    // Find a match\n    if (shallowEqualArrays(keys, entry.keys, entry.equal)) {\n      // If we're pre-loading and the element is present, just return\n      if (preload) return undefined; // If an error occurred, throw\n\n      if (Object.prototype.hasOwnProperty.call(entry, 'error')) throw entry.error; // If a response was successful, return\n\n      if (Object.prototype.hasOwnProperty.call(entry, 'response')) return entry.response; // If the promise is still unresolved, throw\n\n      if (!preload) throw entry.promise;\n    }\n  } // The request is new or has changed.\n\n\n  const entry = {\n    keys,\n    equal: config.equal,\n    promise: // Execute the promise\n    fn(...keys) // When it resolves, store its value\n    .then(response => entry.response = response) // Remove the entry if a lifespan was given\n    .then(() => {\n      if (config.lifespan && config.lifespan > 0) {\n        setTimeout(() => {\n          const index = globalCache.indexOf(entry);\n          if (index !== -1) globalCache.splice(index, 1);\n        }, config.lifespan);\n      }\n    }) // Store caught errors, they will be thrown in the render-phase to bubble into an error-bound\n    .catch(error => entry.error = error)\n  }; // Register the entry\n\n  globalCache.push(entry); // And throw the promise, this yields control back to React\n\n  if (!preload) throw entry.promise;\n  return undefined;\n}\n\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\n\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\n\nconst peek = keys => {\n  var _globalCache$find;\n\n  return (_globalCache$find = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal))) == null ? void 0 : _globalCache$find.response;\n};\n\nconst clear = keys => {\n  if (keys === undefined || keys.length === 0) globalCache.splice(0, globalCache.length);else {\n    const entry = globalCache.find(entry => shallowEqualArrays(keys, entry.keys, entry.equal));\n\n    if (entry) {\n      const index = globalCache.indexOf(entry);\n      if (index !== -1) globalCache.splice(index, 1);\n    }\n  }\n};\n\nexport { clear, peek, preload, suspend };\n","class Target {\n\n\tconstructor(toggle){\n\t\tthis.targetEl = toggle.targetEl;\n\t\tthis.toggles = [];\n\t}\n\n\taddToggle(toggle) {\n\t\tthis.toggles.push(toggle);\n\t}\n\n\tremoveToggle(toggle) {\n\t\tconst togglePosition = this.toggles.indexOf(toggle);\n\t\tthis.toggles = this.toggles.slice(0, togglePosition).concat(this.toggles.slice(togglePosition +1));\n\t\tif (this.toggles.length === 0) {\n\t\t\t// If that was the last/only toggle that controlled this target then ensure\n\t\t\t// this target is open so it doesn't get stuck in the closed position\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\topen() {\n\t\tthis.targetEl.setAttribute('aria-hidden', 'false');\n\t\tthis.targetEl.classList.add('o-toggle--active');\n\t\t// Set every toggle that controls this target to be open\n\t\tthis.toggles.forEach((toggle) => {\n\t\t\ttoggle.open();\n\t\t});\n\t}\n\n\tclose() {\n\t\tthis.targetEl.setAttribute('aria-hidden', 'true');\n\t\tthis.targetEl.classList.remove('o-toggle--active');\n\n\t\t// Set every toggle that controls this target to be closed\n\t\tthis.toggles.forEach((toggle) => {\n\t\t\ttoggle.close();\n\t\t});\n\t}\n\n\ttoggle(){\n\t\tif (this.isOpen()){\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tisOpen() {\n\t\treturn this.targetEl.classList.contains('o-toggle--active');\n\t}\n}\n\nexport default Target;\n","import Target from './target.js';\n\n// Some assistive technologies, like screen readers, suggest to press 'space'\n// when interacting with a link with a role of 'button'.\n// We need to ensure that we replicate this functionality that exists on a button element.\nfunction handleSpaceKeydown (e) {\n\t// if the pressed key is a space, we'll simulate a click\n\tif (e.keyCode === 32) {\n\t\tthis.toggle(e);\n\t}\n}\n\nclass Toggle {\n\n\tconstructor(toggleEl, config) {\n\t\tif (!Toggle._targets) {\n\t\t\tToggle._targets = new Map();\n\t\t}\n\n\t\tif (!toggleEl) {\n\t\t\treturn;\n\t\t} else if (!(toggleEl instanceof HTMLElement)) {\n\t\t\ttoggleEl = document.querySelector(toggleEl);\n\t\t}\n\n\t\tif (toggleEl.hasAttribute('data-o-toggle--js')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!config) {\n\t\t\tconfig = {};\n\t\t\t// Try to get config set declaratively on the element\n\t\t\tArray.prototype.forEach.call(toggleEl.attributes, (attr) => {\n\t\t\t\tif (attr.name.indexOf('data-o-toggle') === 0) {\n\t\t\t\t\t// Remove the prefix part of the data attribute name\n\t\t\t\t\tconst key = attr.name.replace('data-o-toggle-', '');\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n\t\t\t\t\t\t// We also replace all ' with \" so JSON strings are parsed correctly\n\t\t\t\t\t\tconfig[key] = JSON.parse(attr.value.replace(/\\'/g, '\"'));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconfig[key] = attr.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Set the toggle callback if its a string.\n\t\tif (config.callback && typeof config.callback === 'string') {\n\t\t\t// Error if the callback is a string and a global function of that name does not exist.\n\t\t\tif (typeof window[config.callback] !== 'function') {\n\t\t\t\tthrow new Error(`Could not find o-toggle callback \"${config.callback}\".`);\n\t\t\t}\n\t\t\tthis.callback = window[config.callback];\n\t\t}\n\t\t// Set the toggle callback if its a funciton.\n\t\tif (config.callback && typeof config.callback === 'function') {\n\t\t\tthis.callback = config.callback;\n\t\t}\n\t\t// Error if some callback value has been given but has not been set.\n\t\tif (config.callback && !this.callback) {\n\t\t\tthrow new Error(`The o-toggle callback must be a string or function.`);\n\t\t}\n\n\t\t// Set the toggle element.\n\t\tthis.toggleEl = toggleEl;\n\n\t\tif (this.toggleEl.nodeName === 'A') {\n\t\t\tthis.toggleEl.setAttribute('role', 'button');\n\t\t\tthis.toggleEl.addEventListener('keydown', handleSpaceKeydown.bind(this));\n\t\t\t// If a user drags their mouse slightly when trying to interact with the toggle\n\t\t\t// it will trigger the 'drag and drop' functionality.\n\t\t\t// Regular buttons prevent this and ensure as long as the mouse is still above the\n\t\t\t// button that the click will register.\n\t\t\t// This will help users with motor impairments and those less familiar with a trackpad.\n\t\t\tthis.toggleEl.setAttribute('draggable', 'false');\n\t\t}\n\n\t\tthis.toggle = this.toggle.bind(this);\n\t\tthis.toggleEl.addEventListener('click', this.toggle);\n\n\t\tthis.toggleEl.setAttribute('data-o-toggle--js', 'true');\n\n\t\tthis.targetEl = config.target;\n\t\tif (!(this.targetEl instanceof HTMLElement)) {\n\t\t\tthis.targetEl = document.querySelector(this.targetEl);\n\t\t}\n\n\t\tif (Toggle._targets.get(this.targetEl) === undefined) {\n\t\t\tthis.target = new Toggle.Target(this);\n\t\t\tToggle._targets.set(this.targetEl, this.target);\n\t\t} else {\n\t\t\tthis.target = Toggle._targets.get(this.targetEl);\n\t\t}\n\n\t\tthis.target.addToggle(this);\n\t\tthis.target.close();\n\t}\n\n\topen() {\n\t\tthis.toggleEl.setAttribute('aria-expanded', 'true');\n\t}\n\n\tclose() {\n\t\tthis.toggleEl.setAttribute('aria-expanded', 'false');\n\t}\n\n\t// toggle is bound to the Toggle instance in the constructor\n\ttoggle(e) {\n\n\t\tthis.target.toggle();\n\n\t\tif(e) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this.callback){\n\t\t\tconst stateName = this.target.isOpen() ? 'open' : 'close';\n\t\t\tthis.callback(stateName, e);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.toggleEl.nodeName === 'A') {\n\t\t\tthis.toggleEl.removeEventListener('keydown', handleSpaceKeydown);\n\t\t}\n\t\tthis.toggleEl.removeEventListener('click', this.toggle);\n\t\tthis.toggleEl.removeAttribute('aria-expanded');\n\t\tthis.toggleEl.removeAttribute('role');\n\t\tthis.toggleEl.removeAttribute('data-o-toggle--js');\n\n\t\tthis.target.removeToggle(this);\n\n\t\tthis.target = undefined;\n\t\tthis.toggleEl = undefined;\n\t\tthis.callback = undefined;\n\t}\n\n\tstatic init(el, config) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t} else if (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tconst toggleEls = el.querySelectorAll('[data-o-component=\"o-toggle\"]');\n\t\tconst toggles = [];\n\t\tfor (const toggleEl of toggleEls) {\n\t\t\tif (!toggleEl.hasAttribute('data-o-toggle--js')) {\n\t\t\t\ttoggles.push(new Toggle(toggleEl, config));\n\t\t\t}\n\t\t}\n\t\treturn toggles;\n\t}\n}\n\nToggle.Target = Target;\nexport default Toggle;\n","import Toggle from './src/js/toggle.js';\n\nconst constructAll = () => {\n\tToggle.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\n\nexport default Toggle;\n","import {broadcast, containsCircularPaths, decode, encode, findCircularPathsIn, is} from '../utils.js';\n\n/**\n * Class for storing data\n * Will choose the 'best' storage method available. Can also specify a type of storage.\n *\n * @class  Store\n * @param {string} name - The name of the store\n * @param {object} config - Optional, config object for extra configuration\n * @param {string} [config.nameOverride] - The internal name for the store\n * @param {string} [config.domain] - The domain that should be used to store cookies on\n */\nconst Store = function (name, config = {}) {\n\n\t/**\n\t * Internal Storage key prefix.\n\t */\n\tconst keyPrefix = 'o-tracking';\n\n\n\tif (typeof name !== 'string' || name === '') {\n\t\tconst undefinedName = new Error('You must specify a name for the store.');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: undefinedName.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow undefinedName;\n\t}\n\n\tthis.config = Object.assign({}, config);\n\n\t/**\n\t * Store data.\n\t */\n\tthis.data = null;\n\n\t/**\n\t * The key/name of this store.\n\t */\n\tthis.storageKey = this.config.nameOverride ? this.config.nameOverride : [keyPrefix, name].join('_');\n\n\t/**\n\t * The storage method to use.\n\t *\n\t * @type {object}\n\t */\n\tthis.storage = {\n\t\t_type: 'localStorage',\n\t\tload: function (name) {\n\t\t\treturn window.localStorage.getItem(name);\n\t\t},\n\t\tsave: function (name, value) {\n\t\t\treturn window.localStorage.setItem(name, value);\n\t\t},\n\t\tremove: function (name) {\n\t\t\t// We attempt to remove the item from the old cookie storage\n\t\t\t// because otherwise the next time o-tracking is initialised for\n\t\t\t// this user, it will import the old value which was meant to\n\t\t\t// have been removed.\n\t\t\tcookieRemove(name);\n\t\t\treturn window.localStorage.removeItem(name);\n\t\t}\n\t};\n\n\tfunction cookieLoad(name) {\n\t\tname = name + '=';\n\n\t\tconst cookies = window.document.cookie.split(';');\n\t\tlet i;\n\t\tlet cookie;\n\n\t\tfor (i = 0; i < cookies.length; i = i + 1) {\n\t\t\tcookie = cookies[i].replace(/^\\s+|\\s+$/g, '');\n\t\t\tif (cookie.indexOf(name) === 0) {\n\t\t\t\treturn decode(cookie.substring(name.length, cookie.length));\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction cookieSave(name, value, expiry) {\n\t\tlet d;\n\t\tlet expires = '';\n\n\t\tif (is(expiry, 'number')) {\n\t\t\td = new Date();\n\t\t\td.setTime(d.getTime() + expiry);\n\t\t\texpires = 'expires=' + d.toUTCString() + ';';\n\t\t}\n\n\t\tconst cookie = encode(name) + '=' + encode(value) + ';' + expires + 'path=/;' + (config.domain ? 'domain=.' + config.domain + ';' : '');\n\t\twindow.document.cookie = cookie;\n\t}\n\n\tfunction cookieRemove(name) {\n\t\tcookieSave(name, '', -1);\n\t}\n\n\t/**\n\t * Temporary var containing data from a previously saved store.\n\t *\n\t * @property {string|undefined} loadStore - JSON string of the previously saved store or undefined.\n\t */\n\t// Retrieve any previous store with the same name.\n\tconst loadStore = this.storage.load(this.storageKey);\n\tif (loadStore) {\n\t\ttry {\n\t\t\tthis.data = JSON.parse(loadStore);\n\t\t} catch (error) {\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tmodule: 'o-tracking'\n\t\t\t});\n\t\t\tthis.data = loadStore;\n\t\t}\n\t}\n\n\t// If the user has previous data stored in the old cookie storage system\n\t// import the data into the new storage system and remove them from the cookie.\n\tconst oldCookieStoreData = cookieLoad(this.storageKey);\n\tif (oldCookieStoreData) {\n\t\ttry {\n\t\t\tif (this.storageKey === 'spoor-id') {\n\t\t\t\t// spoor-id is stored directly as a string and not as an object\n\t\t\t\tthis.data = oldCookieStoreData;\n\t\t\t} else {\n\t\t\t\tconst data = JSON.parse(oldCookieStoreData);\n\t\t\t\tif (this.data) {\n\t\t\t\t\tObject.assign(this.data, data);\n\t\t\t\t} else {\n\t\t\t\t\tthis.data = data;\n\t\t\t\t}\n\t\t\t\tfor (const name of Object.keys(data)) {\n\t\t\t\t\tif (name !== 'spoor-id') {\n\t\t\t\t\t\tcookieRemove(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tmodule: 'o-tracking'\n\t\t\t});\n\t\t\tthis.data = loadStore;\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Get/Read the current data.\n *\n * @returns {object} Returns the data from the store.\n */\nStore.prototype.read = function () {\n\treturn this.data;\n};\n\n/**\n * Write the supplied data to the store.\n *\n * @param {string} data - The data to write.\n * @returns {Store} - The instance of the store\n */\nStore.prototype.write = function (data) {\n\t// Set this.data, in-case we're on a file:// domain and can't set cookies.\n\tthis.data = data;\n\tlet value;\n\n\tif (typeof this.data === 'string') {\n\t\tvalue = this.data;\n\t} else {\n\t\tif (containsCircularPaths(this.data)) {\n\t\t\tconst errorMessage = \"o-tracking does not support circular references in the analytics data.\\n\" +\n\t\t\t\"Please remove the circular references in the data.\\n\" +\n\t\t\t\"Here are the paths in the data which are circular:\\n\" +\n\t\t\tJSON.stringify(findCircularPathsIn(this.data), undefined, 4);\n\t\t\tthrow new Error(errorMessage);\n\t\t}\n\t\tvalue = JSON.stringify(this.data);\n\t}\n\n\tthis.storage.save(this.storageKey, value);\n\n\treturn this;\n};\n\n/**\n * Delete the current data.\n *\n * @returns {Store} - The instance of the store\n */\nStore.prototype.destroy = function () {\n\tthis.data = null;\n\tthis.storage.remove(this.storageKey);\n\treturn this;\n};\n\nexport { Store };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar react = require('react');\n\nfunction createStore(createState) {\n  var state;\n  var listeners = new Set();\n\n  var setState = function setState(partial, replace) {\n    var nextState = typeof partial === 'function' ? partial(state) : partial;\n\n    if (nextState !== state) {\n      var _previousState = state;\n      state = replace ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach(function (listener) {\n        return listener(state, _previousState);\n      });\n    }\n  };\n\n  var getState = function getState() {\n    return state;\n  };\n\n  var subscribeWithSelector = function subscribeWithSelector(listener, selector, equalityFn) {\n    if (selector === void 0) {\n      selector = getState;\n    }\n\n    if (equalityFn === void 0) {\n      equalityFn = Object.is;\n    }\n\n    console.warn('[DEPRECATED] Please use `subscribeWithSelector` middleware');\n    var currentSlice = selector(state);\n\n    function listenerToAdd() {\n      var nextSlice = selector(state);\n\n      if (!equalityFn(currentSlice, nextSlice)) {\n        var _previousSlice = currentSlice;\n        listener(currentSlice = nextSlice, _previousSlice);\n      }\n    }\n\n    listeners.add(listenerToAdd);\n    return function () {\n      return listeners.delete(listenerToAdd);\n    };\n  };\n\n  var subscribe = function subscribe(listener, selector, equalityFn) {\n    if (selector || equalityFn) {\n      return subscribeWithSelector(listener, selector, equalityFn);\n    }\n\n    listeners.add(listener);\n    return function () {\n      return listeners.delete(listener);\n    };\n  };\n\n  var destroy = function destroy() {\n    return listeners.clear();\n  };\n\n  var api = {\n    setState: setState,\n    getState: getState,\n    subscribe: subscribe,\n    destroy: destroy\n  };\n  state = createState(setState, getState, api);\n  return api;\n}\n\nvar isSSR = typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nvar useIsomorphicLayoutEffect = isSSR ? react.useEffect : react.useLayoutEffect;\n\nfunction create(createState) {\n  var api = typeof createState === 'function' ? createStore(createState) : createState;\n\n  var useStore = function useStore(selector, equalityFn) {\n    if (selector === void 0) {\n      selector = api.getState;\n    }\n\n    if (equalityFn === void 0) {\n      equalityFn = Object.is;\n    }\n\n    var _ref = react.useReducer(function (c) {\n      return c + 1;\n    }, 0),\n        forceUpdate = _ref[1];\n\n    var state = api.getState();\n    var stateRef = react.useRef(state);\n    var selectorRef = react.useRef(selector);\n    var equalityFnRef = react.useRef(equalityFn);\n    var erroredRef = react.useRef(false);\n    var currentSliceRef = react.useRef();\n\n    if (currentSliceRef.current === undefined) {\n      currentSliceRef.current = selector(state);\n    }\n\n    var newStateSlice;\n    var hasNewStateSlice = false;\n\n    if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n      newStateSlice = selector(state);\n      hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n    }\n\n    useIsomorphicLayoutEffect(function () {\n      if (hasNewStateSlice) {\n        currentSliceRef.current = newStateSlice;\n      }\n\n      stateRef.current = state;\n      selectorRef.current = selector;\n      equalityFnRef.current = equalityFn;\n      erroredRef.current = false;\n    });\n    var stateBeforeSubscriptionRef = react.useRef(state);\n    useIsomorphicLayoutEffect(function () {\n      var listener = function listener() {\n        try {\n          var nextState = api.getState();\n          var nextStateSlice = selectorRef.current(nextState);\n\n          if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n            stateRef.current = nextState;\n            currentSliceRef.current = nextStateSlice;\n            forceUpdate();\n          }\n        } catch (error) {\n          erroredRef.current = true;\n          forceUpdate();\n        }\n      };\n\n      var unsubscribe = api.subscribe(listener);\n\n      if (api.getState() !== stateBeforeSubscriptionRef.current) {\n        listener();\n      }\n\n      return unsubscribe;\n    }, []);\n    var sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n    react.useDebugValue(sliceToReturn);\n    return sliceToReturn;\n  };\n\n  Object.assign(useStore, api);\n\n  useStore[Symbol.iterator] = function () {\n    console.warn('[useStore, api] = create() is deprecated and will be removed in v4');\n    var items = [useStore, api];\n    return {\n      next: function next() {\n        var done = items.length <= 0;\n        return {\n          value: items.shift(),\n          done: done\n        };\n      }\n    };\n  };\n\n  return useStore;\n}\n\nexports[\"default\"] = create;\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  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\nfunction _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      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n      _next(undefined);\n    });\n  };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var domToReact = require('./lib/dom-to-react');\nvar attributesToProps = require('./lib/attributes-to-props');\nvar htmlToDOM = require('html-dom-parser');\n\n// support backwards compatibility for ES Module\nhtmlToDOM =\n  /* istanbul ignore next */\n  typeof htmlToDOM.default === 'function' ? htmlToDOM.default : htmlToDOM;\n\nvar domParserOptions = { lowerCaseAttributeNames: false };\n\n/**\n * Converts HTML string to React elements.\n *\n * @param {string} html - HTML string.\n * @param {object} [options] - Parser options.\n * @param {object} [options.htmlparser2] - htmlparser2 options.\n * @param {object} [options.library] - Library for React, Preact, etc.\n * @param {Function} [options.replace] - Replace method.\n * @returns {JSX.Element|JSX.Element[]|string} - React element(s), empty array, or string.\n */\nfunction HTMLReactParser(html, options) {\n  if (typeof html !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n  if (html === '') {\n    return [];\n  }\n  options = options || {};\n  return domToReact(\n    htmlToDOM(html, options.htmlparser2 || domParserOptions),\n    options\n  );\n}\n\nHTMLReactParser.domToReact = domToReact;\nHTMLReactParser.htmlToDOM = htmlToDOM;\nHTMLReactParser.attributesToProps = attributesToProps;\nHTMLReactParser.Element = require('domhandler').Element;\n\n// support CommonJS and ES Modules\nmodule.exports = HTMLReactParser;\nmodule.exports.default = HTMLReactParser;\n","/**\n * Main content for the worker that handles the loading and execution of\n * modules within it.\n */\nfunction workerBootstrap() {\n  var modules = Object.create(null);\n\n  // Handle messages for registering a module\n  function registerModule(ref, callback) {\n    var id = ref.id;\n    var name = ref.name;\n    var dependencies = ref.dependencies; if ( dependencies === void 0 ) dependencies = [];\n    var init = ref.init; if ( init === void 0 ) init = function(){};\n    var getTransferables = ref.getTransferables; if ( getTransferables === void 0 ) getTransferables = null;\n\n    // Only register once\n    if (modules[id]) { return }\n\n    try {\n      // If any dependencies are modules, ensure they're registered and grab their value\n      dependencies = dependencies.map(function (dep) {\n        if (dep && dep.isWorkerModule) {\n          registerModule(dep, function (depResult) {\n            if (depResult instanceof Error) { throw depResult }\n          });\n          dep = modules[dep.id].value;\n        }\n        return dep\n      });\n\n      // Rehydrate functions\n      init = rehydrate((\"<\" + name + \">.init\"), init);\n      if (getTransferables) {\n        getTransferables = rehydrate((\"<\" + name + \">.getTransferables\"), getTransferables);\n      }\n\n      // Initialize the module and store its value\n      var value = null;\n      if (typeof init === 'function') {\n        value = init.apply(void 0, dependencies);\n      } else {\n        console.error('worker module init function failed to rehydrate');\n      }\n      modules[id] = {\n        id: id,\n        value: value,\n        getTransferables: getTransferables\n      };\n      callback(value);\n    } catch(err) {\n      if (!(err && err.noLog)) {\n        console.error(err);\n      }\n      callback(err);\n    }\n  }\n\n  // Handle messages for calling a registered module's result function\n  function callModule(ref, callback) {\n    var ref$1;\n\n    var id = ref.id;\n    var args = ref.args;\n    if (!modules[id] || typeof modules[id].value !== 'function') {\n      callback(new Error((\"Worker module \" + id + \": not found or its 'init' did not return a function\")));\n    }\n    try {\n      var result = (ref$1 = modules[id]).value.apply(ref$1, args);\n      if (result && typeof result.then === 'function') {\n        result.then(handleResult, function (rej) { return callback(rej instanceof Error ? rej : new Error('' + rej)); });\n      } else {\n        handleResult(result);\n      }\n    } catch(err) {\n      callback(err);\n    }\n    function handleResult(result) {\n      try {\n        var tx = modules[id].getTransferables && modules[id].getTransferables(result);\n        if (!tx || !Array.isArray(tx) || !tx.length) {\n          tx = undefined; //postMessage is very picky about not passing null or empty transferables\n        }\n        callback(result, tx);\n      } catch(err) {\n        console.error(err);\n        callback(err);\n      }\n    }\n  }\n\n  function rehydrate(name, str) {\n    var result = void 0;\n    self.troikaDefine = function (r) { return result = r; };\n    var url = URL.createObjectURL(\n      new Blob(\n        [(\"/** \" + (name.replace(/\\*/g, '')) + \" **/\\n\\ntroikaDefine(\\n\" + str + \"\\n)\")],\n        {type: 'application/javascript'}\n      )\n    );\n    try {\n      importScripts(url);\n    } catch(err) {\n      console.error(err);\n    }\n    URL.revokeObjectURL(url);\n    delete self.troikaDefine;\n    return result\n  }\n\n  // Handler for all messages within the worker\n  self.addEventListener('message', function (e) {\n    var ref = e.data;\n    var messageId = ref.messageId;\n    var action = ref.action;\n    var data = ref.data;\n    try {\n      // Module registration\n      if (action === 'registerModule') {\n        registerModule(data, function (result) {\n          if (result instanceof Error) {\n            postMessage({\n              messageId: messageId,\n              success: false,\n              error: result.message\n            });\n          } else {\n            postMessage({\n              messageId: messageId,\n              success: true,\n              result: {isCallable: typeof result === 'function'}\n            });\n          }\n        });\n      }\n      // Invocation\n      if (action === 'callModule') {\n        callModule(data, function (result, transferables) {\n          if (result instanceof Error) {\n            postMessage({\n              messageId: messageId,\n              success: false,\n              error: result.message\n            });\n          } else {\n            postMessage({\n              messageId: messageId,\n              success: true,\n              result: result\n            }, transferables || undefined);\n          }\n        });\n      }\n    } catch(err) {\n      postMessage({\n        messageId: messageId,\n        success: false,\n        error: err.stack\n      });\n    }\n  });\n}\n\n/**\n * Fallback for `defineWorkerModule` that behaves identically but runs in the main\n * thread, for when the execution environment doesn't support web workers or they\n * are disallowed due to e.g. CSP security restrictions.\n */\nfunction defineMainThreadModule(options) {\n  var moduleFunc = function() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    return moduleFunc._getInitResult().then(function (initResult) {\n      if (typeof initResult === 'function') {\n        return initResult.apply(void 0, args)\n      } else {\n        throw new Error('Worker module function was called but `init` did not return a callable function')\n      }\n    })\n  };\n  moduleFunc._getInitResult = function() {\n    // We can ignore getTransferables in main thread. TODO workerId?\n    var dependencies = options.dependencies;\n    var init = options.init;\n\n    // Resolve dependencies\n    dependencies = Array.isArray(dependencies) ? dependencies.map(function (dep) { return dep && dep._getInitResult ? dep._getInitResult() : dep; }\n    ) : [];\n\n    // Invoke init with the resolved dependencies\n    var initPromise = Promise.all(dependencies).then(function (deps) {\n      return init.apply(null, deps)\n    });\n\n    // Cache the resolved promise for subsequent calls\n    moduleFunc._getInitResult = function () { return initPromise; };\n\n    return initPromise\n  };\n  return moduleFunc\n}\n\nvar supportsWorkers = function () {\n  var supported = false;\n\n  // Only attempt worker initialization in browsers; elsewhere it would just be\n  // noise e.g. loading into a Node environment for SSR.\n  if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n    try {\n      // TODO additional checks for things like importScripts within the worker?\n      //  Would need to be an async check.\n      var worker = new Worker(\n        URL.createObjectURL(new Blob([''], { type: 'application/javascript' }))\n      );\n      worker.terminate();\n      supported = true;\n    } catch (err) {\n      if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') ; else {\n        console.log(\n          (\"Troika createWorkerModule: web workers not allowed; falling back to main thread execution. Cause: [\" + (err.message) + \"]\")\n        );\n      }\n    }\n  }\n\n  // Cached result\n  supportsWorkers = function () { return supported; };\n  return supported\n};\n\nvar _workerModuleId = 0;\nvar _messageId = 0;\nvar _allowInitAsString = false;\nvar workers = Object.create(null);\nvar registeredModules = Object.create(null); //workerId -> Set<unregisterFn>\nvar openRequests = Object.create(null);\n\n\n/**\n * Define a module of code that will be executed with a web worker. This provides a simple\n * interface for moving chunks of logic off the main thread, and managing their dependencies\n * among one another.\n *\n * @param {object} options\n * @param {function} options.init\n * @param {array} [options.dependencies]\n * @param {function} [options.getTransferables]\n * @param {string} [options.name]\n * @param {string} [options.workerId]\n * @return {function(...[*]): {then}}\n */\nfunction defineWorkerModule(options) {\n  if ((!options || typeof options.init !== 'function') && !_allowInitAsString) {\n    throw new Error('requires `options.init` function')\n  }\n  var dependencies = options.dependencies;\n  var init = options.init;\n  var getTransferables = options.getTransferables;\n  var workerId = options.workerId;\n\n  if (!supportsWorkers()) {\n    return defineMainThreadModule(options)\n  }\n\n  if (workerId == null) {\n    workerId = '#default';\n  }\n  var id = \"workerModule\" + (++_workerModuleId);\n  var name = options.name || id;\n  var registrationPromise = null;\n\n  dependencies = dependencies && dependencies.map(function (dep) {\n    // Wrap raw functions as worker modules with no dependencies\n    if (typeof dep === 'function' && !dep.workerModuleData) {\n      _allowInitAsString = true;\n      dep = defineWorkerModule({\n        workerId: workerId,\n        name: (\"<\" + name + \"> function dependency: \" + (dep.name)),\n        init: (\"function(){return (\\n\" + (stringifyFunction(dep)) + \"\\n)}\")\n      });\n      _allowInitAsString = false;\n    }\n    // Grab postable data for worker modules\n    if (dep && dep.workerModuleData) {\n      dep = dep.workerModuleData;\n    }\n    return dep\n  });\n\n  function moduleFunc() {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    // Register this module if needed\n    if (!registrationPromise) {\n      registrationPromise = callWorker(workerId,'registerModule', moduleFunc.workerModuleData);\n      var unregister = function () {\n        registrationPromise = null;\n        registeredModules[workerId].delete(unregister);\n      }\n      ;(registeredModules[workerId] || (registeredModules[workerId] = new Set())).add(unregister);\n    }\n\n    // Invoke the module, returning a promise\n    return registrationPromise.then(function (ref) {\n      var isCallable = ref.isCallable;\n\n      if (isCallable) {\n        return callWorker(workerId,'callModule', {id: id, args: args})\n      } else {\n        throw new Error('Worker module function was called but `init` did not return a callable function')\n      }\n    })\n  }\n  moduleFunc.workerModuleData = {\n    isWorkerModule: true,\n    id: id,\n    name: name,\n    dependencies: dependencies,\n    init: stringifyFunction(init),\n    getTransferables: getTransferables && stringifyFunction(getTransferables)\n  };\n  return moduleFunc\n}\n\n/**\n * Terminate an active Worker by a workerId that was passed to defineWorkerModule.\n * This only terminates the Worker itself; the worker module will remain available\n * and if you call it again its Worker will be respawned.\n * @param {string} workerId\n */\nfunction terminateWorker(workerId) {\n  // Unregister all modules that were registered in that worker\n  if (registeredModules[workerId]) {\n    registeredModules[workerId].forEach(function (unregister) {\n      unregister();\n    });\n  }\n  // Terminate the Worker object\n  if (workers[workerId]) {\n    workers[workerId].terminate();\n    delete workers[workerId];\n  }\n}\n\n/**\n * Stringifies a function into a form that can be deserialized in the worker\n * @param fn\n */\nfunction stringifyFunction(fn) {\n  var str = fn.toString();\n  // If it was defined in object method/property format, it needs to be modified\n  if (!/^function/.test(str) && /^\\w+\\s*\\(/.test(str)) {\n    str = 'function ' + str;\n  }\n  return str\n}\n\n\nfunction getWorker(workerId) {\n  var worker = workers[workerId];\n  if (!worker) {\n    // Bootstrap the worker's content\n    var bootstrap = stringifyFunction(workerBootstrap);\n\n    // Create the worker from the bootstrap function content\n    worker = workers[workerId] = new Worker(\n      URL.createObjectURL(\n        new Blob(\n          [(\"/** Worker Module Bootstrap: \" + (workerId.replace(/\\*/g, '')) + \" **/\\n\\n;(\" + bootstrap + \")()\")],\n          {type: 'application/javascript'}\n        )\n      )\n    );\n\n    // Single handler for response messages from the worker\n    worker.onmessage = function (e) {\n      var response = e.data;\n      var msgId = response.messageId;\n      var callback = openRequests[msgId];\n      if (!callback) {\n        throw new Error('WorkerModule response with empty or unknown messageId')\n      }\n      delete openRequests[msgId];\n      callback(response);\n    };\n  }\n  return worker\n}\n\n// Issue a call to the worker with a callback to handle the response\nfunction callWorker(workerId, action, data) {\n  return new Promise(function (resolve, reject) {\n    var messageId = ++_messageId;\n    openRequests[messageId] = function (response) {\n      if (response.success) {\n        resolve(response.result);\n      } else {\n        reject(new Error((\"Error in worker \" + action + \" call: \" + (response.error))));\n      }\n    };\n    getWorker(workerId).postMessage({\n      messageId: messageId,\n      action: action,\n      data: data\n    });\n  })\n}\n\nexport { defineWorkerModule, stringifyFunction, terminateWorker };\n","function _extends() {\n  module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/* eslint-disable no-console */\nconst missingDataMessage = 'Could not find layout information. ' +\n\t'You may need to include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) ' +\n\t'for more information.';\n\n/**\n * Grab grid properties\n *\n * @returns {object} layout names and gutter widths\n */\nfunction getGridProperties() {\n\tconst properties = getGridFromDoc('after');\n\tif (Object.keys(properties).length === 0) {\n\t\tconsole.warn(missingDataMessage);\n\t}\n\treturn properties;\n}\n\n/**\n * Get all layout sizes.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {object} layout names and sizes\n */\nfunction getGridBreakpoints() {\n\tconst breakpoints = getGridFromDoc('before');\n\tif (Object.keys(breakpoints).length === 0) {\n\t\tconsole.warn(missingDataMessage);\n\t}\n\treturn breakpoints;\n}\n\n/**\n * Grab grid properties surfaced in html:after and html:before's content\n *\n * @param {string} position Whether to get all properties in :before, or current properties in :after\n * @returns {object} layout names and gutter widths\n */\nfunction getGridFromDoc(position) {\n\t// Contained in a try/catch as it should not error if o-grid styles are not (deliberately or accidentally) loaded\n\t// e.g. o-tracking will always try to read this property, but the page is not obliged to use o-grid for layout\n\ttry {\n\t\tlet gridProperties = window.getComputedStyle(document.documentElement, ':' + position).getPropertyValue('content');\n\t\t// Firefox computes: \"{\\\"foo\\\": \\\"bar\\\"}\"\n\t\t// We want readable JSON: {\"foo\": \"bar\"}\n\t\tgridProperties = gridProperties.replace(/'/g, '').replace(/\\\\/g, '').replace(/^\"/, '').replace(/\"$/, '');\n\t\treturn JSON.parse(gridProperties);\n\t} catch (e) {\n\t\treturn {};\n\t}\n}\n\n/**\n * Grab the current layout.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {string} Layout name\n */\nfunction getCurrentLayout() {\n\treturn getGridProperties().layout;\n}\n\n/**\n * Grab the current space between columns.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {string} Gutter width in pixels\n */\nfunction getCurrentGutter() {\n\treturn getGridProperties().gutter;\n}\n\n/**\n * This sets MediaQueryListeners on all the o-grid breakpoints\n * and fires a `o-grid.layoutChange` event on layout change.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {void}\n */\nfunction enableLayoutChangeEvents() {\n\t// Create a map containing all breakpoints exposed via html:before\n\tconst gridLayouts = getGridBreakpoints();\n\t// eslint-disable-next-line no-prototype-builtins\n\tif (gridLayouts.hasOwnProperty('layouts')) {\n\t\tconst layouts = gridLayouts.layouts;\n\t\tconst breakpoints = [\n\t\t\t...Object.entries(layouts),\n\t\t\t['default', '240px']\n\t\t].sort((a, b) => parseFloat(a[1]) - parseFloat(b[1]));\n\n\t\tconst setupQuery = (query, size) => {\n\t\t\t// matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n\t\t\tconst handleMQChange = mql => {\n\t\t\t\tif (mql.matches) {\n\t\t\t\t\twindow.dispatchEvent(new CustomEvent('o-grid.layoutChange', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tlayout: size,\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst mql = window.matchMedia(query);\n\t\t\tmql.addListener(handleMQChange);\n\t\t\thandleMQChange(mql);\n\t\t};\n\n\t\t// Generate media queries for each\n\t\tconst decr1 = val => `${Number(val.replace('px', '') - 1)}px`;\n\t\tfor (let index = 0; index < breakpoints.length; index++) {\n\t\t\tconst [layoutName, layoutWidth] = breakpoints[index];\n\t\t\tconst isLast = index === breakpoints.length - 1;\n\t\t\tif (isLast) {\n\t\t\t\tsetupQuery(`(min-width: ${layoutWidth})`, layoutName);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [,nextLayoutWidth] = breakpoints[index + 1];\n\t\t\tsetupQuery(`(min-width: ${layoutWidth}) and (max-width: ${decr1(nextLayoutWidth)})`, layoutName);\n\t\t}\n\t} else {\n\t\tconsole.error('Could not enable grid layout change events. Include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) for more details.');\n\t}\n}\n\nexport {\n\tgetCurrentLayout,\n\tgetCurrentGutter,\n\tgetGridBreakpoints,\n\tenableLayoutChangeEvents\n};\n\nexport default {\n\tgetCurrentLayout,\n\tgetCurrentGutter,\n\tgetGridBreakpoints,\n\tenableLayoutChangeEvents\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar nodeTypes = new Map([\n    [domelementtype_1.ElementType.Tag, 1],\n    [domelementtype_1.ElementType.Script, 1],\n    [domelementtype_1.ElementType.Style, 1],\n    [domelementtype_1.ElementType.Directive, 1],\n    [domelementtype_1.ElementType.Text, 3],\n    [domelementtype_1.ElementType.CDATA, 4],\n    [domelementtype_1.ElementType.Comment, 8],\n    [domelementtype_1.ElementType.Root, 9],\n]);\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n    /**\n     *\n     * @param type The type of the node.\n     */\n    function Node(type) {\n        this.type = type;\n        /** Parent of the node */\n        this.parent = null;\n        /** Previous sibling */\n        this.prev = null;\n        /** Next sibling */\n        this.next = null;\n        /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n        this.startIndex = null;\n        /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n        this.endIndex = null;\n    }\n    Object.defineProperty(Node.prototype, \"nodeType\", {\n        // Read-only aliases\n        /**\n         * [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible\n         * node {@link type}.\n         */\n        get: function () {\n            var _a;\n            return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"parentNode\", {\n        // Read-write aliases for properties\n        /**\n         * Same as {@link parent}.\n         * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n         */\n        get: function () {\n            return this.parent;\n        },\n        set: function (parent) {\n            this.parent = parent;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"previousSibling\", {\n        /**\n         * Same as {@link prev}.\n         * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n         */\n        get: function () {\n            return this.prev;\n        },\n        set: function (prev) {\n            this.prev = prev;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Node.prototype, \"nextSibling\", {\n        /**\n         * Same as {@link next}.\n         * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n         */\n        get: function () {\n            return this.next;\n        },\n        set: function (next) {\n            this.next = next;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Clone this node, and optionally its children.\n     *\n     * @param recursive Clone child nodes as well.\n     * @returns A clone of the node.\n     */\n    Node.prototype.cloneNode = function (recursive) {\n        if (recursive === void 0) { recursive = false; }\n        return cloneNode(this, recursive);\n    };\n    return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n    __extends(DataNode, _super);\n    /**\n     * @param type The type of the node\n     * @param data The content of the data node\n     */\n    function DataNode(type, data) {\n        var _this = _super.call(this, type) || this;\n        _this.data = data;\n        return _this;\n    }\n    Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n        /**\n         * Same as {@link data}.\n         * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n         */\n        get: function () {\n            return this.data;\n        },\n        set: function (data) {\n            this.data = data;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n    __extends(Text, _super);\n    function Text(data) {\n        return _super.call(this, domelementtype_1.ElementType.Text, data) || this;\n    }\n    return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n    __extends(Comment, _super);\n    function Comment(data) {\n        return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;\n    }\n    return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n    __extends(ProcessingInstruction, _super);\n    function ProcessingInstruction(name, data) {\n        var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;\n        _this.name = name;\n        return _this;\n    }\n    return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n    __extends(NodeWithChildren, _super);\n    /**\n     * @param type Type of the node.\n     * @param children Children of the node. Only certain node types can have children.\n     */\n    function NodeWithChildren(type, children) {\n        var _this = _super.call(this, type) || this;\n        _this.children = children;\n        return _this;\n    }\n    Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n        // Aliases\n        /** First child of the node. */\n        get: function () {\n            var _a;\n            return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n        /** Last child of the node. */\n        get: function () {\n            return this.children.length > 0\n                ? this.children[this.children.length - 1]\n                : null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n        /**\n         * Same as {@link children}.\n         * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n         */\n        get: function () {\n            return this.children;\n        },\n        set: function (children) {\n            this.children = children;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n    __extends(Document, _super);\n    function Document(children) {\n        return _super.call(this, domelementtype_1.ElementType.Root, children) || this;\n    }\n    return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n    __extends(Element, _super);\n    /**\n     * @param name Name of the tag, eg. `div`, `span`.\n     * @param attribs Object mapping attribute names to attribute values.\n     * @param children Children of the node.\n     */\n    function Element(name, attribs, children, type) {\n        if (children === void 0) { children = []; }\n        if (type === void 0) { type = name === \"script\"\n            ? domelementtype_1.ElementType.Script\n            : name === \"style\"\n                ? domelementtype_1.ElementType.Style\n                : domelementtype_1.ElementType.Tag; }\n        var _this = _super.call(this, type, children) || this;\n        _this.name = name;\n        _this.attribs = attribs;\n        return _this;\n    }\n    Object.defineProperty(Element.prototype, \"tagName\", {\n        // DOM Level 1 aliases\n        /**\n         * Same as {@link name}.\n         * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n         */\n        get: function () {\n            return this.name;\n        },\n        set: function (name) {\n            this.name = name;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Element.prototype, \"attributes\", {\n        get: function () {\n            var _this = this;\n            return Object.keys(this.attribs).map(function (name) {\n                var _a, _b;\n                return ({\n                    name: name,\n                    value: _this.attribs[name],\n                    namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n                    prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n                });\n            });\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n    return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n    return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n    return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n    return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n    return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n    return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `NodeWithChildren` (has children), `false` otherwise.\n */\nfunction hasChildren(node) {\n    return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n    if (recursive === void 0) { recursive = false; }\n    var result;\n    if (isText(node)) {\n        result = new Text(node.data);\n    }\n    else if (isComment(node)) {\n        result = new Comment(node.data);\n    }\n    else if (isTag(node)) {\n        var children = recursive ? cloneChildren(node.children) : [];\n        var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n        children.forEach(function (child) { return (child.parent = clone_1); });\n        if (node.namespace != null) {\n            clone_1.namespace = node.namespace;\n        }\n        if (node[\"x-attribsNamespace\"]) {\n            clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n        }\n        if (node[\"x-attribsPrefix\"]) {\n            clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n        }\n        result = clone_1;\n    }\n    else if (isCDATA(node)) {\n        var children = recursive ? cloneChildren(node.children) : [];\n        var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);\n        children.forEach(function (child) { return (child.parent = clone_2); });\n        result = clone_2;\n    }\n    else if (isDocument(node)) {\n        var children = recursive ? cloneChildren(node.children) : [];\n        var clone_3 = new Document(children);\n        children.forEach(function (child) { return (child.parent = clone_3); });\n        if (node[\"x-mode\"]) {\n            clone_3[\"x-mode\"] = node[\"x-mode\"];\n        }\n        result = clone_3;\n    }\n    else if (isDirective(node)) {\n        var instruction = new ProcessingInstruction(node.name, node.data);\n        if (node[\"x-name\"] != null) {\n            instruction[\"x-name\"] = node[\"x-name\"];\n            instruction[\"x-publicId\"] = node[\"x-publicId\"];\n            instruction[\"x-systemId\"] = node[\"x-systemId\"];\n        }\n        result = instruction;\n    }\n    else {\n        throw new Error(\"Not implemented yet: \".concat(node.type));\n    }\n    result.startIndex = node.startIndex;\n    result.endIndex = node.endIndex;\n    if (node.sourceCodeLocation != null) {\n        result.sourceCodeLocation = node.sourceCodeLocation;\n    }\n    return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n    var children = childs.map(function (child) { return cloneNode(child, true); });\n    for (var i = 1; i < children.length; i++) {\n        children[i].prev = children[i - 1];\n        children[i - 1].next = children[i];\n    }\n    return children;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n  module.exports = require('./cjs/react-reconciler.development.js');\n}\n","module.exports = 'a[href], area[href], input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], [contenteditable], audio[controls], video[controls], summary, [tabindex^=\"0\"], [tabindex^=\"1\"], [tabindex^=\"2\"], [tabindex^=\"3\"], [tabindex^=\"4\"], [tabindex^=\"5\"], [tabindex^=\"6\"], [tabindex^=\"7\"], [tabindex^=\"8\"], [tabindex^=\"9\"]'\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n  var timeout, args, context, timestamp, result;\n  if (null == wait) wait = 100;\n\n  function later() {\n    var last = Date.now() - timestamp;\n\n    if (last < wait && last >= 0) {\n      timeout = setTimeout(later, wait - last);\n    } else {\n      timeout = null;\n      if (!immediate) {\n        result = func.apply(context, args);\n        context = args = null;\n      }\n    }\n  };\n\n  var debounced = function(){\n    context = this;\n    args = arguments;\n    timestamp = Date.now();\n    var callNow = immediate && !timeout;\n    if (!timeout) timeout = setTimeout(later, wait);\n    if (callNow) {\n      result = func.apply(context, args);\n      context = args = null;\n    }\n\n    return result;\n  };\n\n  debounced.clear = function() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  \n  debounced.flush = function() {\n    if (timeout) {\n      result = func.apply(context, args);\n      context = args = null;\n      \n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n\n  return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect = function (target) {\n    if ('getBBox' in target) {\n        var box = target.getBBox();\n        return Object.freeze({\n            height: box.height,\n            left: 0,\n            top: 0,\n            width: box.width,\n        });\n    }\n    else { // if (target instanceof HTMLElement) { // also includes all other non-SVGGraphicsElements\n        var styles = window.getComputedStyle(target);\n        return Object.freeze({\n            height: parseFloat(styles.height || '0'),\n            left: parseFloat(styles.paddingLeft || '0'),\n            top: parseFloat(styles.paddingTop || '0'),\n            width: parseFloat(styles.width || '0'),\n        });\n    }\n};\nexports.ContentRect = ContentRect;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29udGVudFJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxJQUFNLFdBQVcsR0FBRyxVQUFDLE1BQWU7SUFDaEMsSUFBSSxTQUFTLElBQUssTUFBNkIsRUFBRTtRQUM3QyxJQUFNLEdBQUcsR0FBSSxNQUE2QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLENBQUM7WUFDUCxHQUFHLEVBQUUsQ0FBQztZQUNOLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUM7S0FDTjtTQUFNLEVBQUUsMEZBQTBGO1FBQy9GLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDakIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUN4QyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO1lBQzNDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztTQUN6QyxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUMsQ0FBQztBQUVPLGtDQUFXIn0=","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import {is, isUndefined, broadcast} from '../utils.js';\nimport {Store} from './store.js';\n\n/**\n * Class for handling a queue backed up by a store.\n *\n * @class Queue\n *\n * @param {string} name - The name of the queue.\n * @returns {Queue} - Returns the instance of the queue.\n */\nfunction Queue (name) {\n\tif (isUndefined(name)) {\n\t\tconst undefinedName = new Error('You must specify a name for the queue.');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: undefinedName.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow undefinedName;\n\t}\n\n\t/**\n\t * Queue data.\n\t *\n\t * @type {Array}\n\t */\n\tthis.queue = [];\n\n\t/**\n\t * The storage method to use. Determines best storage method.\n\t *\n\t * @type {object}\n\t */\n\tthis.storage = new Store(name);\n\n\t// Retrieve any previous store with the same name.\n\tif (this.storage.read()) {\n\t\tthis.queue = this.storage.read();\n\t}\n\n\treturn this;\n}\n\n/**\n * Gets the contents of the store.\n *\n * @returns {Array} The array of items.\n */\nQueue.prototype.all = function () {\n\tif (this.queue.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst items = [];\n\n\tfor (let i = 0; i < this.queue.length; i = i + 1) {\n\t\titems.push(this.queue[i].item);\n\t}\n\n\treturn items;\n};\n\n/**\n * Gets the first item in the store.\n *\n * @returns {object} Returns the item.\n */\nQueue.prototype.first = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn this.queue[0].item;\n};\n\n/**\n * Gets the last item in the store.\n *\n * @returns {object} Returns the item.\n */\nQueue.prototype.last = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn this.queue.slice(-1)[0].item;\n};\n\n/**\n * Add data to the store.\n *\n * @param {object} item - An item or an array of items.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.add = function (item) {\n\t// I was trying to turn this whole add function into a little module, to stop doAdd function being created everytime, but couldn't work out how to get to 'this' from within the module.\n\n\tconst self = this;\n\tlet i;\n\n\tfunction doAdd(item) {\n\t\tself.queue.push({\n\t\t\tcreated_at: new Date().valueOf(),\n\t\t\titem: item\n\t\t});\n\t}\n\n\tif (is(item, 'object') && item.constructor.toString().match(/array/i)) {\n\t\tfor (i = 0; i < item.length; i = i + 1) {\n\t\t\tdoAdd(item[i]);\n\t\t}\n\t} else {\n\t\tdoAdd(item);\n\t}\n\n\treturn self;\n};\n\n/**\n * Overwrite the store with something completely new.\n *\n * @param {Array} items The new array of data.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.replace = function (items) {\n\tif (Array.isArray(items)) {\n\t\tthis.queue = [];\n\t\tthis.add(items).save();\n\n\t\treturn this;\n\t}\n\n\tconst invalidArg = new Error('Argument invalid, must be an array.');\n\tbroadcast('oErrors', 'log', {\n\t\terror: invalidArg.message,\n\t\tinfo: { module: 'o-tracking' }\n\t});\n\tthrow invalidArg;\n};\n\n/**\n * Pop the first item from the queue.\n *\n * @returns {object} The item.\n */\nQueue.prototype.shift = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst item = this.queue.shift().item;\n\n\tthis.save();\n\n\treturn item;\n};\n\n/**\n * Save the current store to localStorage so that old requests can still be sent after a page refresh.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.save = function () {\n\tthis.storage.write(this.queue);\n\n\treturn this;\n};\n\nexport { Queue };\n","import {guid} from '../utils.js';\nimport {Store} from './store.js';\n\nlet userID;\nlet store;\n\n/**\n * Init\n *\n * @param {string} value The value of a userID to use if one is not stored\n * @param {string} cookieDomain The domain that should be used to cookie te user\n * @returns {string} - The user ID if present, or a generated UID if not\n */\nfunction init(value, cookieDomain) {\n\tconst defaultUserConfig = {\n\t\tstorage: 'cookie',\n\t\tname: 'spoor-id',\n\t\tnameOverride: 'spoor-id',\n\t\tvalue: null,\n\n\t\t// Set the store cookie domain to .ft.com for ft.com and all its subdomains\n\t\tdomain: location.hostname.match(/^(?:.+\\.)?ft\\.com$/) ? 'ft.com' : null,\n\t};\n\tif ( cookieDomain ) {\n\t\tdefaultUserConfig.domain = cookieDomain;\n\t}\n\n\tstore = new Store(defaultUserConfig.name, defaultUserConfig);\n\tlet id = store.read();\n\n\tif (!id) {\n\t\tid = value;\n\t}\n\n\treturn setUser(id); // Refresh cookies and update state\n}\n\n/**\n * setUser\n *\n * @param {string} id The userID to set.\n * @returns {string} - The user ID if present, or a generated UID if not\n */\nfunction setUser(id) {\n\tuserID = id;\n\n\tif (!userID) {\n\t\tuserID = guid();\n\t}\n\n\tstore.write(userID); // Refreshes the cookie...\n\n\treturn userID;\n}\n\n/**\n * Delete the current user data.\n *\n * @returns {void}\n */\nfunction destroy() {\n\tstore.destroy();\n}\n\n/**\n * Get the user ID\n *\n * @returns {string} - The user ID\n */\nfunction id() {\n\treturn userID;\n}\n\nexport {\n\tinit,\n\tsetUser,\n\tid as userID,\n\tdestroy\n};\n","import {is, merge, isUndefined, guid} from '../utils.js';\nimport {Store} from './store.js';\n\n/**\n * @typedef {object} Session\n * @property {string} id - The id of the session\n * @property {boolean} isNew - Whether it is a brand new session\n */\n\nlet store;\nconst defaultSessionConfig = {\n\tstorage: 'best',\n\tname: 'session',\n\texpires: 30 * 60 * 1000 // 30 minutes\n};\n\n/**\n * Set the session in the store.\n *\n * @param {string} session - The session to be stored.\n * @returns {void}\n */\nfunction setSession(session) {\n\tconst d = new Date();\n\td.setTime(d.getTime() + store.config.expires);\n\n\tstore.write({\n\t\tvalue: session,\n\t\texpiry: d.valueOf()\n\t});\n}\n\n/**\n * Get the session from the store. Expiry and gen of a new session are handled here.\n *\n * @returns {Session} the current session\n */\nfunction getSession() {\n\tconst s = store.read();\n\tlet session;\n\tlet isNew = false;\n\n\tif (s) {\n\t\tconst d = new Date().valueOf();\n\t\tconst exp = parseInt(s.expiry, 10);\n\n\t\t// If current session is active.\n\t\tif (exp >= d) {\n\t\t\tsession = s.value;\n\t\t}\n\t}\n\n\t// No active session, gen a new one.\n\tif (!session) {\n\t\tsession = guid();\n\t\tisNew = true;\n\t}\n\n\t// Refreshes the cookie...\n\tsetSession(session);\n\n\treturn {\n\t\tid: session,\n\t\tisNew: isNew\n\t};\n}\n\n/**\n * Init\n *\n * @param {string|object} [config] The name used to store the session or configuration object.\n * @returns {Session} - The session\n */\nfunction init(config) {\n\tif (is(config, 'string')) {\n\t\tconfig = { name: config };\n\t}\n\n\tif (isUndefined(config)) {\n\t\tconfig = {};\n\t}\n\n\tconst c = merge(defaultSessionConfig, config);\n\n\t// config.name is important here, means the user has specifically asked for a cookie name.\n\tif (c.storage === 'cookie' && config.name) {\n\t\tc.nameOverride = c.name;\n\t}\n\n\tstore = new Store(c.name, c);\n\n\treturn getSession();\n}\n\nexport { getSession as session, init };\n","var reactProperty = require('react-property');\nvar utilities = require('./utilities');\n\n/**\n * Converts HTML/SVG DOM attributes to React props.\n *\n * @param {object} [attributes={}] - HTML/SVG DOM attributes.\n * @returns - React props.\n */\nmodule.exports = function attributesToProps(attributes) {\n  attributes = attributes || {};\n\n  var valueOnlyInputs = {\n    reset: true,\n    submit: true\n  };\n\n  var attributeName;\n  var attributeNameLowerCased;\n  var attributeValue;\n  var propName;\n  var propertyInfo;\n  var props = {};\n  var inputIsValueOnly = attributes.type && valueOnlyInputs[attributes.type];\n\n  for (attributeName in attributes) {\n    attributeValue = attributes[attributeName];\n\n    // ARIA (aria-*) or custom data (data-*) attribute\n    if (reactProperty.isCustomAttribute(attributeName)) {\n      props[attributeName] = attributeValue;\n      continue;\n    }\n\n    // convert HTML/SVG attribute to React prop\n    attributeNameLowerCased = attributeName.toLowerCase();\n    propName = getPropName(attributeNameLowerCased);\n\n    if (propName) {\n      propertyInfo = reactProperty.getPropertyInfo(propName);\n\n      // convert attribute to uncontrolled component prop (e.g., `value` to `defaultValue`)\n      // https://reactjs.org/docs/uncontrolled-components.html\n      if (\n        (propName === 'checked' || propName === 'value') &&\n        !inputIsValueOnly\n      ) {\n        propName = getPropName('default' + attributeNameLowerCased);\n      }\n\n      props[propName] = attributeValue;\n\n      switch (propertyInfo && propertyInfo.type) {\n        case reactProperty.BOOLEAN:\n          props[propName] = true;\n          break;\n        case reactProperty.OVERLOADED_BOOLEAN:\n          if (attributeValue === '') {\n            props[propName] = true;\n          }\n          break;\n      }\n      continue;\n    }\n\n    // preserve custom attribute if React >=16\n    if (utilities.PRESERVE_CUSTOM_ATTRIBUTES) {\n      props[attributeName] = attributeValue;\n    }\n  }\n\n  // transform inline style to object\n  utilities.setStyleProp(attributes.style, props);\n\n  return props;\n};\n\n/**\n * Gets prop name from lowercased attribute name.\n *\n * @param {string} attributeName - Lowercased attribute name.\n * @returns - Prop name.\n */\nfunction getPropName(attributeName) {\n  return reactProperty.possibleStandardNames[attributeName];\n}\n","var React = require('react');\nvar styleToJS = require('style-to-js').default;\n\n/**\n * Swap key with value in an object.\n *\n * @param {object} obj - The object.\n * @param {Function} [override] - The override method.\n * @returns - The inverted object.\n */\nfunction invertObject(obj, override) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('First argument must be an object');\n  }\n\n  var key;\n  var value;\n  var isOverridePresent = typeof override === 'function';\n  var overrides = {};\n  var result = {};\n\n  for (key in obj) {\n    value = obj[key];\n\n    if (isOverridePresent) {\n      overrides = override(key, value);\n      if (overrides && overrides.length === 2) {\n        result[overrides[0]] = overrides[1];\n        continue;\n      }\n    }\n\n    if (typeof value === 'string') {\n      result[value] = key;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Check if a given tag is a custom component.\n *\n * @see {@link https://github.com/facebook/react/blob/v16.6.3/packages/react-dom/src/shared/isCustomComponent.js}\n *\n * @param {string} tagName - The name of the html tag.\n * @param {object} props - The props being passed to the element.\n * @returns - Whether tag is custom component.\n */\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return props && typeof props.is === 'string';\n  }\n\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this whitelist too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n    default:\n      return true;\n  }\n}\n\nvar styleToJSOptions = { reactCompat: true };\n\n/**\n * Sets style prop.\n *\n * @param {null|undefined|string} style\n * @param {object} props\n */\nfunction setStyleProp(style, props) {\n  if (style === null || style === undefined) {\n    return;\n  }\n  try {\n    props.style = styleToJS(style, styleToJSOptions);\n  } catch (err) {\n    props.style = {};\n  }\n}\n\n/**\n * @constant {boolean}\n * @see {@link https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html}\n */\nvar PRESERVE_CUSTOM_ATTRIBUTES = React.version.split('.')[0] >= 16;\n\n// Taken from\n// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-dom/src/client/validateDOMNesting.js#L213\nvar elementsWithNoTextChildren = new Set([\n  'tr',\n  'tbody',\n  'thead',\n  'tfoot',\n  'colgroup',\n  'table',\n  'head',\n  'html',\n  'frameset'\n]);\n\n/**\n * Checks if the given node can contain text nodes\n *\n * @param {DomElement} node - Node.\n * @returns - Whether node can contain text nodes.\n */\nfunction canTextBeChildOfNode(node) {\n  return !elementsWithNoTextChildren.has(node.name);\n}\n\nmodule.exports = {\n  PRESERVE_CUSTOM_ATTRIBUTES: PRESERVE_CUSTOM_ATTRIBUTES,\n  invertObject: invertObject,\n  isCustomComponent: isCustomComponent,\n  setStyleProp: setStyleProp,\n  canTextBeChildOfNode: canTextBeChildOfNode,\n  elementsWithNoTextChildren: elementsWithNoTextChildren\n};\n","var constants = require('./constants');\nvar domhandler = require('domhandler/lib/node');\n\nvar CASE_SENSITIVE_TAG_NAMES = constants.CASE_SENSITIVE_TAG_NAMES;\n\nvar Comment = domhandler.Comment;\nvar Element = domhandler.Element;\nvar ProcessingInstruction = domhandler.ProcessingInstruction;\nvar Text = domhandler.Text;\n\nvar caseSensitiveTagNamesMap = {};\nvar tagName;\n\nfor (var i = 0, len = CASE_SENSITIVE_TAG_NAMES.length; i < len; i++) {\n  tagName = CASE_SENSITIVE_TAG_NAMES[i];\n  caseSensitiveTagNamesMap[tagName.toLowerCase()] = tagName;\n}\n\n/**\n * Gets case-sensitive tag name.\n *\n * @param  {string}           tagName - Tag name in lowercase.\n * @return {string|undefined}         - Case-sensitive tag name.\n */\nfunction getCaseSensitiveTagName(tagName) {\n  return caseSensitiveTagNamesMap[tagName];\n}\n\n/**\n * Formats DOM attributes to a hash map.\n *\n * @param  {NamedNodeMap} attributes - List of attributes.\n * @return {object}                  - Map of attribute name to value.\n */\nfunction formatAttributes(attributes) {\n  var result = {};\n  var attribute;\n  // `NamedNodeMap` is array-like\n  for (var i = 0, len = attributes.length; i < len; i++) {\n    attribute = attributes[i];\n    result[attribute.name] = attribute.value;\n  }\n  return result;\n}\n\n/**\n * Corrects the tag name if it is case-sensitive (SVG).\n * Otherwise, returns the lowercase tag name (HTML).\n *\n * @param  {string} tagName - Lowercase tag name.\n * @return {string}         - Formatted tag name.\n */\nfunction formatTagName(tagName) {\n  tagName = tagName.toLowerCase();\n  var caseSensitiveTagName = getCaseSensitiveTagName(tagName);\n  if (caseSensitiveTagName) {\n    return caseSensitiveTagName;\n  }\n  return tagName;\n}\n\n/**\n * Transforms DOM nodes to `domhandler` nodes.\n *\n * @param  {NodeList}     nodes         - DOM nodes.\n * @param  {Element|null} [parent=null] - Parent node.\n * @param  {string}       [directive]   - Directive.\n * @return {Array<Comment|Element|ProcessingInstruction|Text>}\n */\nfunction formatDOM(nodes, parent, directive) {\n  parent = parent || null;\n  var result = [];\n\n  for (var index = 0, len = nodes.length; index < len; index++) {\n    var node = nodes[index];\n    var current;\n\n    // set the node data given the type\n    switch (node.nodeType) {\n      case 1:\n        // script, style, or tag\n        current = new Element(\n          formatTagName(node.nodeName),\n          formatAttributes(node.attributes)\n        );\n        current.children = formatDOM(node.childNodes, current);\n        break;\n\n      case 3:\n        current = new Text(node.nodeValue);\n        break;\n\n      case 8:\n        current = new Comment(node.nodeValue);\n        break;\n\n      default:\n        continue;\n    }\n\n    // set previous node next\n    var prev = result[index - 1] || null;\n    if (prev) {\n      prev.next = current;\n    }\n\n    // set properties for current node\n    current.parent = parent;\n    current.prev = prev;\n    current.next = null;\n\n    result.push(current);\n  }\n\n  if (directive) {\n    current = new ProcessingInstruction(\n      directive.substring(0, directive.indexOf(' ')).toLowerCase(),\n      directive\n    );\n    current.next = result[0] || null;\n    current.parent = parent;\n    result.unshift(current);\n\n    if (result[1]) {\n      result[1].prev = result[0];\n    }\n  }\n\n  return result;\n}\n\n/**\n * Detects if browser is Internet Explorer.\n *\n * @return {boolean} - Whether IE is detected.\n */\nfunction isIE() {\n  return /(MSIE |Trident\\/|Edge\\/)/.test(navigator.userAgent);\n}\n\nmodule.exports = {\n  formatAttributes: formatAttributes,\n  formatDOM: formatDOM,\n  isIE: isIE\n};\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n    /** Type for the root element of a document */\n    ElementType[\"Root\"] = \"root\";\n    /** Type for Text */\n    ElementType[\"Text\"] = \"text\";\n    /** Type for <? ... ?> */\n    ElementType[\"Directive\"] = \"directive\";\n    /** Type for <!-- ... --> */\n    ElementType[\"Comment\"] = \"comment\";\n    /** Type for <script> tags */\n    ElementType[\"Script\"] = \"script\";\n    /** Type for <style> tags */\n    ElementType[\"Style\"] = \"style\";\n    /** Type for Any tag */\n    ElementType[\"Tag\"] = \"tag\";\n    /** Type for <![CDATA[ ... ]]> */\n    ElementType[\"CDATA\"] = \"cdata\";\n    /** Type for <!doctype ...> */\n    ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n    return (elem.type === ElementType.Tag ||\n        elem.type === ElementType.Script ||\n        elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","/* eslint no-negated-condition: 0, no-new-func: 0 */\n\n'use strict';\n\nif (typeof self !== 'undefined') {\n\tmodule.exports = self;\n} else if (typeof window !== 'undefined') {\n\tmodule.exports = window;\n} else {\n\tmodule.exports = Function('return this')();\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) {\n\t\treturn implementation;\n\t}\n\treturn global;\n};\n","/**\n * XHR based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction xhr() {\n\tconst xhr = new window.XMLHttpRequest();\n\n\treturn {\n\t\tname: 'xhr',\n\t\tsend: function (url, data) {\n\t\t\txhr.open('POST', url, true);\n\t\t\txhr.withCredentials = true;\n\t\t\txhr.setRequestHeader('Content-type', 'application/json');\n\t\t\txhr.send(data);\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\txhr.onerror = function () {\n\t\t\t\tcallback(this);\n\t\t\t};\n\t\t\txhr.onload = function () {\n\t\t\t\tif (xhr.status >= 200 && xhr.status < 300) {\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tcallback('Incorrect response: ' + xhr.status);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n}\n\nexport { xhr };\n","/**\n * Beacon based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction sendBeacon() {\n\tlet resolver;\n\tlet rejecter;\n\tconst p = new Promise((resolve, reject) => {\n\t\tresolver = resolve;\n\t\trejecter = reject;\n\t});\n\treturn {\n\t\tname: 'sendBeacon',\n\t\tsend: function (url, data) {\n\t\t\tif (navigator.sendBeacon(url, data)) {\n\t\t\t\tresolver();\n\t\t\t} else {\n\t\t\t\trejecter(new Error('Failed to send beacon event: ' + data.toString()));\n\t\t\t}\n\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\tif (callback) {\n\t\t\t\tp.then(callback, callback);\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport { sendBeacon };\n","import {encode} from '../../utils.js';\n\n/**\n * Image based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction image () {\n\tconst image = new Image(1,1);\n\n\treturn {\n\t\tname: 'image',\n\t\tsend: function (url, data) {\n\t\t\turl = url.replace('https://spoor-api.ft.com/ingest', 'https://spoor-api.ft.com/px.gif');\n\t\t\timage.src = url + (url.indexOf('?') > -1 ? '&' : '?') + 'data=' + encode(data);\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\tif (image.addEventListener) {\n\t\t\t\timage.addEventListener('error', callback);\n\t\t\t\timage.addEventListener('load', () => callback());\n\t\t\t} else { // it's IE!\n\t\t\t\timage.attachEvent('onerror', callback);\n\t\t\t\timage.attachEvent('onload', () => callback());\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport { image };\n","import {xhr} from './xhr.js';\nimport {sendBeacon} from './send-beacon.js';\nimport {image} from './image.js';\n\nexport {\n\txhr,\n\tsendBeacon,\n\timage\n};\n\n/**\n * @type {object|undefined} - mock transport for testing\n */\nexport const mock = {};\n\n/**\n * Given the name of a transport, returns that transport if it exists.\n *\n * @param {string} name - The name of the transport to use\n * @returns {Function|undefined} - The transport function or undefined if not found.\n */\nexport function get(name) {\n\tif (mock.transport) {\n\t\treturn mock.transport;\n\t}\n\tswitch (name) {\n\t\tcase 'xhr': {\n\t\t\treturn xhr;\n\t\t}\n\t\tcase 'sendBeacon': {\n\t\t\treturn sendBeacon;\n\t\t}\n\t\tcase 'image': {\n\t\t\treturn image;\n\t\t}\n\t\tdefault: {\n\t\t\treturn undefined;\n\t\t}\n\t}\n}\n","import {get as getSetting} from './settings.js';\nimport {broadcast, is, findCircularPathsIn, containsCircularPaths, merge, addEvent, log} from '../utils.js';\nimport {Queue} from './queue.js';\nimport {get as getTransport} from './transports/index.js';\n\n/**\n * Queue queue.\n *\n * @type {Queue}\n */\nlet queue;\n\n/**\n * Consistent check to see if we should use sendBeacon or not.\n *\n * @returns {boolean} Should we use sendBeacon?\n */\nfunction should_use_sendBeacon() {\n\tlet config = getSetting('config') || {};\n\tif (config.queue === true) {\n\t\treturn false;\n\t} else {\n\t\treturn Boolean(navigator.sendBeacon);\n\t}\n}\n\n/**\n * Attempts to send a tracking request.\n *\n * @param {object} request The request to be sent.\n * @param {Function=} callback Callback to fire the next item in the queue.\n * @returns {void}\n */\nfunction sendRequest(request, callback) {\n\tconst queueTime = request.queueTime;\n\tconst offlineLag = new Date().getTime() - queueTime;\n\n\tconst transport = should_use_sendBeacon() ? getTransport('sendBeacon')() :\n\t\twindow.XMLHttpRequest && 'withCredentials' in new window.XMLHttpRequest() ? getTransport('xhr')() :\n\t\t\tgetTransport('image')();\n\tconst user_callback = request.callback;\n\n\tconst core_system = getSetting('config') && getSetting('config').system || {};\n\tconst system = merge(core_system, {\n\t\tversion: getSetting('version'), // Version of the tracking client e.g. '1.2'\n\t\tsource: getSetting('source'), // Source of the tracking client e.g. 'o-tracking'\n\t\ttransport: transport.name, // The transport method used.\n\t});\n\n\tif (getSetting('config').test || getSetting('config').test_data) {\n\t\tsystem.is_live = false;\n\t} else {\n\t\tsystem.is_live = true;\n\t}\n\n\n\trequest = merge({ system: system }, request);\n\n\t// Only bothered about offlineLag if it's longer than a second, but less than 12 months. (Especially as Date can be dodgy)\n\tif (offlineLag > 1000 && offlineLag < 12 * 30 * 24 * 60 * 60 * 1000) {\n\t\trequest.time = request.time || {};\n\t\trequest.time.offset = offlineLag;\n\t}\n\tdelete request.callback;\n\tdelete request.type;\n\tdelete request.queueTime;\n\n\tlog('user_callback', user_callback);\n\tlog('PreSend', request);\n\n\tif (containsCircularPaths(request)) {\n\t\tconst errorMessage = \"o-tracking does not support circular references in the analytics data.\\n\" +\n\t\t\"Please remove the circular references in the data.\\n\" +\n\t\t\"Here are the paths in the data which are circular:\\n\" +\n\t\tJSON.stringify(findCircularPathsIn(request), undefined, 4);\n\t\tthrow new Error(errorMessage);\n\t}\n\n\tconst stringifiedData = JSON.stringify(request);\n\n\ttransport.complete(function (error) {\n\t\tif (is(user_callback, 'function')) {\n\t\t\tuser_callback.call(request);\n\t\t\tlog('calling user_callback');\n\t\t}\n\n\t\tif (error) {\n\t\t\t// Re-add to the queue if it failed.\n\t\t\t// Re-apply queueTime here\n\t\t\trequest.queueTime = queueTime;\n\t\t\tqueue.add(request).save();\n\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tinfo: { module: 'o-tracking' }\n\t\t\t});\n\t\t} else if (callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\t/**\n\t * Default collection server.\n\t */\n\tlet url = 'https://spoor-api.ft.com/ingest';\n\n\tif (request && request.category && request.action) {\n\t\turl += `?type=${request.category}:${request.action}`;\n\t}\n\n\ttransport.send(url, stringifiedData);\n}\n\n/**\n * Adds a new request to the list of pending requests\n *\n * @param {object} request The request to queue\n * @returns {void}\n */\nfunction add(request) {\n\trequest.queueTime = new Date().getTime();\n\tif (should_use_sendBeacon()) {\n\t\tsendRequest(request);\n\t} else {\n\t\tqueue.add(request).save();\n\t}\n\tlog('AddedToQueue', queue);\n}\n\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n *\n * @param {Function} [callback] - Optional callback\n * @returns {void}\n */\nfunction run(callback = function () { /* empty */}) {\n\t// Investigate queue lengths bug\n\t// https://jira.ft.com/browse/DTP-330\n\tconst all_events = queue.all();\n\n\tif (all_events.length > 200) {\n\t\tconst counts = {};\n\n\t\tall_events.forEach(function (event) {\n\t\t\tconst label = [event.category, event.action].join(':');\n\n\t\t\tif (!Object.prototype.hasOwnProperty.call(counts, label)) {\n\t\t\t\tcounts[label] = 0;\n\t\t\t}\n\n\t\t\tcounts[label] += 1;\n\t\t});\n\n\t\tqueue.replace([]);\n\n\t\tqueue.add({\n\t\t\tcategory: 'o-tracking',\n\t\t\taction: 'queue-bug',\n\t\t\tcontext: {\n\t\t\t\turl: document.URL,\n\t\t\t\tqueue_length: all_events.length,\n\t\t\t\tcounts: counts,\n\t\t\t\tstorage: queue.storage.storage._type\n\t\t\t}\n\t\t});\n\t}\n\n\tconst next = function () {\n\t\trun();\n\t\tcallback();\n\t};\n\tconst nextRequest = queue.shift();\n\n\t// Cancel if we've run out of requests.\n\tif (!nextRequest) {\n\t\treturn callback();\n\t}\n\n\t// Send this request, then try run again.\n\treturn sendRequest(nextRequest, next);\n}\n\n/**\n * Convenience function to add and run a request all in one go.\n *\n * @param {object} request The request to queue and run.\n * @returns {void}\n */\nfunction addAndRun(request) {\n\tadd(request);\n\trun();\n}\n\n/**\n * Init a queue and send any leftover events.\n *\n * @returns {Queue} An initialised queue.\n */\nfunction init() {\n\tqueue = new Queue('requests');\n\n\t// If any tracking calls are made whilst offline, try sending them the next time the device comes online\n\taddEvent(window, 'online', function() {\n\t\trun();\n\t});\n\n\t// On startup, try sending any requests queued from a previous session.\n\trun();\n\n\treturn queue;\n}\n\nexport {\n\tinit,\n\tadd,\n\trun,\n\taddAndRun\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeObservation_1 = require(\"./ResizeObservation\");\nvar ResizeObserverEntry_1 = require(\"./ResizeObserverEntry\");\nvar resizeObservers = [];\nvar ResizeObserver = /** @class */ (function () {\n    function ResizeObserver(callback) {\n        /** @internal */\n        this.$$observationTargets = [];\n        /** @internal */\n        this.$$activeTargets = [];\n        /** @internal */\n        this.$$skippedTargets = [];\n        var message = callbackGuard(callback);\n        if (message) {\n            throw TypeError(message);\n        }\n        this.$$callback = callback;\n    }\n    ResizeObserver.prototype.observe = function (target) {\n        var message = targetGuard('observe', target);\n        if (message) {\n            throw TypeError(message);\n        }\n        var index = findTargetIndex(this.$$observationTargets, target);\n        if (index >= 0) {\n            return;\n        }\n        this.$$observationTargets.push(new ResizeObservation_1.ResizeObservation(target));\n        registerResizeObserver(this);\n    };\n    ResizeObserver.prototype.unobserve = function (target) {\n        var message = targetGuard('unobserve', target);\n        if (message) {\n            throw TypeError(message);\n        }\n        var index = findTargetIndex(this.$$observationTargets, target);\n        if (index < 0) {\n            return;\n        }\n        this.$$observationTargets.splice(index, 1);\n        if (this.$$observationTargets.length === 0) {\n            deregisterResizeObserver(this);\n        }\n    };\n    ResizeObserver.prototype.disconnect = function () {\n        this.$$observationTargets = [];\n        this.$$activeTargets = [];\n        deregisterResizeObserver(this);\n    };\n    return ResizeObserver;\n}());\nexports.ResizeObserver = ResizeObserver;\nfunction registerResizeObserver(resizeObserver) {\n    var index = resizeObservers.indexOf(resizeObserver);\n    if (index < 0) {\n        resizeObservers.push(resizeObserver);\n        startLoop();\n    }\n}\nfunction deregisterResizeObserver(resizeObserver) {\n    var index = resizeObservers.indexOf(resizeObserver);\n    if (index >= 0) {\n        resizeObservers.splice(index, 1);\n        checkStopLoop();\n    }\n}\nfunction callbackGuard(callback) {\n    if (typeof (callback) === 'undefined') {\n        return \"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\";\n    }\n    if (typeof (callback) !== 'function') {\n        return \"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\";\n    }\n}\nfunction targetGuard(functionName, target) {\n    if (typeof (target) === 'undefined') {\n        return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': 1 argument required, but only 0 present.\";\n    }\n    if (!(target && target.nodeType === window.Node.ELEMENT_NODE)) {\n        return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': parameter 1 is not of type 'Element'.\";\n    }\n}\nfunction findTargetIndex(collection, target) {\n    for (var index = 0; index < collection.length; index += 1) {\n        if (collection[index].target === target) {\n            return index;\n        }\n    }\n    return -1;\n}\nvar gatherActiveObservationsAtDepth = function (depth) {\n    resizeObservers.forEach(function (ro) {\n        ro.$$activeTargets = [];\n        ro.$$skippedTargets = [];\n        ro.$$observationTargets.forEach(function (ot) {\n            if (ot.isActive()) {\n                var targetDepth = calculateDepthForNode(ot.target);\n                if (targetDepth > depth) {\n                    ro.$$activeTargets.push(ot);\n                }\n                else {\n                    ro.$$skippedTargets.push(ot);\n                }\n            }\n        });\n    });\n};\nvar hasActiveObservations = function () {\n    return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; });\n};\nvar hasSkippedObservations = function () {\n    return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; });\n};\nvar broadcastActiveObservations = function () {\n    var shallowestTargetDepth = Infinity;\n    resizeObservers.forEach(function (ro) {\n        if (!ro.$$activeTargets.length) {\n            return;\n        }\n        var entries = [];\n        ro.$$activeTargets.forEach(function (obs) {\n            var entry = new ResizeObserverEntry_1.ResizeObserverEntry(obs.target);\n            entries.push(entry);\n            obs.$$broadcastWidth = entry.contentRect.width;\n            obs.$$broadcastHeight = entry.contentRect.height;\n            var targetDepth = calculateDepthForNode(obs.target);\n            if (targetDepth < shallowestTargetDepth) {\n                shallowestTargetDepth = targetDepth;\n            }\n        });\n        ro.$$callback(entries, ro);\n        ro.$$activeTargets = [];\n    });\n    return shallowestTargetDepth;\n};\nvar deliverResizeLoopErrorNotification = function () {\n    var errorEvent = new window.ErrorEvent('ResizeLoopError', {\n        message: 'ResizeObserver loop completed with undelivered notifications.',\n    });\n    window.dispatchEvent(errorEvent);\n};\nvar calculateDepthForNode = function (target) {\n    var depth = 0;\n    while (target.parentNode) {\n        target = target.parentNode;\n        depth += 1;\n    }\n    return depth;\n};\nvar notificationIteration = function () {\n    var depth = 0;\n    gatherActiveObservationsAtDepth(depth);\n    while (hasActiveObservations()) {\n        depth = broadcastActiveObservations();\n        gatherActiveObservationsAtDepth(depth);\n    }\n    if (hasSkippedObservations()) {\n        deliverResizeLoopErrorNotification();\n    }\n};\nvar animationFrameCancelToken;\nvar startLoop = function () {\n    if (animationFrameCancelToken)\n        return;\n    runLoop();\n};\nvar runLoop = function () {\n    animationFrameCancelToken = window.requestAnimationFrame(function () {\n        notificationIteration();\n        runLoop();\n    });\n};\nvar checkStopLoop = function () {\n    if (animationFrameCancelToken && !resizeObservers.some(function (ro) { return !!ro.$$observationTargets.length; })) {\n        window.cancelAnimationFrame(animationFrameCancelToken);\n        animationFrameCancelToken = undefined;\n    }\n};\nvar install = function () {\n    return window.ResizeObserver = ResizeObserver;\n};\nexports.install = install;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBd0Q7QUFFeEQsNkRBQTREO0FBRTVELElBQU0sZUFBZSxHQUFHLEVBQXNCLENBQUM7QUFFL0M7SUFVSSx3QkFBWSxRQUFnQztRQVA1QyxnQkFBZ0I7UUFDVCx5QkFBb0IsR0FBRyxFQUF5QixDQUFDO1FBQ3hELGdCQUFnQjtRQUNULG9CQUFlLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxnQkFBZ0I7UUFDVCxxQkFBZ0IsR0FBRyxFQUF5QixDQUFDO1FBR2hELElBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVNLGdDQUFPLEdBQWQsVUFBZSxNQUFlO1FBQzFCLElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ1osT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUQsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGtDQUFTLEdBQWhCLFVBQWlCLE1BQWU7UUFDNUIsSUFBTSxPQUFPLEdBQUcs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","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\n// src/article-layout/index.js\nvar article_layout_exports = {};\n__export(article_layout_exports, {\n  Context: () => Context,\n  default: () => article_layout_default\n});\nmodule.exports = __toCommonJS(article_layout_exports);\nvar import_react9 = __toESM(require(\"react\"));\nvar import_prop_types6 = __toESM(require(\"prop-types\"));\n\n// src/shared/proptypes.js\nvar import_prop_types = __toESM(require(\"prop-types\"));\nvar StringBoolPropType = import_prop_types.default.oneOfType([import_prop_types.default.string, import_prop_types.default.bool]);\nvar flagsPropType = import_prop_types.default.shape({\n  prod: StringBoolPropType.isRequired,\n  errorReporting: StringBoolPropType.isRequired,\n  analytics: StringBoolPropType.isRequired,\n  googleAnalytics: StringBoolPropType.isRequired,\n  ads: StringBoolPropType.isRequired,\n  mainImage: StringBoolPropType.isRequired,\n  summary: StringBoolPropType.isRequired,\n  bylines: StringBoolPropType.isRequired,\n  onwardjourney: StringBoolPropType.isRequired,\n  shareButtons: StringBoolPropType.isRequired,\n  header: StringBoolPropType.isRequired,\n  footer: StringBoolPropType.isRequired,\n  comments: StringBoolPropType.isRequired,\n  data: StringBoolPropType.isRequired,\n  dark: StringBoolPropType.isRequired\n});\nvar mainImagePropType = import_prop_types.default.oneOfType([\n  import_prop_types.default.shape({\n    uuid: import_prop_types.default.string.isRequired\n  }),\n  import_prop_types.default.shape({\n    url: import_prop_types.default.string.isRequired\n  })\n]).isRequired;\nvar trackingPropType = import_prop_types.default.shape({\n  micrositeName: import_prop_types.default.string,\n  product: import_prop_types.default.string\n});\nvar topicPropType = import_prop_types.default.shape({\n  url: import_prop_types.default.string.isRequired,\n  name: import_prop_types.default.string.isRequired\n});\nvar dataMetaPropType = import_prop_types.default.shape({\n  \"@context\": import_prop_types.default.oneOf([\"https://schema.org/\"]),\n  \"@type\": import_prop_types.default.oneOf([\"Dataset\"]),\n  name: import_prop_types.default.string.isRequired,\n  description: import_prop_types.default.string.isRequired,\n  url: import_prop_types.default.string.isRequired,\n  sameAs: import_prop_types.default.string.isRequired,\n  keywords: import_prop_types.default.arrayOf(import_prop_types.default.string).isRequired,\n  creator: import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"Organization\"]),\n    url: import_prop_types.default.string.isRequired,\n    name: import_prop_types.default.string.isRequired,\n    contactPoint: import_prop_types.default.shape({\n      \"@type\": import_prop_types.default.oneOf([\"ContactPoint\"]),\n      contactType: import_prop_types.default.string,\n      telephone: import_prop_types.default.string,\n      email: import_prop_types.default.string\n    })\n  }).isRequired,\n  includedInDataCatalog: import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"DataCatalog\"]),\n    name: import_prop_types.default.string.isRequired\n  }),\n  distribution: import_prop_types.default.arrayOf(import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"DataDownload\"]),\n    encodingFormat: import_prop_types.default.string.isRequired,\n    contentUrl: import_prop_types.default.string.isRequired\n  })),\n  temporalCoverage: import_prop_types.default.string.isRequired,\n  spatialCoverage: import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"Place\"]),\n    geo: import_prop_types.default.shape({\n      \"@type\": import_prop_types.default.oneOf([\"GeoShape\"]),\n      box: import_prop_types.default.string.isRequired\n    })\n  })\n});\nvar bylinesPropType = import_prop_types.default.oneOfType([\n  import_prop_types.default.string,\n  import_prop_types.default.arrayOf(import_prop_types.default.shape({\n    name: import_prop_types.default.string.isRequired,\n    url: import_prop_types.default.string,\n    location: import_prop_types.default.string\n  }))\n]);\n\n// src/header/index.js\nvar import_react = __toESM(require(\"react\"));\nvar import_main = __toESM(require(\"@financial-times/o-header/main\"));\nvar Header = (_a) => {\n  var _b = _a, { flags } = _b, props = __objRest(_b, [\"flags\"]);\n  const ref = (0, import_react.useRef)();\n  const { dark } = flags;\n  const headerClasses = [\"o-header\", \"o-header--simple\", dark && \"o-header--transparent\"].filter((i) => i).join(\" \");\n  (0, import_react.useEffect)(() => {\n    (() => __async(void 0, null, function* () {\n      try {\n        new import_main.default(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    }))();\n  }, []);\n  return /* @__PURE__ */ import_react.default.createElement(\"header\", {\n    ref,\n    className: headerClasses,\n    \"data-o-component\": \"o-header\",\n    \"data-o-header--no-js\": \"\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: \"o-header__row o-header__top\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: \"o-header__container\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: \"o-header__top-wrapper\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: \"o-header__top-column o-header__top-column--center\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"a\", {\n    className: \"o-header__top-logo\",\n    href: \"https://www.ft.com/\",\n    title: \"Go to Financial Times homepage\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"span\", {\n    className: \"o-header__visually-hidden\"\n  }, \"Financial Times\")))))));\n};\nHeader.displayName = \"GHeader\";\nHeader.propTypes = {\n  flags: flagsPropType\n};\nHeader.defaultProps = {\n  flags: {\n    dark: false\n  }\n};\nvar header_default = Header;\n\n// src/analytics/index.js\nvar import_react3 = __toESM(require(\"react\"));\nvar import_prop_types2 = __toESM(require(\"prop-types\"));\nvar import_core = __toESM(require(\"@financial-times/o-tracking/src/javascript/core\"));\nvar import_utils = require(\"@financial-times/o-tracking/src/javascript/utils\");\nvar import_settings = require(\"@financial-times/o-tracking/src/javascript/core/settings\");\nvar import_flourish_receive_custom_analytics = __toESM(require(\"@financial-times/flourish-receive-custom-analytics\"));\n\n// src/shared/helpers.js\nvar import_react2 = __toESM(require(\"react\"));\nvar import_remove_markdown = __toESM(require(\"remove-markdown\"));\nvar import_main2 = require(\"@financial-times/o-grid/main\");\nfunction encodedJSON(_data) {\n  const data = _data instanceof String ? JSON.parse(_data) : _data;\n  try {\n    return encodeURIComponent(JSON.stringify(data, null, \"\"));\n  } catch (e) {\n    return \"\";\n  }\n}\nfunction spoorTrackingPixel(data) {\n  const jsonString = encodedJSON(data);\n  if (document) {\n    const ieVersion = document.documentMode ? document.documentMode : 99;\n    const img = `<img src=\"https://spoor-api.ft.com/px.gif?data=${jsonString}\" height=\"1\" width=\"1\" />`;\n    return ieVersion < 9 ? img : /* @__PURE__ */ import_react2.default.createElement(\"noscript\", {\n      \"data-o-component\": \"o-tracking\"\n    }, img);\n  }\n  return null;\n}\nvar makeCancelable = (promise) => {\n  let hasCanceled = false;\n  const wrappedPromise = new Promise((resolve, reject) => {\n    promise.then((val) => hasCanceled ? reject({ isCanceled: true }) : resolve(val), (error) => hasCanceled ? reject({ isCanceled: true }) : reject(error));\n  });\n  return {\n    promise: wrappedPromise,\n    cancel() {\n      hasCanceled = true;\n    }\n  };\n};\nvar registerLayoutChangeEvents = () => {\n  const { layouts } = (0, import_main2.getGridBreakpoints)();\n  if (layouts) {\n    const breakpoints = new Map([...Object.entries(layouts), [\"default\", \"240px\"]]);\n    const decr1 = (val) => `${Number(val.replace(\"px\", \"\") - 1)}px`;\n    const setupQuery = (query, size) => {\n      const handleMQChange = (mql2) => {\n        if (mql2.matches) {\n          window.dispatchEvent(new CustomEvent(\"o-grid.layoutChange\", {\n            detail: size\n          }));\n        }\n      };\n      const mql = window.matchMedia(query);\n      mql.addListener(handleMQChange);\n      handleMQChange(mql);\n      return [query, handleMQChange];\n    };\n    return [...breakpoints].map(([size, width]) => {\n      switch (size) {\n        case \"S\":\n          return setupQuery(`(min-width: ${width}) and (max-width: ${decr1(breakpoints.get(\"M\"))})`, size);\n        case \"M\":\n          return setupQuery(`(min-width: ${width}) and (max-width: ${decr1(breakpoints.get(\"L\"))})`, size);\n        case \"L\":\n          return setupQuery(`(min-width: ${width}) and (max-width: ${decr1(breakpoints.get(\"XL\"))})`, size);\n        case \"XL\":\n          return setupQuery(`(min-width: ${width})`, size);\n        case \"default\":\n        default:\n          return setupQuery(`(max-width: ${decr1(breakpoints.get(\"S\"))})`, size);\n      }\n    });\n  }\n  throw new Error(\"To enable grid layout change events, include oGridSurfaceLayoutSizes in your Sass\");\n};\nvar unregisterLayoutChangeEvents = (listeners) => {\n  const { layouts } = (0, import_main2.getGridBreakpoints)();\n  if (layouts) {\n    const breakpoints = new Map([...Object.entries(layouts), [\"default\", \"240px\"]]);\n    const decr1 = (val) => `${Number(val.replace(\"px\", \"\") - 1)}px`;\n    const removeQuery = (query) => {\n      const [, listener] = listeners.find(([q]) => q === query);\n      const mql = window.matchMedia(query);\n      mql.removeListener(listener);\n    };\n    breakpoints.forEach((width, size) => {\n      switch (size) {\n        case \"S\":\n          removeQuery(`(min-width: ${width}) and (max-width: ${decr1(breakpoints.get(\"M\"))})`, size);\n          break;\n        case \"M\":\n          removeQuery(`(min-width: ${width}) and (max-width: ${decr1(breakpoints.get(\"L\"))})`, size);\n          break;\n        case \"L\":\n          removeQuery(`(min-width: ${width}) and (max-width: ${decr1(breakpoints.get(\"XL\"))})`, size);\n          break;\n        case \"XL\":\n          removeQuery(`(min-width: ${width})`, size);\n          break;\n        case \"default\":\n        default:\n          removeQuery(`(max-width: ${decr1(breakpoints.get(\"S\"))})`, size);\n          break;\n      }\n    });\n  }\n};\n\n// src/analytics/index.js\nvar Analytics = ({ id, tracking, flags, scrollDepthTarget }) => {\n  const [isInitialised, setIsInitialised] = (0, import_react3.useState)(false);\n  (0, import_react3.useEffect)(() => {\n    if (!isInitialised) {\n      (() => __async(void 0, null, function* () {\n        setIsInitialised(true);\n        const nTracking = yield import(\"@financial-times/n-tracking\");\n        try {\n          if (!window.cutsTheMustard)\n            return;\n          const pageData = {\n            content: { asset_type: \"interactive\" }\n          };\n          const properties = [].reduce.call(document.querySelectorAll('head meta[property^=\"ft.track:\"]') || [], (o, el) => {\n            if (!el)\n              return o;\n            const attName = el.getAttribute(\"property\").replace(\"ft.track:\", \"\");\n            o[attName] = el.getAttribute(\"content\");\n            return o;\n          }, {});\n          const contentId = id || document.documentElement.getAttribute(\"data-content-id\");\n          if (contentId) {\n            pageData.content.uuid = contentId;\n          }\n          if (properties.microsite_name) {\n            pageData.microsite_name = properties.microsite_name;\n          }\n          const appContext = __spreadValues({\n            product: properties.product || \"IG\"\n          }, pageData);\n          const oTracking = nTracking.init({\n            appContext\n          });\n          import_flourish_receive_custom_analytics.default.init((data) => {\n            const config = (0, import_utils.merge)((0, import_settings.get)(\"config\"), data);\n            import_core.default.track(config);\n          });\n          nTracking.trackers.pageAttention({ target: scrollDepthTarget });\n        } catch (e) {\n          console.error(e);\n        }\n      }))();\n    }\n  }, [id]);\n  return /* @__PURE__ */ import_react3.default.createElement(import_react3.Fragment, null, spoorTrackingPixel({\n    action: \"view\",\n    category: \"page\",\n    context: {\n      content: {\n        asset_type: \"interactive\",\n        uuid: id\n      },\n      product: \"IG\",\n      microsite_name: tracking.micrositeName\n    },\n    system: {\n      is_live: flags.prod,\n      apiKey: \"qUb9maKfKbtpRsdp0p2J7uWxRPGJEP\",\n      source: \"o-tracking-ns\",\n      version: \"1.0.0\"\n    }\n  }), flags.googleAnalytics && /* @__PURE__ */ import_react3.default.createElement(\"script\", {\n    dangerouslySetInnerHTML: {\n      __html: `\n        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n        ga('create', 'UA-35229645-1', 'auto');\n        ga('require','displayfeatures');\n        ga('send', 'pageview');\n        `\n    }\n  }), /* @__PURE__ */ import_react3.default.createElement(\"script\", {\n    dangerouslySetInnerHTML: {\n      __html: `\n        var spoorId = /spoor-id=([^;]+)/.exec(document.cookie)[1] || 'cj5y2utdx00003i5z6l6po8c1';\n        var endpoint = 'https://4235225.fls.doubleclick.net/activityi;src=4235225;type=homeo886;cat=ft-ne000;u10=' + spoorId + ';dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=' + Date.now() + ';num=1';\n        var img = document.createElement('img');\n        img.setAttribute('width', 1);\n        img.setAttribute('height', 1);\n        img.setAttribute('src', endpoint);\n        img.style.position = 'absolute';\n        document.body.insertBefore(img, document.body.firstElementChild);\n        `\n    }\n  }));\n};\nAnalytics.displayName = \"GAnalytics\";\nAnalytics.displayName = \"GAnalytics\";\nAnalytics.propTypes = {\n  id: import_prop_types2.default.string.isRequired,\n  flags: flagsPropType.isRequired,\n  tracking: import_prop_types2.default.shape({\n    micrositeName: import_prop_types2.default.string\n  }),\n  scrollDepthTarget: import_prop_types2.default.string\n};\nAnalytics.defaultProps = {\n  tracking: {\n    micrositeName: void 0\n  },\n  scrollDepthTarget: \".article-body\"\n};\nvar analytics_default = Analytics;\n\n// src/ads/index.js\nvar import_react4 = __toESM(require(\"react\"));\nvar import_prop_types3 = __toESM(require(\"prop-types\"));\nvar Ad = ({\n  name,\n  targeting,\n  background,\n  reserve,\n  showAdsLabel,\n  defaultFormat,\n  smallFormat,\n  mediumFormat,\n  largeFormat,\n  extraFormat\n}) => {\n  return /* @__PURE__ */ import_react4.default.createElement(\"div\", {\n    className: `o-ads o-ads--center o-ads--${background === \"slate\" ? \"slate-\" : \"\"}background o-ads--reserve-${reserve} ${showAdsLabel ? \"o-ads--label-left\" : \"\"}`,\n    \"data-o-ads-name\": name,\n    \"data-o-ads-targeting\": targeting,\n    \"data-o-ads-formats-default\": defaultFormat,\n    \"data-o-ads-formats-small\": smallFormat,\n    \"data-o-ads-formats-medium\": mediumFormat,\n    \"data-o-ads-formats-large\": largeFormat,\n    \"data-o-ads-formats-extra\": extraFormat,\n    \"aria-hidden\": \"true\"\n  });\n};\nAd.displayName = \"GAd\";\nvar TopAd = () => /* @__PURE__ */ import_react4.default.createElement(Ad, {\n  name: \"top-ad\",\n  targeting: \"pos=top;\",\n  reserve: \"90\",\n  defaultFormat: false,\n  smallFormat: false,\n  mediumFormat: \"Leaderboard,Responsive\",\n  largeFormat: \"SuperLeaderboard,Leaderboard,Responsive\",\n  extraFormat: \"Billboard,SuperLeaderboard,Leaderboard,Responsive\"\n});\nTopAd.displayName = \"GTopAd\";\nvar MiddleAd = () => /* @__PURE__ */ import_react4.default.createElement(Ad, {\n  name: \"mid-ad\",\n  targeting: \"pos=mid;\",\n  reserve: \"250\",\n  showAdsLabel: true,\n  defaultFormat: \"Responsive\",\n  smallFormat: \"MediumRectangle,Responsive\",\n  mediumFormat: \"MediumRectangle,Responsive\",\n  largeFormat: \"MediumRectangle,Responsive\",\n  extraFormat: \"MediumRectangle,Responsive\"\n});\nMiddleAd.displayName = \"GMiddleAd\";\nAd.propTypes = {\n  name: import_prop_types3.default.string,\n  targeting: import_prop_types3.default.string,\n  background: import_prop_types3.default.oneOf([\"default\", \"slate\"]),\n  reserve: import_prop_types3.default.oneOf([\"90\", \"250\"]),\n  showAdsLabel: import_prop_types3.default.bool,\n  defaultFormat: import_prop_types3.default.oneOfType([import_prop_types3.default.bool, import_prop_types3.default.string]),\n  smallFormat: import_prop_types3.default.oneOfType([import_prop_types3.default.bool, import_prop_types3.default.string]),\n  mediumFormat: import_prop_types3.default.oneOfType([import_prop_types3.default.bool, import_prop_types3.default.string]),\n  largeFormat: import_prop_types3.default.oneOfType([import_prop_types3.default.bool, import_prop_types3.default.string]),\n  extraFormat: import_prop_types3.default.oneOfType([import_prop_types3.default.bool, import_prop_types3.default.string])\n};\nAd.defaultProps = {\n  name: \"top-ad\",\n  targeting: \"pos=top\",\n  background: \"default\",\n  reserve: \"90\",\n  showAdsLabel: false,\n  defaultFormat: false,\n  smallFormat: false,\n  mediumFormat: \"Leaderboard,Responsive\",\n  largeFormat: \"SuperLeaderboard,Leaderboard,Responsive\",\n  extraFormat: \"Billboard,SuperLeaderboard,Leaderboard,Responsive\"\n};\n\n// src/onwardjourney/index.js\nvar import_react5 = __toESM(require(\"react\"));\nvar import_prop_types4 = __toESM(require(\"prop-types\"));\nvar OnwardJourney = ({ urlBase, layout, relatedContent }) => {\n  const [sections, setSections] = (0, import_react5.useState)([]);\n  const sectionP = (0, import_react5.useRef)();\n  (0, import_react5.useEffect)(() => {\n    (() => __async(void 0, null, function* () {\n      sectionP.current = makeCancelable(Promise.all(relatedContent.map(({ list, rows = 1 }) => {\n        const limit = rows * 4;\n        const url = `${urlBase}${list}/html/${layout}?limit=${limit}`;\n        return fetch(url).then((res) => res.text());\n      })));\n      try {\n        const sections2 = yield sectionP.current.promise;\n        setSections(sections2);\n      } catch (e) {\n        if (e.isCanceled)\n          return;\n        console.error(e);\n      }\n    }))();\n    return () => {\n      sectionP.current.cancel();\n    };\n  }, [layout, relatedContent, urlBase]);\n  return sections.map((section, idx) => /* @__PURE__ */ import_react5.default.createElement(\"section\", {\n    key: idx,\n    className: \"onward-journey__section\",\n    \"data-g-component\": \"onward-journey\",\n    dangerouslySetInnerHTML: { __html: section }\n  }));\n};\nOnwardJourney.displayName = \"GOnwardJourney\";\nOnwardJourney.propTypes = {\n  relatedContent: import_prop_types4.default.arrayOf(import_prop_types4.default.shape({\n    rows: import_prop_types4.default.number.isRequired,\n    list: import_prop_types4.default.string\n  })),\n  urlBase: import_prop_types4.default.string,\n  layout: import_prop_types4.default.string\n};\nOnwardJourney.defaultProps = {\n  relatedContent: [],\n  urlBase: \"https://ig.ft.com/onwardjourney/v3/\",\n  layout: \"\"\n};\nvar onwardjourney_default = OnwardJourney;\n\n// src/comments/index.js\nvar import_react6 = __toESM(require(\"react\"));\nvar import_prop_types5 = __toESM(require(\"prop-types\"));\nvar import_main3 = __toESM(require(\"@financial-times/o-comments/main\"));\nvar Comments = ({ id, url, linkPageUrl, flags }) => {\n  const ref = (0, import_react6.useRef)();\n  const { dark } = flags;\n  (0, import_react6.useEffect)(() => {\n    if (id && linkPageUrl || id && url) {\n      new import_main3.default(ref.current, {\n        articleUrl: linkPageUrl || url,\n        articleId: id,\n        title: id\n      });\n    }\n  }, [id, url, linkPageUrl]);\n  const comments = /* @__PURE__ */ import_react6.default.createElement(\"div\", {\n    className: \"o-grid-container\"\n  }, /* @__PURE__ */ import_react6.default.createElement(\"div\", {\n    className: \"o-grid-row\"\n  }, /* @__PURE__ */ import_react6.default.createElement(\"div\", {\n    \"data-o-grid-colspan\": \"12 S11 Scenter M9 L8 XL7\"\n  }, /* @__PURE__ */ import_react6.default.createElement(\"div\", {\n    ref,\n    \"data-o-component\": \"o-comments\",\n    id: \"comments\"\n  }, /* @__PURE__ */ import_react6.default.createElement(\"div\", {\n    className: \"o--if-no-js\"\n  }, \"To participate in this chat, you need to upgrade to a newer web browser.\", \" \", /* @__PURE__ */ import_react6.default.createElement(\"a\", {\n    href: \"https://help.ft.com/tools-services/browser-compatibility/\"\n  }, \"Learn more.\"))))));\n  if (dark) {\n    return /* @__PURE__ */ import_react6.default.createElement(\"div\", {\n      className: \"pink\"\n    }, comments);\n  }\n  return comments;\n};\nComments.displayName = \"GComments\";\nComments.propTypes = {\n  title: import_prop_types5.default.string,\n  id: import_prop_types5.default.string.isRequired,\n  url: import_prop_types5.default.string.isRequired,\n  flags: flagsPropType\n};\nComments.defaultProps = {\n  title: \"Comments\",\n  flags: {\n    dark: false\n  }\n};\nvar comments_default = Comments;\nComments.displayName = \"GComments\";\n\n// src/footer/index.js\nvar import_react7 = __toESM(require(\"react\"));\nvar import_main4 = __toESM(require(\"@financial-times/o-footer/main\"));\nvar Footer = () => {\n  const ref = (0, import_react7.useRef)();\n  (0, import_react7.useEffect)(() => {\n    (() => __async(void 0, null, function* () {\n      try {\n        new import_main4.default(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    }))();\n  }, []);\n  return /* @__PURE__ */ import_react7.default.createElement(\"footer\", {\n    ref,\n    \"data-o-footer--no-js\": \"\",\n    className: \"o-footer o-footer--theme-dark\",\n    \"data-o-component\": \"o-footer\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__container\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__row\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"nav\", {\n    className: \"o-footer__matrix\",\n    role: \"navigation\",\n    \"aria-label\": \"Useful links\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-group o-footer__matrix-group--1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"h3\", {\n    className: \"o-footer__matrix-title\"\n  }, \"Support\"), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-content\",\n    id: \"o-footer-section-0\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-column\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"/tour\",\n    \"data-trackable\": \"View Site Tips\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"View Site Tips\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://help.ft.com\",\n    \"data-trackable\": \"Help Centre\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Help Centre\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://aboutus.ft.com/contact-us\",\n    \"data-trackable\": \"Contact Us\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Contact Us\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/aboutus\",\n    \"data-trackable\": \"About Us\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"About Us\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/accessibility\",\n    \"data-trackable\": \"Accessibility\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Accessibility\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/tour/myft\",\n    \"data-trackable\": \"myFT Tour\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"myFT Tour\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://aboutus.ft.com/en-gb/careers/\",\n    \"data-trackable\": \"Careers\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Careers\"))))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-group o-footer__matrix-group--1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"h3\", {\n    className: \"o-footer__matrix-title\"\n  }, \"Legal & Privacy\"), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-content\",\n    id: \"o-footer-section-1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-column\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://help.ft.com/help/legal-privacy/terms-conditions/\",\n    \"data-trackable\": \"Terms & Conditions\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Terms & Conditions\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://help.ft.com/help/legal-privacy/privacy/\",\n    \"data-trackable\": \"Privacy Policy\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Privacy Policy\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://help.ft.com/help/legal-privacy/cookies/\",\n    \"data-trackable\": \"Cookies\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Cookies\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\",\n    \"data-trackable\": \"Copyright\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Copyright\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://help.ft.com/help/legal/slavery-statement/\",\n    \"data-trackable\": \"Slavery Statement & Policies\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Slavery Statement & Policies\"))))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-group o-footer__matrix-group--1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"h3\", {\n    className: \"o-footer__matrix-title\",\n    \"aria-controls\": \"o-footer-section-2\"\n  }, \"Services\"), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-content\",\n    id: \"o-footer-section-2\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-column\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/securedrop\",\n    \"data-trackable\": \"Share News Tips Securely\",\n    \"data-o-tracking-do-not-track\": \"true\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Share News Tips Securely\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/products\",\n    \"data-trackable\": \"Individual Subscriptions\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Individual Subscriptions\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://enterprise.ft.com/en-gb/services/group-subscriptions/group-contact-us/?segmentId=383c7f63-abf4-b62d-cb33-4c278e6fdf61&cpccampaign=B2B_link_ft.com_footer\",\n    \"data-trackable\": \"Group Subscriptions\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Group Subscriptions\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://enterprise.ft.com/en-gb/services/republishing/\",\n    \"data-trackable\": \"Republishing\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Republishing\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.businessesforsale.com/ft2/notices\",\n    \"data-trackable\": \"Contracts & Tenders\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Contracts & Tenders\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.exec-appointments.com/\",\n    \"data-trackable\": \"Executive Job Search\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Executive Job Search\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://fttoolkit.co.uk/\",\n    \"data-trackable\": \"Advertise with the FT\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Advertise with the FT\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://twitter.com/financialtimes\",\n    \"data-trackable\": \"Follow the FT on Twitter\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Follow the FT on Twitter\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://transact.ft.com/\",\n    \"data-trackable\": \"FT Transact\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"FT Transact\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://enterprise.ft.com/en-gb/services/group-subscriptions/education/\",\n    \"data-trackable\": \"Secondary Schools\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Secondary Schools\"))))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-group o-footer__matrix-group--1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"h3\", {\n    className: \"o-footer__matrix-title\",\n    \"aria-controls\": \"o-footer-section-3\"\n  }, \"Tools\"), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-content\",\n    id: \"o-footer-section-3\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-column\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://markets.ft.com/data/portfolio/dashboard\",\n    \"data-trackable\": \"Portfolio\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Portfolio\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/todaysnewspaper\",\n    \"data-trackable\": \"Today's Newspaper (ePaper)\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Today's Newspaper (ePaper)\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://markets.ft.com/data/alerts/\",\n    \"data-trackable\": \"Alerts Hub\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Alerts Hub\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://rankings.ft.com\",\n    \"data-trackable\": \"Business School Rankings\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Business School Rankings\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://kat.ft.com/\",\n    \"data-trackable\": \"Enterprise Tools\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Enterprise Tools\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/news-feed\",\n    \"data-trackable\": \"News feed\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"News feed\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/newsletters\",\n    \"data-trackable\": \"Newsletters\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Newsletters\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://markets.ft.com/research/Markets/Currencies?segid=70113\",\n    \"data-trackable\": \"Currency Converter\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Currency Converter\"))))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-group o-footer__matrix-group--1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"h3\", {\n    className: \"o-footer__matrix-title\",\n    \"aria-controls\": \"o-footer-section-4\"\n  }, \"Community & Events\"), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-content\",\n    id: \"o-footer-section-4\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-column\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://www.ft.com/tour/community\",\n    \"data-trackable\": \"FT Community\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"FT Community\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://live.ft.com/\",\n    \"data-trackable\": \"FT Live\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"FT Live\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://forums.ft.com\",\n    \"data-trackable\": \"FT Forums\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"FT Forums\")), /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link\",\n    href: \"https://bdp.ft.com\",\n    \"data-trackable\": \"Board Director Programme\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"Board Director Programme\"))))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__matrix-group o-footer__matrix-group--1\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"h3\", {\n    className: \"o-footer__matrix-title o-footer__matrix-title--link\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    className: \"o-footer__matrix-link o-footer__matrix-link--more\",\n    id: \"o-footer-section-5\",\n    href: \"https://ft.com/more-from-ft-group\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"span\", {\n    className: \"o-footer__matrix-link__copy\"\n  }, \"More from the FT Group\")))))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__copyright\",\n    role: \"contentinfo\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"small\", null, \"Markets data delayed by at least 15 minutes. \\xA9 THE FINANCIAL TIMES LTD\", \" \", new Date().getFullYear(), \". \", /* @__PURE__ */ import_react7.default.createElement(\"abbr\", {\n    title: \"Financial Times\",\n    \"aria-label\": \"F T\"\n  }, \"FT\"), \" \", \"and \\u2018Financial Times\\u2019 are trademarks of The Financial Times Ltd.\", /* @__PURE__ */ import_react7.default.createElement(\"br\", null), \"The Financial Times and its journalism are subject to a self-regulation regime under the\", \" \", /* @__PURE__ */ import_react7.default.createElement(\"a\", {\n    href: \"https://aboutus.ft.com/en-gb/ft-editorial-code/\",\n    \"aria-label\": \"F T Editorial Code of Practice\"\n  }, \"FT Editorial Code of Practice\"), \".\"))), /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__brand\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__container\"\n  }, /* @__PURE__ */ import_react7.default.createElement(\"div\", {\n    className: \"o-footer__brand-logo\"\n  }))));\n};\nFooter.displayName = \"GFooter\";\nvar footer_default = Footer;\n\n// src/shared/hooks.js\nvar import_react8 = require(\"react\");\nvar useAds = (config, enabled = true) => {\n  (0, import_react8.useEffect)(() => {\n    (() => __async(void 0, null, function* () {\n      const { default: OAds } = yield import(\"@financial-times/ads-legacy-o-ads\");\n      try {\n        if (enabled) {\n          const initialised = yield OAds.init({\n            gpt: {\n              network: 5887,\n              site: config.gptSite || \"ft.com\",\n              zone: config.gptZone || \"unclassified\"\n            },\n            targeting: config.targeting,\n            lazyLoad: true\n          });\n          const slots = Array.from(document.querySelectorAll(\".o-ads, [data-o-ads-name]\"));\n          slots.forEach(initialised.slots.initSlot.bind(initialised.slots));\n        }\n      } catch (e) {\n        if (typeof global === \"undefined\" || !(global == null ? void 0 : global.STORYBOOK_ENV))\n          console.error(e);\n      }\n    }))();\n  }, [config, enabled]);\n};\nvar useLayoutChangeEvents = () => {\n  const [breakpoint, setBreakpoint] = (0, import_react8.useState)(\"default\");\n  const listenersRef = (0, import_react8.useRef)();\n  const update = ({ detail }) => {\n    setBreakpoint({ breakpoint: detail });\n  };\n  (0, import_react8.useEffect)(() => {\n    try {\n      window.addEventListener(\"o-grid.layoutChange\", update);\n      listenersRef.current = registerLayoutChangeEvents();\n      return () => {\n        unregisterLayoutChangeEvents(listenersRef.current);\n        window.removeEventListener(\"o-grid.layoutChange\", update);\n      };\n    } catch (e) {\n      if (typeof global === \"undefined\" || !(global == null ? void 0 : global.STORYBOOK_ENV))\n        console.error(e);\n    }\n  }, []);\n  return breakpoint;\n};\n\n// src/article-layout/index.js\nvar Context = (0, import_react9.createContext)({});\nvar ArticleLayout = (_a) => {\n  var _b = _a, { flags, ads, children } = _b, props = __objRest(_b, [\"flags\", \"ads\", \"children\"]);\n  const breakpoint = useLayoutChangeEvents();\n  useAds(ads, flags.ads);\n  return /* @__PURE__ */ import_react9.default.createElement(Context.Provider, {\n    value: __spreadValues({\n      flags,\n      ads,\n      breakpoint\n    }, props)\n  }, flags.analytics && /* @__PURE__ */ import_react9.default.createElement(analytics_default, __spreadValues({}, __spreadProps(__spreadValues({}, props), { flags, breakpoint }))), flags.ads && /* @__PURE__ */ import_react9.default.createElement(TopAd, null), flags.header && /* @__PURE__ */ import_react9.default.createElement(header_default, __spreadValues({\n    key: \"header\"\n  }, __spreadProps(__spreadValues({}, props), { flags, breakpoint }))), children, flags.onwardjourney && /* @__PURE__ */ import_react9.default.createElement(onwardjourney_default, __spreadValues({\n    key: \"oj\"\n  }, __spreadProps(__spreadValues({}, props), { breakpoint }))), flags.comments && /* @__PURE__ */ import_react9.default.createElement(comments_default, __spreadValues({\n    key: \"comments\"\n  }, __spreadProps(__spreadValues({}, props), { flags, breakpoint }))), flags.footer && /* @__PURE__ */ import_react9.default.createElement(footer_default, __spreadValues({\n    key: \"footer\"\n  }, __spreadProps(__spreadValues({}, props), { flags, breakpoint }))));\n};\nArticleLayout.displayName = \"GArticleLayout\";\nArticleLayout.propTypes = {\n  flags: flagsPropType.isRequired,\n  ads: import_prop_types6.default.exact({\n    gptSite: import_prop_types6.default.string.isRequired,\n    gptZone: StringBoolPropType.isRequired,\n    targeting: StringBoolPropType.isRequired\n  }),\n  children: import_prop_types6.default.oneOfType([import_prop_types6.default.node, import_prop_types6.default.arrayOf(import_prop_types6.default.node)]).isRequired\n};\nArticleLayout.defaultProps = {\n  ads: {\n    gptSite: \"test.5887.origami\",\n    gptZone: false,\n    targeting: false\n  }\n};\nvar article_layout_default = ArticleLayout;\n//# sourceMappingURL=index.js.map\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\n// src/bylines/index.js\nvar bylines_exports = {};\n__export(bylines_exports, {\n  default: () => bylines_default\n});\nmodule.exports = __toCommonJS(bylines_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_prop_types2 = __toESM(require(\"prop-types\"));\nvar import_main = __toESM(require(\"@financial-times/o-date/main\"));\n\n// src/shared/proptypes.js\nvar import_prop_types = __toESM(require(\"prop-types\"));\nvar StringBoolPropType = import_prop_types.default.oneOfType([import_prop_types.default.string, import_prop_types.default.bool]);\nvar flagsPropType = import_prop_types.default.shape({\n  prod: StringBoolPropType.isRequired,\n  errorReporting: StringBoolPropType.isRequired,\n  analytics: StringBoolPropType.isRequired,\n  googleAnalytics: StringBoolPropType.isRequired,\n  ads: StringBoolPropType.isRequired,\n  mainImage: StringBoolPropType.isRequired,\n  summary: StringBoolPropType.isRequired,\n  bylines: StringBoolPropType.isRequired,\n  onwardjourney: StringBoolPropType.isRequired,\n  shareButtons: StringBoolPropType.isRequired,\n  header: StringBoolPropType.isRequired,\n  footer: StringBoolPropType.isRequired,\n  comments: StringBoolPropType.isRequired,\n  data: StringBoolPropType.isRequired,\n  dark: StringBoolPropType.isRequired\n});\nvar mainImagePropType = import_prop_types.default.oneOfType([\n  import_prop_types.default.shape({\n    uuid: import_prop_types.default.string.isRequired\n  }),\n  import_prop_types.default.shape({\n    url: import_prop_types.default.string.isRequired\n  })\n]).isRequired;\nvar trackingPropType = import_prop_types.default.shape({\n  micrositeName: import_prop_types.default.string,\n  product: import_prop_types.default.string\n});\nvar topicPropType = import_prop_types.default.shape({\n  url: import_prop_types.default.string.isRequired,\n  name: import_prop_types.default.string.isRequired\n});\nvar dataMetaPropType = import_prop_types.default.shape({\n  \"@context\": import_prop_types.default.oneOf([\"https://schema.org/\"]),\n  \"@type\": import_prop_types.default.oneOf([\"Dataset\"]),\n  name: import_prop_types.default.string.isRequired,\n  description: import_prop_types.default.string.isRequired,\n  url: import_prop_types.default.string.isRequired,\n  sameAs: import_prop_types.default.string.isRequired,\n  keywords: import_prop_types.default.arrayOf(import_prop_types.default.string).isRequired,\n  creator: import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"Organization\"]),\n    url: import_prop_types.default.string.isRequired,\n    name: import_prop_types.default.string.isRequired,\n    contactPoint: import_prop_types.default.shape({\n      \"@type\": import_prop_types.default.oneOf([\"ContactPoint\"]),\n      contactType: import_prop_types.default.string,\n      telephone: import_prop_types.default.string,\n      email: import_prop_types.default.string\n    })\n  }).isRequired,\n  includedInDataCatalog: import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"DataCatalog\"]),\n    name: import_prop_types.default.string.isRequired\n  }),\n  distribution: import_prop_types.default.arrayOf(import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"DataDownload\"]),\n    encodingFormat: import_prop_types.default.string.isRequired,\n    contentUrl: import_prop_types.default.string.isRequired\n  })),\n  temporalCoverage: import_prop_types.default.string.isRequired,\n  spatialCoverage: import_prop_types.default.shape({\n    \"@type\": import_prop_types.default.oneOf([\"Place\"]),\n    geo: import_prop_types.default.shape({\n      \"@type\": import_prop_types.default.oneOf([\"GeoShape\"]),\n      box: import_prop_types.default.string.isRequired\n    })\n  })\n});\nvar bylinesPropType = import_prop_types.default.oneOfType([\n  import_prop_types.default.string,\n  import_prop_types.default.arrayOf(import_prop_types.default.shape({\n    name: import_prop_types.default.string.isRequired,\n    url: import_prop_types.default.string,\n    location: import_prop_types.default.string\n  }))\n]);\n\n// src/bylines/index.js\nvar NamesElement = ({ namesList }) => {\n  return namesList.reduce((a, name, i) => {\n    const separator = i === 0 ? \"\" : i === namesList.length - 1 ? \" and \" : \", \";\n    const author = name.url ? /* @__PURE__ */ import_react.default.createElement(import_react.Fragment, {\n      key: `author-${name.name}`\n    }, /* @__PURE__ */ import_react.default.createElement(\"a\", {\n      href: name.url,\n      className: \"o-editorial-typography-author\"\n    }, name.name), name.location && ` in ${name.location}`) : /* @__PURE__ */ import_react.default.createElement(import_react.Fragment, {\n      key: `author-${name.name}`\n    }, /* @__PURE__ */ import_react.default.createElement(\"span\", null, name.name), name.location && ` in ${name.location}`);\n    return a.concat(separator, author);\n  }, []);\n};\nvar DateElement = (0, import_react.forwardRef)(({ date }, ref) => {\n  const format = new Intl.DateTimeFormat(\"en\", {\n    month: \"long\",\n    day: \"numeric\",\n    year: \"numeric\"\n  });\n  const [month, , day, , year] = format.formatToParts(new Date(date));\n  const dateFormatted = `${month.value} ${day.value} ${year.value}`;\n  return /* @__PURE__ */ import_react.default.createElement(import_react.Fragment, null, \" \", /* @__PURE__ */ import_react.default.createElement(\"time\", {\n    ref,\n    \"data-o-component\": \"o-date\",\n    className: \"o-date o-editorial-typography-byline-timestamp\",\n    dateTime: date,\n    suppressHydrationWarning: true\n  }, dateFormatted));\n});\nvar Bylines = ({ prefix, names, date, dateFirst }) => {\n  const dateElRef = (0, import_react.useRef)();\n  const oDateRef = (0, import_react.useRef)();\n  (0, import_react.useEffect)(() => {\n    if (oDateRef.current || !dateElRef.current)\n      return;\n    (() => __async(void 0, null, function* () {\n      try {\n        oDateRef.current = new import_main.default(dateElRef.current);\n      } catch (e) {\n        console.error(e);\n      }\n    }))();\n  });\n  if (!names && !date)\n    return null;\n  const namesList = Array.isArray(names) ? names : [{ name: names }];\n  return /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: \"bylines\"\n  }, prefix && `${prefix} `, dateFirst && date && /* @__PURE__ */ import_react.default.createElement(DateElement, {\n    ref: dateElRef,\n    date\n  }), dateFirst && \" by \", names && /* @__PURE__ */ import_react.default.createElement(NamesElement, {\n    namesList\n  }), !dateFirst && date && /* @__PURE__ */ import_react.default.createElement(DateElement, {\n    ref: dateElRef,\n    date\n  }));\n};\nBylines.propTypes = {\n  prefix: import_prop_types2.default.string,\n  names: bylinesPropType,\n  date: import_prop_types2.default.oneOfType([import_prop_types2.default.string, import_prop_types2.default.bool]),\n  dateFirst: import_prop_types2.default.bool\n};\nBylines.defaultProps = {\n  names: \"FT Staff\",\n  prefix: \"\",\n  date: false,\n  dateFirst: false\n};\nBylines.displayName = \"GBylines\";\nvar bylines_default = Bylines;\n//# sourceMappingURL=index.js.map\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\n// src/share/index.js\nvar share_exports = {};\n__export(share_exports, {\n  default: () => share_default\n});\nmodule.exports = __toCommonJS(share_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_main = __toESM(require(\"@financial-times/o-share/main\"));\nvar import_prop_types = __toESM(require(\"prop-types\"));\nvar import_classnames = __toESM(require(\"classnames\"));\nvar Share = ({\n  url,\n  text,\n  textTwitter,\n  textFacebook,\n  textLinkedIn,\n  textWhatsApp,\n  separated,\n  dark,\n  size\n}) => {\n  const ref = (0, import_react.useRef)();\n  (0, import_react.useEffect)(() => {\n    (() => __async(void 0, null, function* () {\n      new import_main.default(ref.current);\n    }))();\n  }, []);\n  const services = [\n    {\n      name: \"Twitter\",\n      link: `https://twitter.com/intent/tweet?url=${url}&text=${textTwitter || text}&via=FinancialTimes`\n    },\n    {\n      name: \"Facebook\",\n      link: `https://www.facebook.com/sharer.php?u=${url}&t=${textFacebook || text}`\n    },\n    {\n      name: \"LinkedIn\",\n      link: `https://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${textLinkedIn || text}&source=Financial+Times`\n    },\n    {\n      name: \"WhatsApp\",\n      link: `whatsapp://send?text=${textWhatsApp || text} - ${url}`\n    }\n  ];\n  return /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: (0, import_classnames.default)(\"g-share\", separated && \"g-share--separated\", `g-share--${size}`)\n  }, /* @__PURE__ */ import_react.default.createElement(\"div\", {\n    className: (0, import_classnames.default)(\"o-share\", dark && \"o-share--inverse\"),\n    \"data-o-component\": \"o-share\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"ul\", null, services.map(({ name, link }) => /* @__PURE__ */ import_react.default.createElement(\"li\", {\n    key: name,\n    className: \"o-share__action\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"a\", {\n    className: `o-share__icon o-share__icon--${name.toLowerCase()}`,\n    href: link,\n    rel: \"noopener\"\n  }, /* @__PURE__ */ import_react.default.createElement(\"span\", {\n    className: \"o-share__text\"\n  }, \"Share on \", name, \". Opens in a new window.\")))))));\n};\nShare.propTypes = {\n  url: import_prop_types.default.string.isRequired,\n  text: import_prop_types.default.string.isRequired,\n  textTwitter: import_prop_types.default.string,\n  textFacebook: import_prop_types.default.string,\n  textLinkedIn: import_prop_types.default.string,\n  textWhatsApp: import_prop_types.default.string,\n  separated: import_prop_types.default.bool,\n  dark: import_prop_types.default.bool,\n  size: import_prop_types.default.oneOf([\"default\", \"small\"])\n};\nShare.displayName = \"GShare\";\nvar share_default = Share;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/epilogue/index.js\nvar epilogue_exports = {};\n__export(epilogue_exports, {\n  default: () => epilogue_default\n});\nmodule.exports = __toCommonJS(epilogue_exports);\nvar import_react4 = __toESM(require(\"react\"));\nvar import_prop_types4 = __toESM(require(\"prop-types\"));\n\n// src/grid/grid-child.js\nvar import_react = __toESM(require(\"react\"));\nvar import_prop_types = __toESM(require(\"prop-types\"));\nvar GridChild = (_a) => {\n  var _b = _a, { children, colspan } = _b, props = __objRest(_b, [\"children\", \"colspan\"]);\n  switch (typeof colspan) {\n    case \"number\":\n    case \"string\":\n      return /* @__PURE__ */ import_react.default.createElement(\"div\", __spreadValues({\n        \"data-o-grid-colspan\": colspan\n      }, props), children);\n    default:\n      break;\n  }\n  return /* @__PURE__ */ import_react.default.createElement(\"div\", __spreadValues({\n    \"data-o-grid-colspan\": Object.entries(colspan).map(([breakpoint, size]) => `${breakpoint.toUpperCase()}${size}`).join(\" \")\n  }, props), children);\n};\nGridChild.displayName = \"GGridChild\";\nGridChild.propTypes = {\n  children: import_prop_types.default.node.isRequired,\n  colspan: import_prop_types.default.oneOfType([\n    import_prop_types.default.string,\n    import_prop_types.default.number,\n    import_prop_types.default.shape({\n      default: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      s: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      m: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      l: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      xl: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      S: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      M: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      L: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string]),\n      XL: import_prop_types.default.oneOfType([import_prop_types.default.number, import_prop_types.default.string])\n    })\n  ])\n};\nGridChild.defaultProps = {\n  colspan: \"full-width\"\n};\n\n// src/grid/grid-row.js\nvar import_react2 = __toESM(require(\"react\"));\nvar import_prop_types2 = __toESM(require(\"prop-types\"));\nvar import_classnames = __toESM(require(\"classnames\"));\nvar GridRow = (_a) => {\n  var _b = _a, { compact, children } = _b, props = __objRest(_b, [\"compact\", \"children\"]);\n  return /* @__PURE__ */ import_react2.default.createElement(\"div\", __spreadValues({\n    className: (0, import_classnames.default)(\"o-grid-row\", compact && \"o-grid-row--compact\")\n  }, props), children);\n};\nGridRow.displayName = \"GGridRow\";\nGridRow.propTypes = {\n  compact: import_prop_types2.default.bool,\n  children: import_prop_types2.default.node.isRequired\n};\nGridRow.defaultProps = {\n  compact: false\n};\n\n// src/grid/grid-container.js\nvar import_react3 = __toESM(require(\"react\"));\nvar import_prop_types3 = __toESM(require(\"prop-types\"));\nvar import_classnames2 = __toESM(require(\"classnames\"));\nvar GridContainer = (_a) => {\n  var _b = _a, { bleed, snappy, children, className } = _b, props = __objRest(_b, [\"bleed\", \"snappy\", \"children\", \"className\"]);\n  return /* @__PURE__ */ import_react3.default.createElement(\"div\", __spreadValues({\n    className: (0, import_classnames2.default)(className, \"o-grid-container\", bleed && \" o-grid-container--bleed\", snappy && \"o-grid-container--snappy\")\n  }, props), children);\n};\nGridContainer.displayName = \"GGridContainer\";\nGridContainer.propTypes = {\n  bleed: import_prop_types3.default.bool,\n  snappy: import_prop_types3.default.bool,\n  children: import_prop_types3.default.node.isRequired\n};\nGridContainer.defaultProps = {\n  bleed: false,\n  snappy: false\n};\n\n// src/epilogue/index.js\nvar CopyRight = () => {\n  const year = new Date().getFullYear();\n  return /* @__PURE__ */ import_react4.default.createElement(\"footer\", {\n    className: \"g-epilogue-copyright\"\n  }, /* @__PURE__ */ import_react4.default.createElement(\"a\", {\n    href: \"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\",\n    \"data-trackable\": \"link-copyright\"\n  }, \"Copyright\"), \" \", \"The Financial Times Limited \", year, \". All rights reserved.\");\n};\nvar Epilogue = ({ includeGrid }) => {\n  return includeGrid ? /* @__PURE__ */ import_react4.default.createElement(GridContainer, null, /* @__PURE__ */ import_react4.default.createElement(GridRow, null, /* @__PURE__ */ import_react4.default.createElement(GridChild, {\n    colspan: \"12 S11 Scenter M10 L9 XL8\"\n  }, /* @__PURE__ */ import_react4.default.createElement(CopyRight, null)))) : /* @__PURE__ */ import_react4.default.createElement(CopyRight, null);\n};\nEpilogue.displayName = \"GEpilogue\";\nEpilogue.propTypes = {\n  includeGrid: import_prop_types4.default.bool\n};\nEpilogue.defaultProps = {\n  includeGrid: true\n};\nvar epilogue_default = Epilogue;\n//# sourceMappingURL=index.js.map\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loading/index.js\nvar loading_exports = {};\n__export(loading_exports, {\n  Loading: () => Loading,\n  default: () => loading_default\n});\nmodule.exports = __toCommonJS(loading_exports);\nvar import_react = __toESM(require(\"react\"));\nvar import_classnames = __toESM(require(\"classnames\"));\nvar import_prop_types = __toESM(require(\"prop-types\"));\nvar Loading = ({ size, theme }) => /* @__PURE__ */ import_react.default.createElement(\"div\", {\n  className: (0, import_classnames.default)(\"g-loading\", `g-loading--${size}`, `g-loading--${theme}`)\n});\nLoading.propTypes = {\n  size: import_prop_types.default.oneOf([\"small\", \"medium\", \"large\"]),\n  theme: import_prop_types.default.oneOf([\"light\", \"dark\"])\n};\nLoading.defaultProps = {\n  size: \"small\",\n  theme: \"dark\"\n};\nLoading.displayName = \"GLoading\";\nvar loading_default = Loading;\n//# sourceMappingURL=index.js.map\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.scrollama = factory());\n}(this, (function () { 'use strict';\n\n  // DOM helper functions\n\n  // public\n  function selectAll(selector, parent = document) {\n    if (typeof selector === 'string') {\n      return Array.from(parent.querySelectorAll(selector));\n    } else if (selector instanceof Element) {\n      return [selector];\n    } else if (selector instanceof NodeList) {\n      return Array.from(selector);\n    } else if (selector instanceof Array) {\n      return selector;\n    }\n    return [];\n  }\n\n  // SETUP\n  function create(className) {\n  \tconst el = document.createElement(\"div\");\n  \tel.className = `scrollama__debug-step ${className}`;\n  \tel.style.position = \"fixed\";\n  \tel.style.left = \"0\";\n  \tel.style.width = \"100%\";\n  \tel.style.zIndex = \"9999\";\n  \tel.style.borderTop = \"2px solid black\";\n  \tel.style.borderBottom = \"2px solid black\";\n\n  \tconst p = document.createElement(\"p\");\n  \tp.style.position = \"absolute\";\n  \tp.style.left = \"0\";\n  \tp.style.height = \"1px\";\n  \tp.style.width = \"100%\";\n  \tp.style.borderTop = \"1px dashed black\";\n\n  \tel.appendChild(p);\n  \tdocument.body.appendChild(el);\n  \treturn el;\n  }\n\n  // UPDATE\n  function update({ id, step, marginTop }) {\n  \tconst { index, height } = step;\n  \tconst className = `scrollama__debug-step--${id}-${index}`;\n  \tlet el = document.querySelector(`.${className}`);\n  \tif (!el) el = create(className);\n\n  \tel.style.top = `${marginTop * -1}px`;\n  \tel.style.height = `${height}px`;\n  \tel.querySelector(\"p\").style.top = `${height / 2}px`;\n  }\n\n  function generateId() {\n      const alphabet = \"abcdefghijklmnopqrstuvwxyz\";\n      const date = Date.now();\n      const result = [];\n      for (let i = 0; i < 6; i += 1) {\n        const char = alphabet[Math.floor(Math.random() * alphabet.length)];\n        result.push(char);\n      }\n      return `${result.join(\"\")}${date}`;\n    }\n\n  function err$1(msg) {\n  \tconsole.error(`scrollama error: ${msg}`);\n  }\n\n  function getIndex(node) {\n  \treturn +node.getAttribute(\"data-scrollama-index\");\n  }\n\n  function createProgressThreshold(height, threshold) {\n      const count = Math.ceil(height / threshold);\n      const t = [];\n      const ratio = 1 / count;\n      for (let i = 0; i < count + 1; i += 1) {\n        t.push(i * ratio);\n      }\n      return t;\n    }\n\n  function parseOffset(x) {\n  \tif (typeof x === \"string\" && x.indexOf(\"px\") > 0) {\n  \t\tconst v = +x.replace(\"px\", \"\");\n  \t\tif (!isNaN(v)) return { format: \"pixels\", value: v };\n  \t\telse {\n  \t\t\terr(\"offset value must be in 'px' format. Fallback to 0.5.\");\n  \t\t\treturn { format: \"percent\", value: 0.5 };\n  \t\t}\n  \t} else if (typeof x === \"number\" || !isNaN(+x)) {\n  \t\tif (x > 1) err(\"offset value is greater than 1. Fallback to 1.\");\n  \t\tif (x < 0) err(\"offset value is lower than 0. Fallback to 0.\");\n  \t\treturn { format: \"percent\", value: Math.min(Math.max(0, x), 1) };\n  \t}\n  \treturn null;\n  }\n\n  function indexSteps(steps) {\n  \tsteps.forEach((step) =>\n  \t\tstep.node.setAttribute(\"data-scrollama-index\", step.index)\n  \t);\n  }\n\n  function getOffsetTop(node) {\n    const { top } = node.getBoundingClientRect();\n    const scrollTop = window.pageYOffset;\n    const clientTop = document.body.clientTop || 0;\n    return top + scrollTop - clientTop;\n  }\n\n  let currentScrollY;\n  let comparisonScrollY;\n  let direction;\n\n  function onScroll(container) {\n  \tconst scrollTop = container ? container.scrollTop : window.pageYOffset;\n\n  \tif (currentScrollY === scrollTop) return;\n  \tcurrentScrollY = scrollTop;\n  \tif (currentScrollY > comparisonScrollY) direction = \"down\";\n  \telse if (currentScrollY < comparisonScrollY) direction = \"up\";\n  \tcomparisonScrollY = currentScrollY;\n  }\n\n  function setupScroll(container) {\n  \tcurrentScrollY = 0;\n  \tcomparisonScrollY = 0;\n  \tdocument.addEventListener(\"scroll\", () => onScroll(container));\n  }\n\n  function scrollama() {\n  \tlet cb = {};\n\n  \tlet id = generateId();\n  \tlet steps = [];\n  \tlet globalOffset;\n  \tlet containerElement;\n  \tlet rootElement;\n\n  \tlet progressThreshold = 0;\n\n  \tlet isEnabled = false;\n  \tlet isProgress = false;\n  \tlet isDebug = false;\n  \tlet isTriggerOnce = false;\n\n  \tlet exclude = [];\n\n  \t/* HELPERS */\n  \tfunction reset() {\n  \t\tcb = {\n  \t\t\tstepEnter: () => { },\n  \t\t\tstepExit: () => { },\n  \t\t\tstepProgress: () => { },\n  \t\t};\n  \t\texclude = [];\n  \t}\n\n  \tfunction handleEnable(shouldEnable) {\n  \t\tif (shouldEnable && !isEnabled) updateObservers();\n  \t\tif (!shouldEnable && isEnabled) disconnectObservers();\n  \t\tisEnabled = shouldEnable;\n  \t}\n\n  \t/* NOTIFY CALLBACKS */\n  \tfunction notifyProgress(element, progress) {\n  \t\tconst index = getIndex(element);\n  \t\tconst step = steps[index];\n  \t\tif (progress !== undefined) step.progress = progress;\n  \t\tconst response = { element, index, progress, direction };\n  \t\tif (step.state === \"enter\") cb.stepProgress(response);\n  \t}\n\n  \tfunction notifyStepEnter(element, check = true) {\n  \t\tconst index = getIndex(element);\n  \t\tconst step = steps[index];\n  \t\tconst response = { element, index, direction };\n\n  \t\tstep.direction = direction;\n  \t\tstep.state = \"enter\";\n\n  \t\t// if (isPreserveOrder && check && direction !== \"up\")\n  \t\t//   notifyOthers(index, \"above\");\n  \t\t// if (isPreserveOrder && check && direction === \"up\")\n  \t\t//   notifyOthers(index, \"below\");\n\n  \t\tif (!exclude[index]) cb.stepEnter(response);\n  \t\tif (isTriggerOnce) exclude[index] = true;\n  \t}\n\n  \tfunction notifyStepExit(element, check = true) {\n  \t\tconst index = getIndex(element);\n  \t\tconst step = steps[index];\n\n  \t\tif (!step.state) return false;\n\n  \t\tconst response = { element, index, direction };\n\n  \t\tif (isProgress) {\n  \t\t\tif (direction === \"down\" && step.progress < 1) notifyProgress(element, 1);\n  \t\t\telse if (direction === \"up\" && step.progress > 0)\n  \t\t\t\tnotifyProgress(element, 0);\n  \t\t}\n\n  \t\tstep.direction = direction;\n  \t\tstep.state = \"exit\";\n\n  \t\tcb.stepExit(response);\n  \t}\n\n  \t/* OBSERVERS - HANDLING */\n  \tfunction resizeStep([entry]) {\n  \t\tconst index = getIndex(entry.target);\n  \t\tconst step = steps[index];\n  \t\tconst h = entry.target.offsetHeight;\n  \t\tif (h !== step.height) {\n  \t\t\tstep.height = h;\n  \t\t\tdisconnectObserver(step);\n  \t\t\tupdateStepObserver(step);\n  \t\t\tupdateResizeObserver(step);\n  \t\t}\n  \t}\n\n  \tfunction intersectStep([entry]) {\n  \t\tonScroll(containerElement);\n\n  \t\tconst { isIntersecting, target } = entry;\n  \t\tif (isIntersecting) notifyStepEnter(target);\n  \t\telse notifyStepExit(target);\n  \t}\n\n  \tfunction intersectProgress([entry]) {\n  \t\tconst index = getIndex(entry.target);\n  \t\tconst step = steps[index];\n  \t\tconst { isIntersecting, intersectionRatio, target } = entry;\n  \t\tif (isIntersecting && step.state === \"enter\")\n  \t\t\tnotifyProgress(target, intersectionRatio);\n  \t}\n\n  \t/*  OBSERVERS - CREATION */\n  \tfunction disconnectObserver({ observers }) {\n  \t\tObject.keys(observers).map((name) => {\n  \t\t\tobservers[name].disconnect();\n  \t\t});\n  \t}\n\n  \tfunction disconnectObservers() {\n  \t\tsteps.forEach(disconnectObserver);\n  \t}\n\n  \tfunction updateResizeObserver(step) {\n  \t\tconst observer = new ResizeObserver(resizeStep);\n  \t\tobserver.observe(step.node);\n  \t\tstep.observers.resize = observer;\n  \t}\n\n  \tfunction updateResizeObservers() {\n  \t\tsteps.forEach(updateResizeObserver);\n  \t}\n\n  \tfunction updateStepObserver(step) {\n  \t\tconst h = window.innerHeight;\n  \t\tconst off = step.offset || globalOffset;\n  \t\tconst factor = off.format === \"pixels\" ? 1 : h;\n  \t\tconst offset = off.value * factor;\n  \t\tconst marginTop = step.height / 2 - offset;\n  \t\tconst marginBottom = step.height / 2 - (h - offset);\n  \t\tconst rootMargin = `${marginTop}px 0px ${marginBottom}px 0px`;\n  \t\tconst root = rootElement;\n\n  \t\tconst threshold = 0.5;\n  \t\tconst options = { rootMargin, threshold, root };\n  \t\tconst observer = new IntersectionObserver(intersectStep, options);\n\n  \t\tobserver.observe(step.node);\n  \t\tstep.observers.step = observer;\n\n  \t\tif (isDebug) update({ id, step, marginTop, marginBottom });\n  \t}\n\n  \tfunction updateStepObservers() {\n  \t\tsteps.forEach(updateStepObserver);\n  \t}\n\n  \tfunction updateProgressObserver(step) {\n  \t\tconst h = window.innerHeight;\n  \t\tconst off = step.offset || globalOffset;\n  \t\tconst factor = off.format === \"pixels\" ? 1 : h;\n  \t\tconst offset = off.value * factor;\n  \t\tconst marginTop = -offset + step.height;\n  \t\tconst marginBottom = offset - h;\n  \t\tconst rootMargin = `${marginTop}px 0px ${marginBottom}px 0px`;\n\n  \t\tconst threshold = createProgressThreshold(step.height, progressThreshold);\n  \t\tconst options = { rootMargin, threshold };\n  \t\tconst observer = new IntersectionObserver(intersectProgress, options);\n\n  \t\tobserver.observe(step.node);\n  \t\tstep.observers.progress = observer;\n  \t}\n\n  \tfunction updateProgressObservers() {\n  \t\tsteps.forEach(updateProgressObserver);\n  \t}\n\n  \tfunction updateObservers() {\n  \t\tdisconnectObservers();\n  \t\tupdateResizeObservers();\n  \t\tupdateStepObservers();\n  \t\tif (isProgress) updateProgressObservers();\n  \t}\n\n  \t/* SETUP */\n  \tconst S = {};\n\n  \tS.setup = ({\n  \t\tstep,\n  \t\tparent,\n  \t\toffset = 0.5,\n  \t\tthreshold = 4,\n  \t\tprogress = false,\n  \t\tonce = false,\n  \t\tdebug = false,\n  \t\tcontainer = undefined,\n  \t\troot = null\n  \t}) => {\n\n  \t\tsetupScroll(container);\n\n  \t\tsteps = selectAll(step, parent).map((node, index) => ({\n  \t\t\tindex,\n  \t\t\tdirection: undefined,\n  \t\t\theight: node.offsetHeight,\n  \t\t\tnode,\n  \t\t\tobservers: {},\n  \t\t\toffset: parseOffset(node.dataset.offset),\n  \t\t\ttop: getOffsetTop(node),\n  \t\t\tprogress: 0,\n  \t\t\tstate: undefined,\n  \t\t}));\n\n  \t\tif (!steps.length) {\n  \t\t\terr$1(\"no step elements\");\n  \t\t\treturn S;\n  \t\t}\n\n  \t\tisProgress = progress;\n  \t\tisTriggerOnce = once;\n  \t\tisDebug = debug;\n  \t\tprogressThreshold = Math.max(1, +threshold);\n  \t\tglobalOffset = parseOffset(offset);\n  \t\tcontainerElement = container;\n  \t\trootElement = root;\n\n  \t\treset();\n  \t\tindexSteps(steps);\n  \t\thandleEnable(true);\n  \t\treturn S;\n  \t};\n\n  \tS.enable = () => {\n  \t\thandleEnable(true);\n  \t\treturn S;\n  \t};\n\n  \tS.disable = () => {\n  \t\thandleEnable(false);\n  \t\treturn S;\n  \t};\n\n  \tS.destroy = () => {\n  \t\thandleEnable(false);\n  \t\treset();\n  \t\treturn S;\n  \t};\n\n  \tS.resize = () => {\n  \t\tupdateObservers();\n  \t\treturn S;\n  \t};\n\n  \tS.offset = (x) => {\n  \t\tif (x === null || x === undefined) return globalOffset.value;\n  \t\tglobalOffset = parseOffset(x);\n  \t\tupdateObservers();\n  \t\treturn S;\n  \t};\n\n  \tS.onStepEnter = (f) => {\n  \t\tif (typeof f === \"function\") cb.stepEnter = f;\n  \t\telse err$1(\"onStepEnter requires a function\");\n  \t\treturn S;\n  \t};\n\n  \tS.onStepExit = (f) => {\n  \t\tif (typeof f === \"function\") cb.stepExit = f;\n  \t\telse err$1(\"onStepExit requires a function\");\n  \t\treturn S;\n  \t};\n\n  \tS.onStepProgress = (f) => {\n  \t\tif (typeof f === \"function\") cb.stepProgress = f;\n  \t\telse err$1(\"onStepProgress requires a function\");\n  \t\treturn S;\n  \t};\n  \treturn S;\n  }\n\n  return scrollama;\n\n})));\n","var domparser = require('./domparser');\nvar formatDOM = require('./utilities').formatDOM;\n\nvar DIRECTIVE_REGEX = /<(![a-zA-Z\\s]+)>/; // e.g., <!doctype html>\n\n/**\n * Parses HTML string to DOM nodes in browser.\n *\n * @param  {string} html  - HTML markup.\n * @return {DomElement[]} - DOM elements.\n */\nfunction HTMLDOMParser(html) {\n  if (typeof html !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (html === '') {\n    return [];\n  }\n\n  // match directive\n  var match = html.match(DIRECTIVE_REGEX);\n  var directive;\n\n  if (match && match[1]) {\n    directive = match[1];\n  }\n\n  return formatDOM(domparser(html), null, directive);\n}\n\nmodule.exports = HTMLDOMParser;\n","'use strict';\n\nvar vanilla = require('zustand/vanilla');\nvar react$1 = require('react');\nvar useSyncExternalStoreExports = require('use-sync-external-store/shim/with-selector');\n\nvar useSyncExternalStoreWithSelector = useSyncExternalStoreExports.useSyncExternalStoreWithSelector;\nfunction useStore(api, selector, equalityFn) {\n  if (selector === void 0) {\n    selector = api.getState;\n  }\n  var slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn);\n  react$1.useDebugValue(slice);\n  return slice;\n}\nvar createImpl = function createImpl(createState) {\n  if (process.env.NODE_ENV !== 'production' && typeof createState !== 'function') {\n    console.warn(\"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\");\n  }\n  var api = typeof createState === 'function' ? vanilla.createStore(createState) : createState;\n  var useBoundStore = function useBoundStore(selector, equalityFn) {\n    return useStore(api, selector, equalityFn);\n  };\n  Object.assign(useBoundStore, api);\n  return useBoundStore;\n};\nvar create = function create(createState) {\n  return createState ? createImpl(createState) : createImpl;\n};\nvar react = (function (createState) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.warn(\"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\");\n  }\n  return create(createState);\n});\n\nexports.create = create;\nexports.default = react;\nexports.useStore = useStore;\nObject.keys(vanilla).forEach(function (k) {\n  if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () { return vanilla[k]; }\n  });\n});\n\nmodule.exports = react;\nmodule.exports.create = create;\nmodule.exports.useStore = useStore;\nmodule.exports.createStore = vanilla.createStore;\nexports.default = module.exports;\n","module.exports = __webpack_public_path__ + \"images/intro--42f7dacdba5ef154d8a6334d1b8e1127.mp4\";","module.exports = __webpack_public_path__ + \"images/intro_mobile--164fc12e431d02597528c764e7acc1c1.mp4\";","module.exports = __webpack_public_path__ + \"images/takeoff_graphic_mobile--7f0139bb5dcbf1a65163d22b28aee8fa.png\";","module.exports = __webpack_public_path__ + \"images/takeoff_graphic_tablet--0d5ba856a78b827f34ba39828538cb13.png\";","module.exports = __webpack_public_path__ + \"images/takeoff_graphic_desktop--0eb0db8021340e61d7e9065d5c319c3a.png\";","module.exports = __webpack_public_path__ + \"images/the-contenders--564327952afbd3e33075dee27ec58c18.svg\";","module.exports = __webpack_public_path__ + \"images/important-year--2d0722db24c3fbb59efb9ae1853f653c.svg\";","module.exports = __webpack_public_path__ + \"images/safety--f235b50cca622f6659e4534d7014a234.svg\";","module.exports = __webpack_public_path__ + \"images/regulatory-landscape--ac32b5da321a02ef453674c409e29de2.svg\";","module.exports = __webpack_public_path__ + \"images/operations-and-cost--ef7d9cc712c7e524a6bb895bd33abe5f.svg\";","module.exports = __webpack_public_path__ + \"images/technical-challenges--cc221f447e8e545d270a9f025cf132bb.svg\";","import {addAndRun} from './core/send.js';\nimport { userID } from './core/user.js';\nimport { session } from './core/session.js';\nimport { get } from './core/settings.js';\nimport { guid, getValueFromCookie, merge, log } from './utils.js';\n\nlet rootID;\n\n/**\n * Generate and store a new rootID, used to mark a new root event that\n * subsequent events will be linked to.\n *\n * @returns {string|*} The rootID.\n */\nfunction setRootID() {\n\trootID = guid();\n\treturn rootID;\n}\n\n/**\n * Get the current rootID.\n *\n * @returns {string|*} The rootID.\n */\nfunction getRootID() {\n\tif (!rootID) {\n\t\tsetRootID();\n\t}\n\n\treturn rootID;\n}\n\n/**\n * Make a tracking request.\n *\n * @param {object} config - Should be passed an object containing a format and the values for that format\n * @param {Function} [callback] - Fired when the request has been made.\n *\n * @returns {object} request\n */\nfunction track(config, callback = function(){ /* empty */}) {\n\tconst currentSession = session();\n\n\t// Set up the base request object with some values which should always be sent.\n\tconst request = {\n\t\tcallback,\n\t\tcontext: {\n\t\t\tid: config.id || guid(), // Use a supplied id or generate one for this request\n\t\t\troot_id: getRootID(),\n\t\t},\n\t\tuser: {\n\t\t\tft_session: getValueFromCookie(/FTSession=([^;]+)/),\n\t\t\tft_session_s: getValueFromCookie(/FTSession_s=([^;]+)/)\n\t\t},\n\t\tdevice: {\n\t\t\tspoor_session: currentSession.id,\n\t\t\tspoor_session_is_new: currentSession.isNew,\n\t\t\tspoor_id: userID(),\n\t\t},\n\t};\n\n\t// Override any context, user, and device values with object-wide settings\n\tconst settingsConfig = get('config') || {};\n\tif (settingsConfig.context) {\n\t\tmerge(request.context, settingsConfig.context);\n\t}\n\tif (settingsConfig.user) {\n\t\tmerge(request.user, settingsConfig.user);\n\t}\n\tif (settingsConfig.device) {\n\t\tmerge(request.device, settingsConfig.device);\n\t}\n\n\t// Update the base config with the parameter-supplied config\n\tmerge(request, config);\n\n\tlog('Core.Track', request);\n\n\t// Send it.\n\taddAndRun(request);\n\n\treturn request;\n}\n\nexport default {\n\tsetRootID,\n\tgetRootID,\n\ttrack\n};\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObservation = /** @class */ (function () {\n    function ResizeObservation(target) {\n        this.target = target;\n        this.$$broadcastWidth = this.$$broadcastHeight = 0;\n    }\n    Object.defineProperty(ResizeObservation.prototype, \"broadcastWidth\", {\n        get: function () {\n            return this.$$broadcastWidth;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ResizeObservation.prototype, \"broadcastHeight\", {\n        get: function () {\n            return this.$$broadcastHeight;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ResizeObservation.prototype.isActive = function () {\n        var cr = ContentRect_1.ContentRect(this.target);\n        return !!cr\n            && (cr.width !== this.broadcastWidth\n                || cr.height !== this.broadcastHeight);\n    };\n    return ResizeObservation;\n}());\nexports.ResizeObservation = ResizeObservation;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBNEM7QUFFNUM7SUFlSSwyQkFBWSxNQUFlO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFWRCxzQkFBVyw2Q0FBYzthQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBQ0Qsc0JBQVcsOENBQWU7YUFBMUI7WUFDSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQU9NLG9DQUFRLEdBQWY7UUFDSSxJQUFNLEVBQUUsR0FBRyx5QkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLENBQUMsQ0FBQyxFQUFFO2VBQ0osQ0FDQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjO21CQUM3QixFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQ3hDLENBQUM7SUFDVixDQUFDO0lBQ0wsd0JBQUM7QUFBRCxDQUFDLEFBN0JELElBNkJDO0FBRVEsOENBQWlCIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObserverEntry = /** @class */ (function () {\n    function ResizeObserverEntry(target) {\n        this.target = target;\n        this.contentRect = ContentRect_1.ContentRect(target);\n    }\n    return ResizeObserverEntry;\n}());\nexports.ResizeObserverEntry = ResizeObserverEntry;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXJFbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXNpemVPYnNlcnZlckVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQTRDO0FBRTVDO0lBR0ksNkJBQVksTUFBZTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLHlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNMLDBCQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFFUSxrREFBbUIifQ==","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n  if (null != _i) {\n    var _s,\n      _e,\n      _x,\n      _r,\n      _arr = [],\n      _n = !0,\n      _d = !1;\n    try {\n      if (_x = (_i = _i.call(arr)).next, 0 === i) {\n        if (Object(_i) !== _i) return;\n        _n = !1;\n      } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n    } catch (err) {\n      _d = !0, _e = err;\n    } finally {\n      try {\n        if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n    return _arr;\n  }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\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    defineProperty = Object.defineProperty || function (obj, key, desc) {\n      obj[key] = desc.value;\n    },\n    $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n    iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n    asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n    toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\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  try {\n    define({}, \"\");\n  } catch (err) {\n    define = function define(obj, key, value) {\n      return obj[key] = value;\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 defineProperty(generator, \"_invoke\", {\n      value: makeInvokeMethod(innerFn, self, context)\n    }), generator;\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  exports.wrap = wrap;\n  var ContinueSentinel = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\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  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  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\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      reject(record.arg);\n    }\n    var previousPromise;\n    defineProperty(this, \"_invoke\", {\n      value: function value(method, arg) {\n        function callInvokeWithMethodAndArg() {\n          return new PromiseImpl(function (resolve, reject) {\n            invoke(method, arg, resolve, reject);\n          });\n        }\n        return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = \"suspendedStart\";\n    return function (method, arg) {\n      if (\"executing\" === state) throw new Error(\"Generator is already running\");\n      if (\"completed\" === state) {\n        if (\"throw\" === method) throw arg;\n        return doneResult();\n      }\n      for (context.method = method, context.arg = arg;;) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\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        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        \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(delegate, context) {\n    var methodName = context.method,\n      method = delegate.iterator[methodName];\n    if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\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  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  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\", delete record.arg, entry.completion = record;\n  }\n  function Context(tryLocsList) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\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      if (!isNaN(iterable.length)) {\n        var i = -1,\n          next = function next() {\n            for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n            return next.value = undefined, next.done = !0, next;\n          };\n        return next.next = next;\n      }\n    }\n    return {\n      next: doneResult\n    };\n  }\n  function doneResult() {\n    return {\n      value: undefined,\n      done: !0\n    };\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), 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 (val) {\n    var object = Object(val),\n      keys = [];\n    for (var key in object) keys.push(key);\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      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) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\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      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      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        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n            hasFinally = hasOwn.call(entry, \"finallyLoc\");\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        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\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        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (\"throw\" === record.type) {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\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}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.js\nvar src_exports = {};\n__export(src_exports, {\n  default: () => src_default\n});\nmodule.exports = __toCommonJS(src_exports);\nvar FLOURISH_DOMAINS = [\"https://flo.uri.sh\", \"https://public.flourish.studio\"];\nvar flourishMessageEventListener;\nfunction init(cb) {\n  if (!customFlourishAnalytics.isInitialised) {\n    customFlourishAnalytics.isInitialised = true;\n    flourishMessageEventListener = window.addEventListener(\"message\", (event) => {\n      if (FLOURISH_DOMAINS.includes(event.origin) && event.data) {\n        const eventData = JSON.parse(event.data);\n        if (eventData.method === \"ftCustomAnalytics\") {\n          eventData.context.url = document.URL;\n          eventData.context.referrer = document.referrer;\n          delete eventData.method;\n          cb(eventData);\n        }\n      }\n    }, false);\n  }\n}\nfunction destroy() {\n  window.removeEventListener(\"message\", flourishMessageEventListener);\n  customFlourishAnalytics.isInitialised = false;\n}\nvar customFlourishAnalytics = {\n  isInitialised: false,\n  destroy,\n  init\n};\nvar src_default = customFlourishAnalytics;\n//# sourceMappingURL=index.js.map\n","module.exports = function(md, options) {\n  options = options || {};\n  options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;\n  options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;\n  options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;\n  options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;\n\n  var output = md || '';\n\n  // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n  output = output.replace(/^(-\\s*?|\\*\\s*?|_\\s*?){3,}\\s*$/gm, '');\n\n  try {\n    if (options.stripListLeaders) {\n      if (options.listUnicodeChar)\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + ' $1');\n      else\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, '$1');\n    }\n    if (options.gfm) {\n      output = output\n        // Header\n        .replace(/\\n={2,}/g, '\\n')\n        // Fenced codeblocks\n        .replace(/~{3}.*\\n/g, '')\n        // Strikethrough\n        .replace(/~~/g, '')\n        // Fenced codeblocks\n        .replace(/`{3}.*\\n/g, '');\n    }\n    output = output\n      // Remove HTML tags\n      .replace(/<[^>]*>/g, '')\n      // Remove setext-style headers\n      .replace(/^[=\\-]{2,}\\s*$/g, '')\n      // Remove footnotes?\n      .replace(/\\[\\^.+?\\](\\: .*?$)?/g, '')\n      .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, '')\n      // Remove images\n      .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? '$1' : '')\n      // Remove inline links\n      .replace(/\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, '$1')\n      // Remove blockquotes\n      .replace(/^\\s{0,3}>\\s?/g, '')\n      // Remove reference-style links?\n      .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, '')\n      // Remove atx-style headers\n      .replace(/^(\\n)?\\s{0,}#{1,6}\\s+| {0,}(\\n)?\\s{0,}#{0,} {0,}(\\n)?\\s{0,}$/gm, '$1$2$3')\n      // Remove emphasis (repeat the line to remove double emphasis)\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      // Remove code blocks\n      .replace(/(`{3,})(.*?)\\1/gm, '$2')\n      // Remove inline code\n      .replace(/`(.+?)`/g, '$1')\n      // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n      .replace(/\\n{2,}/g, '\\n\\n');\n  } catch(e) {\n    console.error(e);\n    return md;\n  }\n  return output;\n};\n","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var React = require('react');\nvar attributesToProps = require('./attributes-to-props');\nvar utilities = require('./utilities');\n\nvar setStyleProp = utilities.setStyleProp;\nvar canTextBeChildOfNode = utilities.canTextBeChildOfNode;\n\n/**\n * Converts DOM nodes to JSX element(s).\n *\n * @param {DomElement[]} nodes - DOM nodes.\n * @param {object} [options={}] - Options.\n * @param {Function} [options.replace] - Replacer.\n * @param {object} [options.library] - Library (React, Preact, etc.).\n * @returns - String or JSX element(s).\n */\nfunction domToReact(nodes, options) {\n  options = options || {};\n\n  var library = options.library || React;\n  var cloneElement = library.cloneElement;\n  var createElement = library.createElement;\n  var isValidElement = library.isValidElement;\n\n  var result = [];\n  var node;\n  var isWhitespace;\n  var hasReplace = typeof options.replace === 'function';\n  var replaceElement;\n  var props;\n  var children;\n  var trim = options.trim;\n\n  for (var i = 0, len = nodes.length; i < len; i++) {\n    node = nodes[i];\n\n    // replace with custom React element (if present)\n    if (hasReplace) {\n      replaceElement = options.replace(node);\n\n      if (isValidElement(replaceElement)) {\n        // set \"key\" prop for sibling elements\n        // https://fb.me/react-warning-keys\n        if (len > 1) {\n          replaceElement = cloneElement(replaceElement, {\n            key: replaceElement.key || i\n          });\n        }\n        result.push(replaceElement);\n        continue;\n      }\n    }\n\n    if (node.type === 'text') {\n      isWhitespace = !node.data.trim().length;\n\n      if (isWhitespace && node.parent && !canTextBeChildOfNode(node.parent)) {\n        // We have a whitespace node that can't be nested in its parent\n        // so skip it\n        continue;\n      }\n\n      if (trim && isWhitespace) {\n        // Trim is enabled and we have a whitespace node\n        // so skip it\n        continue;\n      }\n\n      // We have a text node that's not whitespace and it can be nested\n      // in its parent so add it to the results\n      result.push(node.data);\n      continue;\n    }\n\n    props = node.attribs;\n    if (skipAttributesToProps(node)) {\n      setStyleProp(props.style, props);\n    } else if (props) {\n      props = attributesToProps(props);\n    }\n\n    children = null;\n\n    switch (node.type) {\n      case 'script':\n      case 'style':\n        // prevent text in <script> or <style> from being escaped\n        // https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml\n        if (node.children[0]) {\n          props.dangerouslySetInnerHTML = {\n            __html: node.children[0].data\n          };\n        }\n        break;\n\n      case 'tag':\n        // setting textarea value in children is an antipattern in React\n        // https://reactjs.org/docs/forms.html#the-textarea-tag\n        if (node.name === 'textarea' && node.children[0]) {\n          props.defaultValue = node.children[0].data;\n        } else if (node.children && node.children.length) {\n          // continue recursion of creating React elements (if applicable)\n          children = domToReact(node.children, options);\n        }\n        break;\n\n      // skip all other cases (e.g., comment)\n      default:\n        continue;\n    }\n\n    // set \"key\" prop for sibling elements\n    // https://fb.me/react-warning-keys\n    if (len > 1) {\n      props.key = i;\n    }\n\n    result.push(createElement(node.name, props, children));\n  }\n\n  return result.length === 1 ? result[0] : result;\n}\n\n/**\n * Determines whether DOM element attributes should be transformed to props.\n * Web Components should not have their attributes transformed except for `style`.\n *\n * @param {DomElement} node\n * @returns - Whether node attributes should be converted to props.\n */\nfunction skipAttributesToProps(node) {\n  return (\n    utilities.PRESERVE_CUSTOM_ATTRIBUTES &&\n    node.type === 'tag' &&\n    utilities.isCustomComponent(node.name, node.attribs)\n  );\n}\n\nmodule.exports = domToReact;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n  this.sanitizeURL = sanitizeURL;\n  this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\nreservedProps.forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var _ref2 = _slicedToArray(_ref, 2),\n      name = _ref2[0],\n      attributeName = _ref2[1];\n\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function capitalize(token) {\n  return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n  false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  true, // sanitizeURL\n  true);\n});\n\nvar _require = require('../lib/possibleStandardNamesOptimized'),\n    CAMELCASE = _require.CAMELCASE,\n    SAME = _require.SAME,\n    possibleStandardNamesOptimized = _require.possibleStandardNames;\n\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n/**\n * Checks whether a property name is a custom attribute.\n *\n * @see {@link https://github.com/facebook/react/blob/15-stable/src/renderers/dom/shared/HTMLDOMPropertyConfig.js#L23-L25}\n *\n * @param {string}\n * @return {boolean}\n */\n\nvar isCustomAttribute = RegExp.prototype.test.bind( // eslint-disable-next-line no-misleading-character-class\nnew RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\nvar possibleStandardNames = Object.keys(possibleStandardNamesOptimized).reduce(function (accumulator, standardName) {\n  var propName = possibleStandardNamesOptimized[standardName];\n\n  if (propName === SAME) {\n    accumulator[standardName] = standardName;\n  } else if (propName === CAMELCASE) {\n    accumulator[standardName.toLowerCase()] = standardName;\n  } else {\n    accumulator[standardName] = propName;\n  }\n\n  return accumulator;\n}, {});\n\nexports.BOOLEAN = BOOLEAN;\nexports.BOOLEANISH_STRING = BOOLEANISH_STRING;\nexports.NUMERIC = NUMERIC;\nexports.OVERLOADED_BOOLEAN = OVERLOADED_BOOLEAN;\nexports.POSITIVE_NUMERIC = POSITIVE_NUMERIC;\nexports.RESERVED = RESERVED;\nexports.STRING = STRING;\nexports.getPropertyInfo = getPropertyInfo;\nexports.isCustomAttribute = isCustomAttribute;\nexports.possibleStandardNames = possibleStandardNames;\n","// An attribute in which the DOM/SVG standard name is the same as the React prop name (e.g., 'accept').\nvar SAME = 0;\nexports.SAME = SAME;\n\n// An attribute in which the React prop name is the camelcased version of the DOM/SVG standard name (e.g., 'acceptCharset').\nvar CAMELCASE = 1;\nexports.CAMELCASE = CAMELCASE;\n\nexports.possibleStandardNames = {\n  accept: 0,\n  acceptCharset: 1,\n  'accept-charset': 'acceptCharset',\n  accessKey: 1,\n  action: 0,\n  allowFullScreen: 1,\n  alt: 0,\n  as: 0,\n  async: 0,\n  autoCapitalize: 1,\n  autoComplete: 1,\n  autoCorrect: 1,\n  autoFocus: 1,\n  autoPlay: 1,\n  autoSave: 1,\n  capture: 0,\n  cellPadding: 1,\n  cellSpacing: 1,\n  challenge: 0,\n  charSet: 1,\n  checked: 0,\n  children: 0,\n  cite: 0,\n  class: 'className',\n  classID: 1,\n  className: 1,\n  cols: 0,\n  colSpan: 1,\n  content: 0,\n  contentEditable: 1,\n  contextMenu: 1,\n  controls: 0,\n  controlsList: 1,\n  coords: 0,\n  crossOrigin: 1,\n  dangerouslySetInnerHTML: 1,\n  data: 0,\n  dateTime: 1,\n  default: 0,\n  defaultChecked: 1,\n  defaultValue: 1,\n  defer: 0,\n  dir: 0,\n  disabled: 0,\n  disablePictureInPicture: 1,\n  disableRemotePlayback: 1,\n  download: 0,\n  draggable: 0,\n  encType: 1,\n  enterKeyHint: 1,\n  for: 'htmlFor',\n  form: 0,\n  formMethod: 1,\n  formAction: 1,\n  formEncType: 1,\n  formNoValidate: 1,\n  formTarget: 1,\n  frameBorder: 1,\n  headers: 0,\n  height: 0,\n  hidden: 0,\n  high: 0,\n  href: 0,\n  hrefLang: 1,\n  htmlFor: 1,\n  httpEquiv: 1,\n  'http-equiv': 'httpEquiv',\n  icon: 0,\n  id: 0,\n  innerHTML: 1,\n  inputMode: 1,\n  integrity: 0,\n  is: 0,\n  itemID: 1,\n  itemProp: 1,\n  itemRef: 1,\n  itemScope: 1,\n  itemType: 1,\n  keyParams: 1,\n  keyType: 1,\n  kind: 0,\n  label: 0,\n  lang: 0,\n  list: 0,\n  loop: 0,\n  low: 0,\n  manifest: 0,\n  marginWidth: 1,\n  marginHeight: 1,\n  max: 0,\n  maxLength: 1,\n  media: 0,\n  mediaGroup: 1,\n  method: 0,\n  min: 0,\n  minLength: 1,\n  multiple: 0,\n  muted: 0,\n  name: 0,\n  noModule: 1,\n  nonce: 0,\n  noValidate: 1,\n  open: 0,\n  optimum: 0,\n  pattern: 0,\n  placeholder: 0,\n  playsInline: 1,\n  poster: 0,\n  preload: 0,\n  profile: 0,\n  radioGroup: 1,\n  readOnly: 1,\n  referrerPolicy: 1,\n  rel: 0,\n  required: 0,\n  reversed: 0,\n  role: 0,\n  rows: 0,\n  rowSpan: 1,\n  sandbox: 0,\n  scope: 0,\n  scoped: 0,\n  scrolling: 0,\n  seamless: 0,\n  selected: 0,\n  shape: 0,\n  size: 0,\n  sizes: 0,\n  span: 0,\n  spellCheck: 1,\n  src: 0,\n  srcDoc: 1,\n  srcLang: 1,\n  srcSet: 1,\n  start: 0,\n  step: 0,\n  style: 0,\n  summary: 0,\n  tabIndex: 1,\n  target: 0,\n  title: 0,\n  type: 0,\n  useMap: 1,\n  value: 0,\n  width: 0,\n  wmode: 0,\n  wrap: 0,\n  about: 0,\n  accentHeight: 1,\n  'accent-height': 'accentHeight',\n  accumulate: 0,\n  additive: 0,\n  alignmentBaseline: 1,\n  'alignment-baseline': 'alignmentBaseline',\n  allowReorder: 1,\n  alphabetic: 0,\n  amplitude: 0,\n  arabicForm: 1,\n  'arabic-form': 'arabicForm',\n  ascent: 0,\n  attributeName: 1,\n  attributeType: 1,\n  autoReverse: 1,\n  azimuth: 0,\n  baseFrequency: 1,\n  baselineShift: 1,\n  'baseline-shift': 'baselineShift',\n  baseProfile: 1,\n  bbox: 0,\n  begin: 0,\n  bias: 0,\n  by: 0,\n  calcMode: 1,\n  capHeight: 1,\n  'cap-height': 'capHeight',\n  clip: 0,\n  clipPath: 1,\n  'clip-path': 'clipPath',\n  clipPathUnits: 1,\n  clipRule: 1,\n  'clip-rule': 'clipRule',\n  color: 0,\n  colorInterpolation: 1,\n  'color-interpolation': 'colorInterpolation',\n  colorInterpolationFilters: 1,\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorProfile: 1,\n  'color-profile': 'colorProfile',\n  colorRendering: 1,\n  'color-rendering': 'colorRendering',\n  contentScriptType: 1,\n  contentStyleType: 1,\n  cursor: 0,\n  cx: 0,\n  cy: 0,\n  d: 0,\n  datatype: 0,\n  decelerate: 0,\n  descent: 0,\n  diffuseConstant: 1,\n  direction: 0,\n  display: 0,\n  divisor: 0,\n  dominantBaseline: 1,\n  'dominant-baseline': 'dominantBaseline',\n  dur: 0,\n  dx: 0,\n  dy: 0,\n  edgeMode: 1,\n  elevation: 0,\n  enableBackground: 1,\n  'enable-background': 'enableBackground',\n  end: 0,\n  exponent: 0,\n  externalResourcesRequired: 1,\n  fill: 0,\n  fillOpacity: 1,\n  'fill-opacity': 'fillOpacity',\n  fillRule: 1,\n  'fill-rule': 'fillRule',\n  filter: 0,\n  filterRes: 1,\n  filterUnits: 1,\n  floodOpacity: 1,\n  'flood-opacity': 'floodOpacity',\n  floodColor: 1,\n  'flood-color': 'floodColor',\n  focusable: 0,\n  fontFamily: 1,\n  'font-family': 'fontFamily',\n  fontSize: 1,\n  'font-size': 'fontSize',\n  fontSizeAdjust: 1,\n  'font-size-adjust': 'fontSizeAdjust',\n  fontStretch: 1,\n  'font-stretch': 'fontStretch',\n  fontStyle: 1,\n  'font-style': 'fontStyle',\n  fontVariant: 1,\n  'font-variant': 'fontVariant',\n  fontWeight: 1,\n  'font-weight': 'fontWeight',\n  format: 0,\n  from: 0,\n  fx: 0,\n  fy: 0,\n  g1: 0,\n  g2: 0,\n  glyphName: 1,\n  'glyph-name': 'glyphName',\n  glyphOrientationHorizontal: 1,\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphOrientationVertical: 1,\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphRef: 1,\n  gradientTransform: 1,\n  gradientUnits: 1,\n  hanging: 0,\n  horizAdvX: 1,\n  'horiz-adv-x': 'horizAdvX',\n  horizOriginX: 1,\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 0,\n  imageRendering: 1,\n  'image-rendering': 'imageRendering',\n  in2: 0,\n  in: 0,\n  inlist: 0,\n  intercept: 0,\n  k1: 0,\n  k2: 0,\n  k3: 0,\n  k4: 0,\n  k: 0,\n  kernelMatrix: 1,\n  kernelUnitLength: 1,\n  kerning: 0,\n  keyPoints: 1,\n  keySplines: 1,\n  keyTimes: 1,\n  lengthAdjust: 1,\n  letterSpacing: 1,\n  'letter-spacing': 'letterSpacing',\n  lightingColor: 1,\n  'lighting-color': 'lightingColor',\n  limitingConeAngle: 1,\n  local: 0,\n  markerEnd: 1,\n  'marker-end': 'markerEnd',\n  markerHeight: 1,\n  markerMid: 1,\n  'marker-mid': 'markerMid',\n  markerStart: 1,\n  'marker-start': 'markerStart',\n  markerUnits: 1,\n  markerWidth: 1,\n  mask: 0,\n  maskContentUnits: 1,\n  maskUnits: 1,\n  mathematical: 0,\n  mode: 0,\n  numOctaves: 1,\n  offset: 0,\n  opacity: 0,\n  operator: 0,\n  order: 0,\n  orient: 0,\n  orientation: 0,\n  origin: 0,\n  overflow: 0,\n  overlinePosition: 1,\n  'overline-position': 'overlinePosition',\n  overlineThickness: 1,\n  'overline-thickness': 'overlineThickness',\n  paintOrder: 1,\n  'paint-order': 'paintOrder',\n  panose1: 0,\n  'panose-1': 'panose1',\n  pathLength: 1,\n  patternContentUnits: 1,\n  patternTransform: 1,\n  patternUnits: 1,\n  pointerEvents: 1,\n  'pointer-events': 'pointerEvents',\n  points: 0,\n  pointsAtX: 1,\n  pointsAtY: 1,\n  pointsAtZ: 1,\n  prefix: 0,\n  preserveAlpha: 1,\n  preserveAspectRatio: 1,\n  primitiveUnits: 1,\n  property: 0,\n  r: 0,\n  radius: 0,\n  refX: 1,\n  refY: 1,\n  renderingIntent: 1,\n  'rendering-intent': 'renderingIntent',\n  repeatCount: 1,\n  repeatDur: 1,\n  requiredExtensions: 1,\n  requiredFeatures: 1,\n  resource: 0,\n  restart: 0,\n  result: 0,\n  results: 0,\n  rotate: 0,\n  rx: 0,\n  ry: 0,\n  scale: 0,\n  security: 0,\n  seed: 0,\n  shapeRendering: 1,\n  'shape-rendering': 'shapeRendering',\n  slope: 0,\n  spacing: 0,\n  specularConstant: 1,\n  specularExponent: 1,\n  speed: 0,\n  spreadMethod: 1,\n  startOffset: 1,\n  stdDeviation: 1,\n  stemh: 0,\n  stemv: 0,\n  stitchTiles: 1,\n  stopColor: 1,\n  'stop-color': 'stopColor',\n  stopOpacity: 1,\n  'stop-opacity': 'stopOpacity',\n  strikethroughPosition: 1,\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughThickness: 1,\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 0,\n  stroke: 0,\n  strokeDasharray: 1,\n  'stroke-dasharray': 'strokeDasharray',\n  strokeDashoffset: 1,\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokeLinecap: 1,\n  'stroke-linecap': 'strokeLinecap',\n  strokeLinejoin: 1,\n  'stroke-linejoin': 'strokeLinejoin',\n  strokeMiterlimit: 1,\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokeWidth: 1,\n  'stroke-width': 'strokeWidth',\n  strokeOpacity: 1,\n  'stroke-opacity': 'strokeOpacity',\n  suppressContentEditableWarning: 1,\n  suppressHydrationWarning: 1,\n  surfaceScale: 1,\n  systemLanguage: 1,\n  tableValues: 1,\n  targetX: 1,\n  targetY: 1,\n  textAnchor: 1,\n  'text-anchor': 'textAnchor',\n  textDecoration: 1,\n  'text-decoration': 'textDecoration',\n  textLength: 1,\n  textRendering: 1,\n  'text-rendering': 'textRendering',\n  to: 0,\n  transform: 0,\n  typeof: 0,\n  u1: 0,\n  u2: 0,\n  underlinePosition: 1,\n  'underline-position': 'underlinePosition',\n  underlineThickness: 1,\n  'underline-thickness': 'underlineThickness',\n  unicode: 0,\n  unicodeBidi: 1,\n  'unicode-bidi': 'unicodeBidi',\n  unicodeRange: 1,\n  'unicode-range': 'unicodeRange',\n  unitsPerEm: 1,\n  'units-per-em': 'unitsPerEm',\n  unselectable: 0,\n  vAlphabetic: 1,\n  'v-alphabetic': 'vAlphabetic',\n  values: 0,\n  vectorEffect: 1,\n  'vector-effect': 'vectorEffect',\n  version: 0,\n  vertAdvY: 1,\n  'vert-adv-y': 'vertAdvY',\n  vertOriginX: 1,\n  'vert-origin-x': 'vertOriginX',\n  vertOriginY: 1,\n  'vert-origin-y': 'vertOriginY',\n  vHanging: 1,\n  'v-hanging': 'vHanging',\n  vIdeographic: 1,\n  'v-ideographic': 'vIdeographic',\n  viewBox: 1,\n  viewTarget: 1,\n  visibility: 0,\n  vMathematical: 1,\n  'v-mathematical': 'vMathematical',\n  vocab: 0,\n  widths: 0,\n  wordSpacing: 1,\n  'word-spacing': 'wordSpacing',\n  writingMode: 1,\n  'writing-mode': 'writingMode',\n  x1: 0,\n  x2: 0,\n  x: 0,\n  xChannelSelector: 1,\n  xHeight: 1,\n  'x-height': 'xHeight',\n  xlinkActuate: 1,\n  'xlink:actuate': 'xlinkActuate',\n  xlinkArcrole: 1,\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkHref: 1,\n  'xlink:href': 'xlinkHref',\n  xlinkRole: 1,\n  'xlink:role': 'xlinkRole',\n  xlinkShow: 1,\n  'xlink:show': 'xlinkShow',\n  xlinkTitle: 1,\n  'xlink:title': 'xlinkTitle',\n  xlinkType: 1,\n  'xlink:type': 'xlinkType',\n  xmlBase: 1,\n  'xml:base': 'xmlBase',\n  xmlLang: 1,\n  'xml:lang': 'xmlLang',\n  xmlns: 0,\n  'xml:space': 'xmlSpace',\n  xmlnsXlink: 1,\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlSpace: 1,\n  y1: 0,\n  y2: 0,\n  y: 0,\n  yChannelSelector: 1,\n  z: 0,\n  zoomAndPan: 1\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nexports.__esModule = true;\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\nfunction StyleToJS(style, options) {\n    var output = {};\n    if (!style || typeof style !== 'string') {\n        return output;\n    }\n    (0, style_to_object_1[\"default\"])(style, function (property, value) {\n        if (property && value) {\n            output[(0, utilities_1.camelCase)(property, options)] = value;\n        }\n    });\n    return output;\n}\nexports[\"default\"] = StyleToJS;\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function(node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","\"use strict\";\nexports.__esModule = true;\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\nvar skipCamelCase = function (property) {\n    return !property ||\n        NO_HYPHEN_REGEX.test(property) ||\n        CUSTOM_PROPERTY_REGEX.test(property);\n};\nvar capitalize = function (match, character) {\n    return character.toUpperCase();\n};\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\nvar camelCase = function (property, options) {\n    if (options === void 0) { options = {}; }\n    if (skipCamelCase(property)) {\n        return property;\n    }\n    property = property.toLowerCase();\n    if (options.reactCompat) {\n        property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    else {\n        property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n","import HTMLDOMParser from './index.js';\n\nexport default HTMLDOMParser;\n","// constants\nvar HTML = 'html';\nvar HEAD = 'head';\nvar BODY = 'body';\nvar FIRST_TAG_REGEX = /<([a-zA-Z]+[0-9]?)/; // e.g., <h1>\nvar HEAD_TAG_REGEX = /<head.*>/i;\nvar BODY_TAG_REGEX = /<body.*>/i;\n\n// falls back to `parseFromString` if `createHTMLDocument` cannot be used\nvar parseFromDocument = function () {\n  throw new Error(\n    'This browser does not support `document.implementation.createHTMLDocument`'\n  );\n};\n\nvar parseFromString = function () {\n  throw new Error(\n    'This browser does not support `DOMParser.prototype.parseFromString`'\n  );\n};\n\n/**\n * DOMParser (performance: slow).\n *\n * @see https://developer.mozilla.org/docs/Web/API/DOMParser#Parsing_an_SVG_or_HTML_document\n */\nif (typeof window.DOMParser === 'function') {\n  var domParser = new window.DOMParser();\n  var mimeType = 'text/html';\n\n  /**\n   * Creates an HTML document using `DOMParser.parseFromString`.\n   *\n   * @param  {string} html      - The HTML string.\n   * @param  {string} [tagName] - The element to render the HTML (with 'body' as fallback).\n   * @return {HTMLDocument}\n   */\n  parseFromString = function (html, tagName) {\n    if (tagName) {\n      html = '<' + tagName + '>' + html + '</' + tagName + '>';\n    }\n\n    return domParser.parseFromString(html, mimeType);\n  };\n\n  parseFromDocument = parseFromString;\n}\n\n/**\n * DOMImplementation (performance: fair).\n *\n * @see https://developer.mozilla.org/docs/Web/API/DOMImplementation/createHTMLDocument\n */\nif (document.implementation) {\n  var isIE = require('./utilities').isIE;\n\n  // title parameter is required in IE\n  // https://msdn.microsoft.com/en-us/library/ff975457(v=vs.85).aspx\n  var doc = document.implementation.createHTMLDocument(\n    isIE() ? 'html-dom-parser' : undefined\n  );\n\n  /**\n   * Use HTML document created by `document.implementation.createHTMLDocument`.\n   *\n   * @param  {string} html      - The HTML string.\n   * @param  {string} [tagName] - The element to render the HTML (with 'body' as fallback).\n   * @return {HTMLDocument}\n   */\n  parseFromDocument = function (html, tagName) {\n    if (tagName) {\n      doc.documentElement.getElementsByTagName(tagName)[0].innerHTML = html;\n      return doc;\n    }\n\n    doc.documentElement.innerHTML = html;\n    return doc;\n  };\n}\n\n/**\n * Template (performance: fast).\n *\n * @see https://developer.mozilla.org/docs/Web/HTML/Element/template\n */\nvar template = document.createElement('template');\nvar parseFromTemplate;\n\nif (template.content) {\n  /**\n   * Uses a template element (content fragment) to parse HTML.\n   *\n   * @param  {string} html - The HTML string.\n   * @return {NodeList}\n   */\n  parseFromTemplate = function (html) {\n    template.innerHTML = html;\n    return template.content.childNodes;\n  };\n}\n\n/**\n * Parses HTML string to DOM nodes.\n *\n * @param  {string}   html - HTML markup.\n * @return {NodeList}\n */\nfunction domparser(html) {\n  var firstTagName;\n  var match = html.match(FIRST_TAG_REGEX);\n\n  if (match && match[1]) {\n    firstTagName = match[1].toLowerCase();\n  }\n\n  var doc;\n  var element;\n  var elements;\n\n  switch (firstTagName) {\n    case HTML:\n      doc = parseFromString(html);\n\n      // the created document may come with filler head/body elements,\n      // so make sure to remove them if they don't actually exist\n      if (!HEAD_TAG_REGEX.test(html)) {\n        element = doc.getElementsByTagName(HEAD)[0];\n        if (element) {\n          element.parentNode.removeChild(element);\n        }\n      }\n\n      if (!BODY_TAG_REGEX.test(html)) {\n        element = doc.getElementsByTagName(BODY)[0];\n        if (element) {\n          element.parentNode.removeChild(element);\n        }\n      }\n\n      return doc.getElementsByTagName(HTML);\n\n    case HEAD:\n    case BODY:\n      elements = parseFromDocument(html).getElementsByTagName(firstTagName);\n\n      // if there's a sibling element, then return both elements\n      if (BODY_TAG_REGEX.test(html) && HEAD_TAG_REGEX.test(html)) {\n        return elements[0].parentNode.childNodes;\n      }\n      return elements;\n\n    // low-level tag or text\n    default:\n      if (parseFromTemplate) {\n        return parseFromTemplate(html);\n      }\n\n      return parseFromDocument(html, BODY).getElementsByTagName(BODY)[0]\n        .childNodes;\n  }\n}\n\nmodule.exports = domparser;\n","/**\n * SVG elements are case-sensitive.\n *\n * @see {@link https://developer.mozilla.org/docs/Web/SVG/Element#SVG_elements_A_to_Z}\n */\nvar CASE_SENSITIVE_TAG_NAMES = [\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussainBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'linearGradient',\n  'radialGradient',\n  'textPath'\n];\n\nmodule.exports = {\n  CASE_SENSITIVE_TAG_NAMES: CASE_SENSITIVE_TAG_NAMES\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_1 = require(\"./node\");\n__exportStar(require(\"./node\"), exports);\nvar reWhitespace = /\\s+/g;\n// Default options\nvar defaultOpts = {\n    normalizeWhitespace: false,\n    withStartIndices: false,\n    withEndIndices: false,\n    xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n    /**\n     * @param callback Called once parsing has completed.\n     * @param options Settings for the handler.\n     * @param elementCB Callback whenever a tag is closed.\n     */\n    function DomHandler(callback, options, elementCB) {\n        /** The elements of the DOM */\n        this.dom = [];\n        /** The root element for the DOM */\n        this.root = new node_1.Document(this.dom);\n        /** Indicated whether parsing has been completed. */\n        this.done = false;\n        /** Stack of open tags. */\n        this.tagStack = [this.root];\n        /** A data node that is still being written to. */\n        this.lastNode = null;\n        /** Reference to the parser instance. Used for location information. */\n        this.parser = null;\n        // Make it possible to skip arguments, for backwards-compatibility\n        if (typeof options === \"function\") {\n            elementCB = options;\n            options = defaultOpts;\n        }\n        if (typeof callback === \"object\") {\n            options = callback;\n            callback = undefined;\n        }\n        this.callback = callback !== null && callback !== void 0 ? callback : null;\n        this.options = options !== null && options !== void 0 ? options : defaultOpts;\n        this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n    }\n    DomHandler.prototype.onparserinit = function (parser) {\n        this.parser = parser;\n    };\n    // Resets the handler back to starting state\n    DomHandler.prototype.onreset = function () {\n        this.dom = [];\n        this.root = new node_1.Document(this.dom);\n        this.done = false;\n        this.tagStack = [this.root];\n        this.lastNode = null;\n        this.parser = null;\n    };\n    // Signals the handler that parsing is done\n    DomHandler.prototype.onend = function () {\n        if (this.done)\n            return;\n        this.done = true;\n        this.parser = null;\n        this.handleCallback(null);\n    };\n    DomHandler.prototype.onerror = function (error) {\n        this.handleCallback(error);\n    };\n    DomHandler.prototype.onclosetag = function () {\n        this.lastNode = null;\n        var elem = this.tagStack.pop();\n        if (this.options.withEndIndices) {\n            elem.endIndex = this.parser.endIndex;\n        }\n        if (this.elementCB)\n            this.elementCB(elem);\n    };\n    DomHandler.prototype.onopentag = function (name, attribs) {\n        var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n        var element = new node_1.Element(name, attribs, undefined, type);\n        this.addNode(element);\n        this.tagStack.push(element);\n    };\n    DomHandler.prototype.ontext = function (data) {\n        var normalizeWhitespace = this.options.normalizeWhitespace;\n        var lastNode = this.lastNode;\n        if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n            if (normalizeWhitespace) {\n                lastNode.data = (lastNode.data + data).replace(reWhitespace, \" \");\n            }\n            else {\n                lastNode.data += data;\n            }\n            if (this.options.withEndIndices) {\n                lastNode.endIndex = this.parser.endIndex;\n            }\n        }\n        else {\n            if (normalizeWhitespace) {\n                data = data.replace(reWhitespace, \" \");\n            }\n            var node = new node_1.Text(data);\n            this.addNode(node);\n            this.lastNode = node;\n        }\n    };\n    DomHandler.prototype.oncomment = function (data) {\n        if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n            this.lastNode.data += data;\n            return;\n        }\n        var node = new node_1.Comment(data);\n        this.addNode(node);\n        this.lastNode = node;\n    };\n    DomHandler.prototype.oncommentend = function () {\n        this.lastNode = null;\n    };\n    DomHandler.prototype.oncdatastart = function () {\n        var text = new node_1.Text(\"\");\n        var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]);\n        this.addNode(node);\n        text.parent = node;\n        this.lastNode = text;\n    };\n    DomHandler.prototype.oncdataend = function () {\n        this.lastNode = null;\n    };\n    DomHandler.prototype.onprocessinginstruction = function (name, data) {\n        var node = new node_1.ProcessingInstruction(name, data);\n        this.addNode(node);\n    };\n    DomHandler.prototype.handleCallback = function (error) {\n        if (typeof this.callback === \"function\") {\n            this.callback(error, this.dom);\n        }\n        else if (error) {\n            throw error;\n        }\n    };\n    DomHandler.prototype.addNode = function (node) {\n        var parent = this.tagStack[this.tagStack.length - 1];\n        var previousSibling = parent.children[parent.children.length - 1];\n        if (this.options.withStartIndices) {\n            node.startIndex = this.parser.startIndex;\n        }\n        if (this.options.withEndIndices) {\n            node.endIndex = this.parser.endIndex;\n        }\n        parent.children.push(node);\n        if (previousSibling) {\n            node.prev = previousSibling;\n            previousSibling.next = node;\n        }\n        node.parent = parent;\n        this.lastNode = null;\n    };\n    return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';exports.ConcurrentRoot=1;exports.ContinuousEventPriority=4;exports.DefaultEventPriority=16;exports.DiscreteEventPriority=1;exports.IdleEventPriority=536870912;exports.LegacyRoot=0;\n","/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n    var exports = {};\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\"),ca=Object.assign;function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=Symbol.for(\"react.element\"),ha=Symbol.for(\"react.portal\"),ia=Symbol.for(\"react.fragment\"),ja=Symbol.for(\"react.strict_mode\"),ka=Symbol.for(\"react.profiler\"),la=Symbol.for(\"react.provider\"),ma=Symbol.for(\"react.context\"),na=Symbol.for(\"react.forward_ref\"),oa=Symbol.for(\"react.suspense\"),pa=Symbol.for(\"react.suspense_list\"),qa=Symbol.for(\"react.memo\"),ra=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar sa=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var ta=Symbol.iterator;function ua(a){if(null===a||\"object\"!==typeof a)return null;a=ta&&a[ta]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nfunction va(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ia:return\"Fragment\";case ha:return\"Portal\";case ka:return\"Profiler\";case ja:return\"StrictMode\";case oa:return\"Suspense\";case pa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case ma:return(a.displayName||\"Context\")+\".Consumer\";case la:return(a._context.displayName||\"Context\")+\".Provider\";case na:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case qa:return b=a.displayName||null,null!==b?b:va(a.type)||\"Memo\";case ra:b=a._payload;a=a._init;try{return va(a(b))}catch(c){}}return null}\nfunction xa(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return va(b);case 8:return b===ja?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function ya(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function za(a){if(ya(a)!==a)throw Error(n(188));}\nfunction Aa(a){var b=a.alternate;if(!b){b=ya(a);if(null===b)throw Error(n(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return za(e),a;if(f===d)return za(e),b;f=f.sibling}throw Error(n(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(n(189));}}if(c.alternate!==d)throw Error(n(190));}if(3!==c.tag)throw Error(n(188));return c.stateNode.current===c?a:b}function Ba(a){a=Aa(a);return null!==a?Ca(a):null}function Ca(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=Ca(a);if(null!==b)return b;a=a.sibling}return null}\nfunction Da(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){if(4!==a.tag){var b=Da(a);if(null!==b)return b}a=a.sibling}return null}\nvar Ea=Array.isArray,Fa=$$$hostConfig.getPublicInstance,Ga=$$$hostConfig.getRootHostContext,Ha=$$$hostConfig.getChildHostContext,Ia=$$$hostConfig.prepareForCommit,Ja=$$$hostConfig.resetAfterCommit,Ka=$$$hostConfig.createInstance,La=$$$hostConfig.appendInitialChild,Ma=$$$hostConfig.finalizeInitialChildren,Na=$$$hostConfig.prepareUpdate,Oa=$$$hostConfig.shouldSetTextContent,Pa=$$$hostConfig.createTextInstance,Qa=$$$hostConfig.scheduleTimeout,Ra=$$$hostConfig.cancelTimeout,Sa=$$$hostConfig.noTimeout,\nTa=$$$hostConfig.isPrimaryRenderer,Ua=$$$hostConfig.supportsMutation,Va=$$$hostConfig.supportsPersistence,p=$$$hostConfig.supportsHydration,Wa=$$$hostConfig.getInstanceFromNode,Xa=$$$hostConfig.preparePortalMount,Ya=$$$hostConfig.getCurrentEventPriority,Za=$$$hostConfig.detachDeletedInstance,$a=$$$hostConfig.supportsMicrotasks,ab=$$$hostConfig.scheduleMicrotask,bb=$$$hostConfig.supportsTestSelectors,cb=$$$hostConfig.findFiberRoot,db=$$$hostConfig.getBoundingRect,eb=$$$hostConfig.getTextContent,fb=\n$$$hostConfig.isHiddenSubtree,gb=$$$hostConfig.matchAccessibilityRole,hb=$$$hostConfig.setFocusIfFocusable,ib=$$$hostConfig.setupIntersectionObserver,jb=$$$hostConfig.appendChild,kb=$$$hostConfig.appendChildToContainer,lb=$$$hostConfig.commitTextUpdate,mb=$$$hostConfig.commitMount,nb=$$$hostConfig.commitUpdate,ob=$$$hostConfig.insertBefore,pb=$$$hostConfig.insertInContainerBefore,qb=$$$hostConfig.removeChild,rb=$$$hostConfig.removeChildFromContainer,sb=$$$hostConfig.resetTextContent,tb=$$$hostConfig.hideInstance,\nub=$$$hostConfig.hideTextInstance,vb=$$$hostConfig.unhideInstance,wb=$$$hostConfig.unhideTextInstance,xb=$$$hostConfig.clearContainer,yb=$$$hostConfig.cloneInstance,zb=$$$hostConfig.createContainerChildSet,Ab=$$$hostConfig.appendChildToContainerChildSet,Bb=$$$hostConfig.finalizeContainerChildren,Cb=$$$hostConfig.replaceContainerChildren,Db=$$$hostConfig.cloneHiddenInstance,Eb=$$$hostConfig.cloneHiddenTextInstance,Fb=$$$hostConfig.canHydrateInstance,Gb=$$$hostConfig.canHydrateTextInstance,Hb=$$$hostConfig.canHydrateSuspenseInstance,\nIb=$$$hostConfig.isSuspenseInstancePending,Jb=$$$hostConfig.isSuspenseInstanceFallback,Kb=$$$hostConfig.registerSuspenseInstanceRetry,Lb=$$$hostConfig.getNextHydratableSibling,Mb=$$$hostConfig.getFirstHydratableChild,Nb=$$$hostConfig.getFirstHydratableChildWithinContainer,Ob=$$$hostConfig.getFirstHydratableChildWithinSuspenseInstance,Pb=$$$hostConfig.hydrateInstance,Qb=$$$hostConfig.hydrateTextInstance,Rb=$$$hostConfig.hydrateSuspenseInstance,Sb=$$$hostConfig.getNextHydratableInstanceAfterSuspenseInstance,\nTb=$$$hostConfig.commitHydratedContainer,Ub=$$$hostConfig.commitHydratedSuspenseInstance,Vb=$$$hostConfig.clearSuspenseBoundary,Wb=$$$hostConfig.clearSuspenseBoundaryFromContainer,Xb=$$$hostConfig.shouldDeleteUnhydratedTailInstances,Yb=$$$hostConfig.didNotMatchHydratedContainerTextInstance,Zb=$$$hostConfig.didNotMatchHydratedTextInstance,$b;function ac(a){if(void 0===$b)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);$b=b&&b[1]||\"\"}return\"\\n\"+$b+a}var bc=!1;\nfunction cc(a,b){if(!a||bc)return\"\";bc=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{bc=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?ac(a):\"\"}var dc=Object.prototype.hasOwnProperty,ec=[],fc=-1;function gc(a){return{current:a}}\nfunction x(a){0>fc||(a.current=ec[fc],ec[fc]=null,fc--)}function y(a,b){fc++;ec[fc]=a.current;a.current=b}var hc={},A=gc(hc),B=gc(!1),ic=hc;function jc(a,b){var c=a.type.contextTypes;if(!c)return hc;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function kc(){x(B);x(A)}function lc(a,b,c){if(A.current!==hc)throw Error(n(168));y(A,b);y(B,c)}function mc(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(n(108,xa(a)||\"Unknown\",e));return ca({},c,d)}\nfunction nc(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||hc;ic=A.current;y(A,a);y(B,B.current);return!0}function oc(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(a=mc(a,b,ic),d.__reactInternalMemoizedMergedChildContext=a,x(B),x(A),y(A,a)):x(B);y(B,c)}var qc=Math.clz32?Math.clz32:pc,rc=Math.log,sc=Math.LN2;function pc(a){a>>>=0;return 0===a?32:31-(rc(a)/sc|0)|0}var tc=64,uc=4194304;\nfunction vc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function wc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=vc(h):(f&=g,0!==f&&(d=vc(f)))}else g=c&~e,0!==g?d=vc(g):0!==f&&(d=vc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-qc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction xc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction yc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-qc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=xc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function zc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Ac(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}function Bc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-qc(b);a[b]=c}\nfunction Cc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-qc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}function Dc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-qc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var D=0;function Ec(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}\nvar Fc=ba.unstable_scheduleCallback,Gc=ba.unstable_cancelCallback,Hc=ba.unstable_shouldYield,Ic=ba.unstable_requestPaint,E=ba.unstable_now,Jc=ba.unstable_ImmediatePriority,Kc=ba.unstable_UserBlockingPriority,Lc=ba.unstable_NormalPriority,Mc=ba.unstable_IdlePriority,Nc=null,Oc=null;function Pc(a){if(Oc&&\"function\"===typeof Oc.onCommitFiberRoot)try{Oc.onCommitFiberRoot(Nc,a,void 0,128===(a.current.flags&128))}catch(b){}}function Qc(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar Rc=\"function\"===typeof Object.is?Object.is:Qc,Sc=null,Tc=!1,Uc=!1;function Vc(a){null===Sc?Sc=[a]:Sc.push(a)}function Wc(a){Tc=!0;Vc(a)}function Xc(){if(!Uc&&null!==Sc){Uc=!0;var a=0,b=D;try{var c=Sc;for(D=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}Sc=null;Tc=!1}catch(e){throw null!==Sc&&(Sc=Sc.slice(a+1)),Fc(Jc,Xc),e;}finally{D=b,Uc=!1}}return null}var Yc=ea.ReactCurrentBatchConfig;\nfunction Zc(a,b){if(Rc(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!dc.call(b,e)||!Rc(a[e],b[e]))return!1}return!0}\nfunction $c(a){switch(a.tag){case 5:return ac(a.type);case 16:return ac(\"Lazy\");case 13:return ac(\"Suspense\");case 19:return ac(\"SuspenseList\");case 0:case 2:case 15:return a=cc(a.type,!1),a;case 11:return a=cc(a.type.render,!1),a;case 1:return a=cc(a.type,!0),a;default:return\"\"}}function ad(a,b){if(a&&a.defaultProps){b=ca({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var bd=gc(null),cd=null,dd=null,ed=null;function fd(){ed=dd=cd=null}\nfunction gd(a,b,c){Ta?(y(bd,b._currentValue),b._currentValue=c):(y(bd,b._currentValue2),b._currentValue2=c)}function hd(a){var b=bd.current;x(bd);Ta?a._currentValue=b:a._currentValue2=b}function id(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction jd(a,b){cd=a;ed=dd=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(kd=!0),a.firstContext=null)}function ld(a){var b=Ta?a._currentValue:a._currentValue2;if(ed!==a)if(a={context:a,memoizedValue:b,next:null},null===dd){if(null===cd)throw Error(n(308));dd=a;cd.dependencies={lanes:0,firstContext:a}}else dd=dd.next=a;return b}var md=null,nd=!1;\nfunction od(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function pd(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function qd(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction rd(a,b){var c=a.updateQueue;null!==c&&(c=c.shared,null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=c.interleaved,null===a?(b.next=b,null===md?md=[c]:md.push(c)):(b.next=a.next,a.next=b),c.interleaved=b):(a=c.pending,null===a?b.next=b:(b.next=a.next,a.next=b),c.pending=b))}function sd(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nfunction td(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction ud(a,b,c,d){var e=a.updateQueue;nd=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var v=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,z=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:z,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var q=a,N=h;r=b;z=c;switch(N.tag){case 1:q=N.payload;if(\"function\"===typeof q){v=q.call(z,v,r);break a}v=q;break a;case 3:q.flags=q.flags&-65537|128;case 0:q=N.payload;r=\"function\"===typeof q?q.call(z,v,r):q;if(null===r||void 0===r)break a;v=ca({},v,r);break a;case 2:nd=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else z={eventTime:z,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=z,k=v):m=m.next=z,g|=\nr;h=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=v);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);vd|=g;a.lanes=g;a.memoizedState=v}}\nfunction wd(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(n(191,e));e.call(d)}}}var xd=(new aa.Component).refs;function yd(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:ca({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Bd={isMounted:function(a){return(a=a._reactInternals)?ya(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=H(),e=zd(a),f=qd(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);rd(a,f);b=Ad(a,e,d);null!==b&&sd(b,a,e)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=H(),e=zd(a),f=qd(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);rd(a,f);b=Ad(a,e,d);null!==b&&sd(b,a,e)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=H(),d=zd(a),e=qd(c,\nd);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);rd(a,e);b=Ad(a,d,c);null!==b&&sd(b,a,d)}};function Cd(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Zc(c,d)||!Zc(e,f):!0}\nfunction Dd(a,b,c){var d=!1,e=hc;var f=b.contextType;\"object\"===typeof f&&null!==f?f=ld(f):(e=C(b)?ic:A.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?jc(a,e):hc);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Bd;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ed(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Bd.enqueueReplaceState(b,b.state,null)}\nfunction Fd(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=xd;od(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=ld(f):(f=C(b)?ic:A.current,e.context=jc(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(yd(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Bd.enqueueReplaceState(e,e.state,null),ud(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}var Gd=[],Hd=0,Id=null,Jd=0,Kd=[],Ld=0,Md=null,Nd=1,Od=\"\";function Pd(a,b){Gd[Hd++]=Jd;Gd[Hd++]=Id;Id=a;Jd=b}\nfunction Qd(a,b,c){Kd[Ld++]=Nd;Kd[Ld++]=Od;Kd[Ld++]=Md;Md=a;var d=Nd;a=Od;var e=32-qc(d)-1;d&=~(1<<e);c+=1;var f=32-qc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;Nd=1<<32-qc(b)+e|c<<e|d;Od=f+a}else Nd=1<<f|c<<e|d,Od=a}function Rd(a){null!==a.return&&(Pd(a,1),Qd(a,1,0))}function Sd(a){for(;a===Id;)Id=Gd[--Hd],Gd[Hd]=null,Jd=Gd[--Hd],Gd[Hd]=null;for(;a===Md;)Md=Kd[--Ld],Kd[Ld]=null,Od=Kd[--Ld],Kd[Ld]=null,Nd=Kd[--Ld],Kd[Ld]=null}var Td=null,Ud=null,I=!1,Vd=!1,Wd=null;\nfunction Xd(a,b){var c=Yd(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Zd(a,b){switch(a.tag){case 5:return b=Fb(b,a.type,a.pendingProps),null!==b?(a.stateNode=b,Td=a,Ud=Mb(b),!0):!1;case 6:return b=Gb(b,a.pendingProps),null!==b?(a.stateNode=b,Td=a,Ud=null,!0):!1;case 13:b=Hb(b);if(null!==b){var c=null!==Md?{id:Nd,overflow:Od}:null;a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824};c=Yd(18,null,null,0);c.stateNode=b;c.return=a;a.child=c;Td=a;Ud=null;return!0}return!1;default:return!1}}function $d(a){return 0!==(a.mode&1)&&0===(a.flags&128)}\nfunction ae(a){if(I){var b=Ud;if(b){var c=b;if(!Zd(a,b)){if($d(a))throw Error(n(418));b=Lb(c);var d=Td;b&&Zd(a,b)?Xd(d,c):(a.flags=a.flags&-4097|2,I=!1,Td=a)}}else{if($d(a))throw Error(n(418));a.flags=a.flags&-4097|2;I=!1;Td=a}}}function be(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Td=a}\nfunction ce(a){if(!p||a!==Td)return!1;if(!I)return be(a),I=!0,!1;if(3!==a.tag&&(5!==a.tag||Xb(a.type)&&!Oa(a.type,a.memoizedProps))){var b=Ud;if(b){if($d(a)){for(a=Ud;a;)a=Lb(a);throw Error(n(418));}for(;b;)Xd(a,b),b=Lb(b)}}be(a);if(13===a.tag){if(!p)throw Error(n(316));a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(n(317));Ud=Sb(a)}else Ud=Td?Lb(a.stateNode):null;return!0}function de(){p&&(Ud=Td=null,Vd=I=!1)}function ee(a){null===Wd?Wd=[a]:Wd.push(a)}\nfunction fe(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(n(309));var d=c.stateNode}if(!d)throw Error(n(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===xd&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(n(284));if(!c._owner)throw Error(n(290,a));}return a}\nfunction ge(a,b){a=Object.prototype.toString.call(b);throw Error(n(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function he(a){var b=a._init;return b(a._payload)}\nfunction ie(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=je(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=ke(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ia)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===ra&&he(f)===b.type))return d=e(b,c.props),d.ref=fe(a,b,c),d.return=a,d;d=le(c.type,c.key,c.props,null,a.mode,d);d.ref=fe(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=me(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=ne(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function v(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=ke(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case fa:return c=le(b.type,b.key,b.props,null,a.mode,c),\nc.ref=fe(a,null,b),c.return=a,c;case ha:return b=me(b,a.mode,c),b.return=a,b;case ra:var d=b._init;return v(a,d(b._payload),c)}if(Ea(b)||ua(b))return b=ne(b,a.mode,c,null),b.return=a,b;ge(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case fa:return c.key===e?k(a,b,c,d):null;case ha:return c.key===e?l(a,b,c,d):null;case ra:return e=c._init,r(a,\nb,e(c._payload),d)}if(Ea(c)||ua(c))return null!==e?null:m(a,b,c,d,null);ge(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case fa:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case ha:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case ra:var f=d._init;return z(a,b,c,f(d._payload),e)}if(Ea(d)||ua(d))return a=a.get(c)||null,m(b,a,d,e,null);ge(b,d)}return null}\nfunction q(e,g,h,k){for(var l=null,m=null,w=g,u=g=0,t=null;null!==w&&u<h.length;u++){w.index>u?(t=w,w=null):t=w.sibling;var q=r(e,w,h[u],k);if(null===q){null===w&&(w=t);break}a&&w&&null===q.alternate&&b(e,w);g=f(q,g,u);null===m?l=q:m.sibling=q;m=q;w=t}if(u===h.length)return c(e,w),I&&Pd(e,u),l;if(null===w){for(;u<h.length;u++)w=v(e,h[u],k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);I&&Pd(e,u);return l}for(w=d(e,w);u<h.length;u++)t=z(w,e,u,h[u],k),null!==t&&(a&&null!==t.alternate&&w.delete(null===\nt.key?u:t.key),g=f(t,g,u),null===m?l=t:m.sibling=t,m=t);a&&w.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function N(e,g,h,k){var l=ua(h);if(\"function\"!==typeof l)throw Error(n(150));h=l.call(h);if(null==h)throw Error(n(151));for(var w=l=null,m=g,u=g=0,q=null,t=h.next();null!==m&&!t.done;u++,t=h.next()){m.index>u?(q=m,m=null):q=m.sibling;var V=r(e,m,t.value,k);if(null===V){null===m&&(m=q);break}a&&m&&null===V.alternate&&b(e,m);g=f(V,g,u);null===w?l=V:w.sibling=V;w=V;m=q}if(t.done)return c(e,\nm),I&&Pd(e,u),l;if(null===m){for(;!t.done;u++,t=h.next())t=v(e,t.value,k),null!==t&&(g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);I&&Pd(e,u);return l}for(m=d(e,m);!t.done;u++,t=h.next())t=z(m,e,u,t.value,k),null!==t&&(a&&null!==t.alternate&&m.delete(null===t.key?u:t.key),g=f(t,g,u),null===w?l=t:w.sibling=t,w=t);a&&m.forEach(function(a){return b(e,a)});I&&Pd(e,u);return l}function da(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ia&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==\nf){switch(f.$$typeof){case fa:a:{for(var k=f.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ia){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===ra&&he(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=fe(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ia?(d=ne(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=le(f.type,f.key,f.props,null,a.mode,h),h.ref=fe(a,d,f),h.return=\na,a=h)}return g(a);case ha:a:{for(l=f.key;null!==d;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=me(f,a.mode,h);d.return=a;a=d}return g(a);case ra:return l=f._init,da(a,d,l(f._payload),h)}if(Ea(f))return q(a,d,f,h);if(ua(f))return N(a,d,f,h);ge(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&\n6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=ke(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return da}var oe=ie(!0),pe=ie(!1),qe={},re=gc(qe),se=gc(qe),te=gc(qe);function ue(a){if(a===qe)throw Error(n(174));return a}function ve(a,b){y(te,b);y(se,a);y(re,qe);a=Ga(b);x(re);y(re,a)}function we(){x(re);x(se);x(te)}function xe(a){var b=ue(te.current),c=ue(re.current);b=Ha(c,a.type,b);c!==b&&(y(se,a),y(re,b))}function ye(a){se.current===a&&(x(re),x(se))}var J=gc(0);\nfunction ze(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||Ib(c)||Jb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Ae=[];\nfunction Be(){for(var a=0;a<Ae.length;a++){var b=Ae[a];Ta?b._workInProgressVersionPrimary=null:b._workInProgressVersionSecondary=null}Ae.length=0}var Ce=ea.ReactCurrentDispatcher,De=ea.ReactCurrentBatchConfig,Ee=0,K=null,L=null,M=null,Fe=!1,Ge=!1,He=0,Ie=0;function O(){throw Error(n(321));}function Je(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Rc(a[c],b[c]))return!1;return!0}\nfunction Ke(a,b,c,d,e,f){Ee=f;K=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ce.current=null===a||null===a.memoizedState?Le:Me;a=c(d,e);if(Ge){f=0;do{Ge=!1;He=0;if(25<=f)throw Error(n(301));f+=1;M=L=null;b.updateQueue=null;Ce.current=Ne;a=c(d,e)}while(Ge)}Ce.current=Oe;b=null!==L&&null!==L.next;Ee=0;M=L=K=null;Fe=!1;if(b)throw Error(n(300));return a}function Pe(){var a=0!==He;He=0;return a}\nfunction Qe(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===M?K.memoizedState=M=a:M=M.next=a;return M}function Re(){if(null===L){var a=K.alternate;a=null!==a?a.memoizedState:null}else a=L.next;var b=null===M?K.memoizedState:M.next;if(null!==b)M=b,L=a;else{if(null===a)throw Error(n(310));L=a;a={memoizedState:L.memoizedState,baseState:L.baseState,baseQueue:L.baseQueue,queue:L.queue,next:null};null===M?K.memoizedState=M=a:M=M.next=a}return M}\nfunction Se(a,b){return\"function\"===typeof b?b(a):b}\nfunction Te(a){var b=Re(),c=b.queue;if(null===c)throw Error(n(311));c.lastRenderedReducer=a;var d=L,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Ee&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var v={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=v,g=d):k=k.next=v;K.lanes|=m;vd|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;Rc(d,b.memoizedState)||(kd=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,K.lanes|=f,vd|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Ue(a){var b=Re(),c=b.queue;if(null===c)throw Error(n(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);Rc(f,b.memoizedState)||(kd=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Ve(){}\nfunction We(a,b){var c=K,d=Re(),e=b(),f=!Rc(d.memoizedState,e);f&&(d.memoizedState=e,kd=!0);d=d.queue;Xe(Ye.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==M&&M.memoizedState.tag&1){c.flags|=2048;Ze(9,$e.bind(null,c,d,e,b),void 0,null);if(null===F)throw Error(n(349));0!==(Ee&30)||af(c,b,e)}return e}function af(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=K.updateQueue;null===b?(b={lastEffect:null,stores:null},K.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction $e(a,b,c,d){b.value=c;b.getSnapshot=d;bf(b)&&Ad(a,1,-1)}function Ye(a,b,c){return c(function(){bf(b)&&Ad(a,1,-1)})}function bf(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!Rc(a,c)}catch(d){return!0}}function cf(a){var b=Qe();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Se,lastRenderedState:a};b.queue=a;a=a.dispatch=df.bind(null,K,a);return[b.memoizedState,a]}\nfunction Ze(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=K.updateQueue;null===b?(b={lastEffect:null,stores:null},K.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ef(){return Re().memoizedState}function ff(a,b,c,d){var e=Qe();K.flags|=a;e.memoizedState=Ze(1|b,c,void 0,void 0===d?null:d)}\nfunction gf(a,b,c,d){var e=Re();d=void 0===d?null:d;var f=void 0;if(null!==L){var g=L.memoizedState;f=g.destroy;if(null!==d&&Je(d,g.deps)){e.memoizedState=Ze(b,c,f,d);return}}K.flags|=a;e.memoizedState=Ze(1|b,c,f,d)}function hf(a,b){return ff(8390656,8,a,b)}function Xe(a,b){return gf(2048,8,a,b)}function jf(a,b){return gf(4,2,a,b)}function kf(a,b){return gf(4,4,a,b)}\nfunction lf(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function mf(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return gf(4,4,lf.bind(null,b,a),c)}function nf(){}function of(a,b){var c=Re();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Je(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction pf(a,b){var c=Re();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Je(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function qf(a,b){var c=D;D=0!==c&&4>c?c:4;a(!0);var d=De.transition;De.transition={};try{a(!1),b()}finally{D=c,De.transition=d}}function rf(){return Re().memoizedState}function sf(a,b,c){var d=zd(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};tf(a)?uf(b,c):(vf(a,b,c),c=H(),a=Ad(a,d,c),null!==a&&wf(a,b,d))}\nfunction df(a,b,c){var d=zd(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(tf(a))uf(b,e);else{vf(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Rc(h,g))return}catch(k){}finally{}c=H();a=Ad(a,d,c);null!==a&&wf(a,b,d)}}function tf(a){var b=a.alternate;return a===K||null!==b&&b===K}\nfunction uf(a,b){Ge=Fe=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function vf(a,b,c){null!==F&&0!==(a.mode&1)&&0===(G&2)?(a=b.interleaved,null===a?(c.next=c,null===md?md=[b]:md.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function wf(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Dc(a,c)}}\nvar Oe={readContext:ld,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Le={readContext:ld,useCallback:function(a,b){Qe().memoizedState=[a,void 0===b?null:b];return a},useContext:ld,useEffect:hf,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ff(4194308,\n4,lf.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ff(4194308,4,a,b)},useInsertionEffect:function(a,b){return ff(4,2,a,b)},useMemo:function(a,b){var c=Qe();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Qe();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=sf.bind(null,K,a);return[d.memoizedState,a]},useRef:function(a){var b=\nQe();a={current:a};return b.memoizedState=a},useState:cf,useDebugValue:nf,useDeferredValue:function(a){var b=cf(a),c=b[0],d=b[1];hf(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=cf(!1),b=a[0];a=qf.bind(null,a[1]);Qe().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=K,e=Qe();if(I){if(void 0===c)throw Error(n(407));c=c()}else{c=b();if(null===F)throw Error(n(349));\n0!==(Ee&30)||af(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;hf(Ye.bind(null,d,f,a),[a]);d.flags|=2048;Ze(9,$e.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Qe(),b=F.identifierPrefix;if(I){var c=Od;var d=Nd;c=(d&~(1<<32-qc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=He++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Ie++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Me={readContext:ld,useCallback:of,useContext:ld,useEffect:Xe,useImperativeHandle:mf,\nuseInsertionEffect:jf,useLayoutEffect:kf,useMemo:pf,useReducer:Te,useRef:ef,useState:function(){return Te(Se)},useDebugValue:nf,useDeferredValue:function(a){var b=Te(Se),c=b[0],d=b[1];Xe(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=Te(Se)[0],b=Re().memoizedState;return[a,b]},useMutableSource:Ve,useSyncExternalStore:We,useId:rf,unstable_isNewReconciler:!1},Ne={readContext:ld,useCallback:of,useContext:ld,useEffect:Xe,\nuseImperativeHandle:mf,useInsertionEffect:jf,useLayoutEffect:kf,useMemo:pf,useReducer:Ue,useRef:ef,useState:function(){return Ue(Se)},useDebugValue:nf,useDeferredValue:function(a){var b=Ue(Se),c=b[0],d=b[1];Xe(function(){var b=De.transition;De.transition={};try{d(a)}finally{De.transition=b}},[a]);return c},useTransition:function(){var a=Ue(Se)[0],b=Re().memoizedState;return[a,b]},useMutableSource:Ve,useSyncExternalStore:We,useId:rf,unstable_isNewReconciler:!1};\nfunction xf(a,b){try{var c=\"\",d=b;do c+=$c(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function yf(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var zf=\"function\"===typeof WeakMap?WeakMap:Map;function Af(a,b,c){c=qd(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Bf||(Bf=!0,Cf=d);yf(a,b)};return c}\nfunction Df(a,b,c){c=qd(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){yf(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){yf(a,b);\"function\"!==typeof d&&(null===Ef?Ef=new Set([this]):Ef.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ff(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new zf;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Gf.bind(null,a,b,c),b.then(a,a))}function Hf(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction If(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=qd(-1,1),b.tag=2,rd(c,b))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}function Jf(a){a.flags|=4}function Kf(a,b){if(null!==a&&a.child===b.child)return!0;if(0!==(b.flags&16))return!1;for(a=b.child;null!==a;){if(0!==(a.flags&12854)||0!==(a.subtreeFlags&12854))return!1;a=a.sibling}return!0}var Lf,Mf,Nf,Of;\nif(Ua)Lf=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)La(a,c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}},Mf=function(){},Nf=function(a,b,c,d,e){a=a.memoizedProps;if(a!==d){var f=b.stateNode,g=ue(re.current);c=Na(f,c,a,d,e,g);(b.updateQueue=c)&&Jf(b)}},Of=function(a,b,c,d){c!==d&&Jf(b)};else if(Va){Lf=function(a,\nb,c,d){for(var e=b.child;null!==e;){if(5===e.tag){var f=e.stateNode;c&&d&&(f=Db(f,e.type,e.memoizedProps,e));La(a,f)}else if(6===e.tag)f=e.stateNode,c&&d&&(f=Eb(f,e.memoizedProps,e)),La(a,f);else if(4!==e.tag)if(22===e.tag&&null!==e.memoizedState)f=e.child,null!==f&&(f.return=e),Lf(a,e,!0,!0);else if(null!==e.child){e.child.return=e;e=e.child;continue}if(e===b)break;for(;null===e.sibling;){if(null===e.return||e.return===b)return;e=e.return}e.sibling.return=e.return;e=e.sibling}};var Pf=function(a,\nb,c,d){for(var e=b.child;null!==e;){if(5===e.tag){var f=e.stateNode;c&&d&&(f=Db(f,e.type,e.memoizedProps,e));Ab(a,f)}else if(6===e.tag)f=e.stateNode,c&&d&&(f=Eb(f,e.memoizedProps,e)),Ab(a,f);else if(4!==e.tag)if(22===e.tag&&null!==e.memoizedState)f=e.child,null!==f&&(f.return=e),Pf(a,e,!0,!0);else if(null!==e.child){e.child.return=e;e=e.child;continue}if(e===b)break;for(;null===e.sibling;){if(null===e.return||e.return===b)return;e=e.return}e.sibling.return=e.return;e=e.sibling}};Mf=function(a,b){var c=\nb.stateNode;if(!Kf(a,b)){a=c.containerInfo;var d=zb(a);Pf(d,b,!1,!1);c.pendingChildren=d;Jf(b);Bb(a,d)}};Nf=function(a,b,c,d,e){var f=a.stateNode,g=a.memoizedProps;if((a=Kf(a,b))&&g===d)b.stateNode=f;else{var h=b.stateNode,k=ue(re.current),l=null;g!==d&&(l=Na(h,c,g,d,e,k));a&&null===l?b.stateNode=f:(f=yb(f,l,c,g,d,b,a,h),Ma(f,c,d,e,k)&&Jf(b),b.stateNode=f,a?Jf(b):Lf(f,b,!1,!1))}};Of=function(a,b,c,d){c!==d?(a=ue(te.current),c=ue(re.current),b.stateNode=Pa(d,a,c,b),Jf(b)):b.stateNode=a.stateNode}}else Mf=\nfunction(){},Nf=function(){},Of=function(){};function Qf(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction P(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Rf(a,b,c){var d=b.pendingProps;Sd(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return P(b),null;case 1:return C(b.type)&&kc(),P(b),null;case 3:d=b.stateNode;we();x(B);x(A);Be();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)ce(b)?Jf(b):null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==Wd&&(Sf(Wd),Wd=null));Mf(a,b);P(b);return null;case 5:ye(b);c=ue(te.current);var e=\nb.type;if(null!==a&&null!=b.stateNode)Nf(a,b,e,d,c),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(n(166));P(b);return null}a=ue(re.current);if(ce(b)){if(!p)throw Error(n(175));a=Pb(b.stateNode,b.type,b.memoizedProps,c,a,b,!Vd);b.updateQueue=a;null!==a&&Jf(b)}else{var f=Ka(e,d,c,a,b);Lf(f,b,!1,!1);b.stateNode=f;Ma(f,e,d,c,a)&&Jf(b)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}P(b);return null;case 6:if(a&&null!=b.stateNode)Of(a,b,a.memoizedProps,d);else{if(\"string\"!==\ntypeof d&&null===b.stateNode)throw Error(n(166));a=ue(te.current);c=ue(re.current);if(ce(b)){if(!p)throw Error(n(176));a=b.stateNode;d=b.memoizedProps;if(c=Qb(a,d,b,!Vd))if(e=Td,null!==e)switch(f=0!==(e.mode&1),e.tag){case 3:Yb(e.stateNode.containerInfo,a,d,f);break;case 5:Zb(e.type,e.memoizedProps,e.stateNode,a,d,f)}c&&Jf(b)}else b.stateNode=Pa(d,a,c,b)}P(b);return null;case 13:x(J);d=b.memoizedState;if(I&&null!==Ud&&0!==(b.mode&1)&&0===(b.flags&128)){for(a=Ud;a;)a=Lb(a);de();b.flags|=98560;return b}if(null!==\nd&&null!==d.dehydrated){d=ce(b);if(null===a){if(!d)throw Error(n(318));if(!p)throw Error(n(344));a=b.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(n(317));Rb(a,b)}else de(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;P(b);return null}null!==Wd&&(Sf(Wd),Wd=null);if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;c=!1;null===a?ce(b):c=null!==a.memoizedState;d&&!c&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(J.current&1)?0===Q&&(Q=3):Tf()));null!==b.updateQueue&&(b.flags|=\n4);P(b);return null;case 4:return we(),Mf(a,b),null===a&&Xa(b.stateNode.containerInfo),P(b),null;case 10:return hd(b.type._context),P(b),null;case 17:return C(b.type)&&kc(),P(b),null;case 19:x(J);e=b.memoizedState;if(null===e)return P(b),null;d=0!==(b.flags&128);f=e.rendering;if(null===f)if(d)Qf(e,!1);else{if(0!==Q||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){f=ze(a);if(null!==f){b.flags|=128;Qf(e,!1);a=f.updateQueue;null!==a&&(b.updateQueue=a,b.flags|=4);b.subtreeFlags=0;a=c;for(d=b.child;null!==\nd;)c=d,e=a,c.flags&=14680066,f=c.alternate,null===f?(c.childLanes=0,c.lanes=e,c.child=null,c.subtreeFlags=0,c.memoizedProps=null,c.memoizedState=null,c.updateQueue=null,c.dependencies=null,c.stateNode=null):(c.childLanes=f.childLanes,c.lanes=f.lanes,c.child=f.child,c.subtreeFlags=0,c.deletions=null,c.memoizedProps=f.memoizedProps,c.memoizedState=f.memoizedState,c.updateQueue=f.updateQueue,c.type=f.type,e=f.dependencies,c.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),d=d.sibling;\ny(J,J.current&1|2);return b.child}a=a.sibling}null!==e.tail&&E()>Uf&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304)}else{if(!d)if(a=ze(f),null!==a){if(b.flags|=128,d=!0,a=a.updateQueue,null!==a&&(b.updateQueue=a,b.flags|=4),Qf(e,!0),null===e.tail&&\"hidden\"===e.tailMode&&!f.alternate&&!I)return P(b),null}else 2*E()-e.renderingStartTime>Uf&&1073741824!==c&&(b.flags|=128,d=!0,Qf(e,!1),b.lanes=4194304);e.isBackwards?(f.sibling=b.child,b.child=f):(a=e.last,null!==a?a.sibling=f:b.child=f,e.last=f)}if(null!==\ne.tail)return b=e.tail,e.rendering=b,e.tail=b.sibling,e.renderingStartTime=E(),b.sibling=null,a=J.current,y(J,d?a&1|2:a&1),b;P(b);return null;case 22:case 23:return Vf(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Wf&1073741824)&&(P(b),Ua&&b.subtreeFlags&6&&(b.flags|=8192)):P(b),null;case 24:return null;case 25:return null}throw Error(n(156,b.tag));}var Xf=ea.ReactCurrentOwner,kd=!1;\nfunction R(a,b,c,d){b.child=null===a?pe(b,null,c,d):oe(b,a.child,c,d)}function Yf(a,b,c,d,e){c=c.render;var f=b.ref;jd(b,e);d=Ke(a,b,c,d,f,e);c=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&c&&Rd(b);b.flags|=1;R(a,b,d,e);return b.child}\nfunction $f(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ag(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bg(a,b,f,d,e);a=le(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Zc;if(c(g,d)&&a.ref===b.ref)return Zf(a,b,e)}b.flags|=1;a=je(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bg(a,b,c,d,e){if(null!==a&&Zc(a.memoizedProps,d)&&a.ref===b.ref)if(kd=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(kd=!0);else return b.lanes=a.lanes,Zf(a,b,e);return cg(a,b,c,d,e)}\nfunction dg(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},y(eg,Wf),Wf|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,y(eg,Wf),Wf|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,y(eg,Wf),Wf|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,y(eg,Wf),Wf|=d;R(a,b,e,c);return b.child}function fg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cg(a,b,c,d,e){var f=C(c)?ic:A.current;f=jc(b,f);jd(b,e);c=Ke(a,b,c,d,f,e);d=Pe();if(null!==a&&!kd)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zf(a,b,e);I&&d&&Rd(b);b.flags|=1;R(a,b,c,e);return b.child}\nfunction gg(a,b,c,d,e){if(C(c)){var f=!0;nc(b)}else f=!1;jd(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Dd(b,c,d),Fd(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ld(l):(l=C(c)?ic:A.current,l=jc(b,l));var m=c.getDerivedStateFromProps,v=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;v||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==\ntypeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ed(b,g,d,l);nd=!1;var r=b.memoizedState;g.state=r;ud(b,d,g,e);k=b.memoizedState;h!==d||r!==k||B.current||nd?(\"function\"===typeof m&&(yd(b,c,m,d),k=b.memoizedState),(h=nd||Cd(b,c,h,d,r,k,l))?(v||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&\n(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;pd(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:ad(b.type,h);g.props=l;v=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ld(k):(k=C(c)?ic:A.current,k=jc(b,k));var z=c.getDerivedStateFromProps;(m=\"function\"===typeof z||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==v||r!==k)&&Ed(b,g,d,k);nd=!1;r=b.memoizedState;g.state=r;ud(b,d,g,e);var q=b.memoizedState;h!==v||r!==q||B.current||nd?(\"function\"===typeof z&&(yd(b,c,z,d),q=b.memoizedState),(l=nd||Cd(b,c,l,d,r,q,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nq,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,q,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=q),g.props=d,g.state=q,g.context=k,d=l):(\"function\"!==\ntypeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return hg(a,b,c,d,f,e)}\nfunction hg(a,b,c,d,e,f){fg(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&oc(b,c,!1),Zf(a,b,f);d=b.stateNode;Xf.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=oe(b,a.child,null,f),b.child=oe(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&oc(b,c,!0);return b.child}function ig(a){var b=a.stateNode;b.pendingContext?lc(a,b.pendingContext,b.pendingContext!==b.context):b.context&&lc(a,b.context,!1);ve(a,b.containerInfo)}\nfunction jg(a,b,c,d,e){de();ee(e);b.flags|=256;R(a,b,c,d);return b.child}var kg={dehydrated:null,treeContext:null,retryLane:0};function lg(a){return{baseLanes:a,cachePool:null}}\nfunction mg(a,b,c){var d=b.pendingProps,e=J.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;y(J,e&1);if(null===a){ae(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:Jb(a)?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=e):\nf=ng(e,d,0,null),a=ne(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lg(c),b.memoizedState=kg,a):og(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pg(a,b,c,Error(n(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=ng({mode:\"visible\",children:d.children},e,0,null);f=ne(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&oe(b,a.child,\nnull,c);b.child.memoizedState=lg(c);b.memoizedState=kg;return f}if(0===(b.mode&1))b=pg(a,b,c,null);else if(Jb(h))b=pg(a,b,c,Error(n(419)));else if(d=0!==(c&a.childLanes),kd||d){d=F;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Ad(a,d,-1))}Tf();b=pg(a,b,c,Error(n(421)))}else Ib(h)?(b.flags|=128,b.child=a.child,b=qg.bind(null,a),Kb(h,b),b=null):(c=e.treeContext,p&&(Ud=Ob(h),Td=b,I=!0,Wd=null,Vd=!1,null!==c&&(Kd[Ld++]=Nd,Kd[Ld++]=Od,Kd[Ld++]=Md,Nd=c.id,Od=c.overflow,Md=b)),b=og(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=\nnull===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rg(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lg(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kg,d;c=sg(a,b,d.children,c);b.memoizedState=null;return c}\nfunction og(a,b){b=ng({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sg(a,b,c,d){var e=a.child;a=e.sibling;c=je(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rg(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=je(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=je(g,d):(d=ne(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pg(a,b,c,d){null!==d&&ee(d);oe(b,a.child,null,c);a=og(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tg(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);id(a.return,b,c)}function ug(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vg(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=J.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tg(a,c,b);else if(19===a.tag)tg(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}y(J,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ze(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);ug(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ze(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}ug(b,!0,c,null,f);break;case \"together\":ug(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zf(a,b,c){null!==a&&(b.dependencies=a.dependencies);vd|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(n(153));if(null!==b.child){a=b.child;c=je(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=je(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wg(a,b,c){switch(b.tag){case 3:ig(b);de();break;case 5:xe(b);break;case 1:C(b.type)&&nc(b);break;case 4:ve(b,b.stateNode.containerInfo);break;case 10:gd(b,b.type._context,b.memoizedProps.value);break;case 13:var d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return y(J,J.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mg(a,b,c);y(J,J.current&1);a=Zf(a,b,c);return null!==a?a.sibling:null}y(J,J.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&128)){if(d)return vg(a,\nb,c);b.flags|=128}var e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);y(J,J.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dg(a,b,c)}return Zf(a,b,c)}\nfunction xg(a,b){Sd(b);switch(b.tag){case 1:return C(b.type)&&kc(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return we(),x(B),x(A),Be(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return ye(b),null;case 13:x(J);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(n(340));de()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return x(J),null;case 4:return we(),null;case 10:return hd(b.type._context),null;case 22:case 23:return Vf(),\nnull;case 24:return null;default:return null}}var yg=!1,zg=!1,Ag=\"function\"===typeof WeakSet?WeakSet:Set,S=null;function Bg(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){T(a,b,d)}else c.current=null}function Cg(a,b,c){try{c()}catch(d){T(a,b,d)}}var Dg=!1;\nfunction Eg(a,b){Ia(a.containerInfo);for(S=b;null!==S;)if(a=S,b=a.child,0!==(a.subtreeFlags&1028)&&null!==b)b.return=a,S=b;else for(;null!==S;){a=S;try{var c=a.alternate;if(0!==(a.flags&1024))switch(a.tag){case 0:case 11:case 15:break;case 1:if(null!==c){var d=c.memoizedProps,e=c.memoizedState,f=a.stateNode,g=f.getSnapshotBeforeUpdate(a.elementType===a.type?d:ad(a.type,d),e);f.__reactInternalSnapshotBeforeUpdate=g}break;case 3:Ua&&xb(a.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;\ndefault:throw Error(n(163));}}catch(h){T(a,a.return,h)}b=a.sibling;if(null!==b){b.return=a.return;S=b;break}S=a.return}c=Dg;Dg=!1;return c}function Fg(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Cg(b,c,f)}e=e.next}while(e!==d)}}function Gg(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Hg(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=Fa(c);break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Ig(a,b,c){if(Oc&&\"function\"===typeof Oc.onCommitFiberUnmount)try{Oc.onCommitFiberUnmount(Nc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Cg(b,c,f):0!==(e&4)&&Cg(b,c,f));d=d.next}while(d!==a)}break;case 1:Bg(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){T(b,\nc,g)}break;case 5:Bg(b,c);break;case 4:Ua?Jg(a,b,c):Va&&Va&&(b=b.stateNode.containerInfo,c=zb(b),Cb(b,c))}}function Kg(a,b,c){for(var d=b;;)if(Ig(a,d,c),null===d.child||Ua&&4===d.tag){if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return}d.sibling.return=d.return;d=d.sibling}else d.child.return=d,d=d.child}\nfunction Lg(a){var b=a.alternate;null!==b&&(a.alternate=null,Lg(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&Za(b));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mg(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Ng(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mg(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Og(a){if(Ua){a:{for(var b=a.return;null!==b;){if(Mg(b))break a;b=b.return}throw Error(n(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(sb(b),c.flags&=-33);c=Ng(a);Pg(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Ng(a);Qg(a,c,b);break;default:throw Error(n(161));}}}function Qg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?pb(c,a,b):kb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Qg(a,b,c),a=a.sibling;null!==a;)Qg(a,b,c),a=a.sibling}\nfunction Pg(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?ob(c,a,b):jb(c,a);else if(4!==d&&(a=a.child,null!==a))for(Pg(a,b,c),a=a.sibling;null!==a;)Pg(a,b,c),a=a.sibling}\nfunction Jg(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(n(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag)Kg(a,d,c),g?rb(f,d.stateNode):qb(f,d.stateNode);else if(18===d.tag)g?Wb(f,d.stateNode):Vb(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ig(a,d,c),null!==\nd.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rg(a,b){if(Ua){switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&nb(c,f,e,a,d,b)}return;case 6:if(null===b.stateNode)throw Error(n(162));c=b.memoizedProps;lb(b.stateNode,null!==a?a.memoizedProps:c,c);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);return;\ncase 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 17:return}throw Error(n(163));}switch(b.tag){case 0:case 11:case 14:case 15:Fg(3,b,b.return);Gg(3,b);Fg(5,b,b.return);return;case 12:return;case 13:Sg(b);return;case 19:Sg(b);return;case 3:p&&null!==a&&a.memoizedState.isDehydrated&&Tb(b.stateNode.containerInfo);break;case 22:case 23:return}a:if(Va){switch(b.tag){case 1:case 5:case 6:break a;case 3:case 4:b=b.stateNode;Cb(b.containerInfo,b.pendingChildren);break a}throw Error(n(163));}}\nfunction Sg(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ag);b.forEach(function(b){var d=Tg.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction Ug(a,b){for(S=b;null!==S;){b=S;var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a;Ua?Jg(f,e,b):Kg(f,e,b);var g=e.alternate;null!==g&&(g.return=null);e.return=null}catch(wa){T(e,b,wa)}}c=b.child;if(0!==(b.subtreeFlags&12854)&&null!==c)c.return=b,S=c;else for(;null!==S;){b=S;try{var h=b.flags;h&32&&Ua&&sb(b.stateNode);if(h&512){var k=b.alternate;if(null!==k){var l=k.ref;null!==l&&(\"function\"===typeof l?l(null):l.current=null)}}if(h&8192)switch(b.tag){case 13:if(null!==\nb.memoizedState){var m=b.alternate;if(null===m||null===m.memoizedState)Vg=E()}break;case 22:var v=null!==b.memoizedState,r=b.alternate,z=null!==r&&null!==r.memoizedState;c=b;if(Ua)a:if(d=c,e=v,f=null,Ua)for(var q=d;;){if(5===q.tag){if(null===f){f=q;var N=q.stateNode;e?tb(N):vb(q.stateNode,q.memoizedProps)}}else if(6===q.tag){if(null===f){var da=q.stateNode;e?ub(da):wb(da,q.memoizedProps)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===d)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===\nd)break;for(;null===q.sibling;){if(null===q.return||q.return===d)break a;f===q&&(f=null);q=q.return}f===q&&(f=null);q.sibling.return=q.return;q=q.sibling}if(v&&!z&&0!==(c.mode&1)){S=c;for(var t=c.child;null!==t;){for(c=S=t;null!==S;){d=S;var w=d.child;switch(d.tag){case 0:case 11:case 14:case 15:Fg(4,d,d.return);break;case 1:Bg(d,d.return);var u=d.stateNode;if(\"function\"===typeof u.componentWillUnmount){var V=d.return;try{u.props=d.memoizedProps,u.state=d.memoizedState,u.componentWillUnmount()}catch(wa){T(d,\nV,wa)}}break;case 5:Bg(d,d.return);break;case 22:if(null!==d.memoizedState){Wg(c);continue}}null!==w?(w.return=d,S=w):Wg(c)}t=t.sibling}}}switch(h&4102){case 2:Og(b);b.flags&=-3;break;case 6:Og(b);b.flags&=-3;Rg(b.alternate,b);break;case 4096:b.flags&=-4097;break;case 4100:b.flags&=-4097;Rg(b.alternate,b);break;case 4:Rg(b.alternate,b)}}catch(wa){T(b,b.return,wa)}c=b.sibling;if(null!==c){c.return=b.return;S=c;break}S=b.return}}}function Xg(a,b,c){S=a;Yg(a,b,c)}\nfunction Yg(a,b,c){for(var d=0!==(a.mode&1);null!==S;){var e=S,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||yg;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||zg;h=yg;var l=zg;yg=g;if((zg=k)&&!l)for(S=e;null!==S;)g=S,k=g.child,22===g.tag&&null!==g.memoizedState?Zg(e):null!==k?(k.return=g,S=k):Zg(e);for(;null!==f;)S=f,Yg(f,b,c),f=f.sibling;S=e;yg=h;zg=l}$g(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,S=f):$g(a,b,c)}}\nfunction $g(a){for(;null!==S;){var b=S;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:zg||Gg(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!zg)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:ad(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&wd(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nFa(b.child.stateNode);break;case 1:c=b.child.stateNode}wd(b,g,c)}break;case 5:var h=b.stateNode;null===c&&b.flags&4&&mb(h,b.type,b.memoizedProps,b);break;case 6:break;case 4:break;case 12:break;case 13:if(p&&null===b.memoizedState){var k=b.alternate;if(null!==k){var l=k.memoizedState;if(null!==l){var m=l.dehydrated;null!==m&&Ub(m)}}}break;case 19:case 17:case 21:case 22:case 23:break;default:throw Error(n(163));}zg||b.flags&512&&Hg(b)}catch(v){T(b,b.return,v)}}if(b===a){S=null;break}c=b.sibling;if(null!==\nc){c.return=b.return;S=c;break}S=b.return}}function Wg(a){for(;null!==S;){var b=S;if(b===a){S=null;break}var c=b.sibling;if(null!==c){c.return=b.return;S=c;break}S=b.return}}\nfunction Zg(a){for(;null!==S;){var b=S;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Gg(4,b)}catch(k){T(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){T(b,e,k)}}var f=b.return;try{Hg(b)}catch(k){T(b,f,k)}break;case 5:var g=b.return;try{Hg(b)}catch(k){T(b,g,k)}}}catch(k){T(b,b.return,k)}if(b===a){S=null;break}var h=b.sibling;if(null!==h){h.return=b.return;S=h;break}S=b.return}}\nvar ah=0,bh=1,ch=2,dh=3,eh=4;if(\"function\"===typeof Symbol&&Symbol.for){var fh=Symbol.for;ah=fh(\"selector.component\");bh=fh(\"selector.has_pseudo_class\");ch=fh(\"selector.role\");dh=fh(\"selector.test_id\");eh=fh(\"selector.text\")}function gh(a){var b=Wa(a);if(null!=b){if(\"string\"!==typeof b.memoizedProps[\"data-testname\"])throw Error(n(364));return b}a=cb(a);if(null===a)throw Error(n(362));return a.stateNode.current}\nfunction hh(a,b){switch(b.$$typeof){case ah:if(a.type===b.value)return!0;break;case bh:a:{b=b.value;a=[a,0];for(var c=0;c<a.length;){var d=a[c++],e=a[c++],f=b[e];if(5!==d.tag||!fb(d)){for(;null!=f&&hh(d,f);)e++,f=b[e];if(e===b.length){b=!0;break a}else for(d=d.child;null!==d;)a.push(d,e),d=d.sibling}}b=!1}return b;case ch:if(5===a.tag&&gb(a.stateNode,b.value))return!0;break;case eh:if(5===a.tag||6===a.tag)if(a=eb(a),null!==a&&0<=a.indexOf(b.value))return!0;break;case dh:if(5===a.tag&&(a=a.memoizedProps[\"data-testname\"],\n\"string\"===typeof a&&a.toLowerCase()===b.value.toLowerCase()))return!0;break;default:throw Error(n(365));}return!1}function ih(a){switch(a.$$typeof){case ah:return\"<\"+(va(a.value)||\"Unknown\")+\">\";case bh:return\":has(\"+(ih(a)||\"\")+\")\";case ch:return'[role=\"'+a.value+'\"]';case eh:return'\"'+a.value+'\"';case dh:return'[data-testname=\"'+a.value+'\"]';default:throw Error(n(365));}}\nfunction jh(a,b){var c=[];a=[a,0];for(var d=0;d<a.length;){var e=a[d++],f=a[d++],g=b[f];if(5!==e.tag||!fb(e)){for(;null!=g&&hh(e,g);)f++,g=b[f];if(f===b.length)c.push(e);else for(e=e.child;null!==e;)a.push(e,f),e=e.sibling}}return c}function kh(a,b){if(!bb)throw Error(n(363));a=gh(a);a=jh(a,b);b=[];a=Array.from(a);for(var c=0;c<a.length;){var d=a[c++];if(5===d.tag)fb(d)||b.push(d.stateNode);else for(d=d.child;null!==d;)a.push(d),d=d.sibling}return b}\nvar lh=Math.ceil,mh=ea.ReactCurrentDispatcher,nh=ea.ReactCurrentOwner,U=ea.ReactCurrentBatchConfig,G=0,F=null,W=null,X=0,Wf=0,eg=gc(0),Q=0,oh=null,vd=0,ph=0,qh=0,rh=null,Y=null,Vg=0,Uf=Infinity;function sh(){Uf=E()+500}var Bf=!1,Cf=null,Ef=null,th=!1,uh=null,vh=0,wh=0,xh=null,yh=-1,zh=0;function H(){return 0!==(G&6)?E():-1!==yh?yh:yh=E()}\nfunction zd(a){if(0===(a.mode&1))return 1;if(0!==(G&2)&&0!==X)return X&-X;if(null!==Yc.transition)return 0===zh&&(a=tc,tc<<=1,0===(tc&4194240)&&(tc=64),zh=a),zh;a=D;return 0!==a?a:Ya()}function Ad(a,b,c){if(50<wh)throw wh=0,xh=null,Error(n(185));var d=Ah(a,b);if(null===d)return null;Bc(d,b,c);if(0===(G&2)||d!==F)d===F&&(0===(G&2)&&(ph|=b),4===Q&&Bh(d,X)),Z(d,c),1===b&&0===G&&0===(a.mode&1)&&(sh(),Tc&&Xc());return d}\nfunction Ah(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Z(a,b){var c=a.callbackNode;yc(a,b);var d=wc(a,a===F?X:0);if(0===d)null!==c&&Gc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&Gc(c);if(1===b)0===a.tag?Wc(Ch.bind(null,a)):Vc(Ch.bind(null,a)),$a?ab(function(){0===G&&Xc()}):Fc(Jc,Xc),c=null;else{switch(Ec(d)){case 1:c=Jc;break;case 4:c=Kc;break;case 16:c=Lc;break;case 536870912:c=Mc;break;default:c=Lc}c=Dh(c,Eh.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Eh(a,b){yh=-1;zh=0;if(0!==(G&6))throw Error(n(327));var c=a.callbackNode;if(Fh()&&a.callbackNode!==c)return null;var d=wc(a,a===F?X:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Gh(a,d);else{b=d;var e=G;G|=2;var f=Hh();if(F!==a||X!==b)sh(),Ih(a,b);do try{Jh();break}catch(h){Kh(a,h)}while(1);fd();mh.current=f;G=e;null!==W?b=0:(F=null,X=0,b=Q)}if(0!==b){2===b&&(e=zc(a),0!==e&&(d=e,b=Lh(a,e)));if(1===b)throw c=oh,Ih(a,0),Bh(a,d),Z(a,E()),c;if(6===b)Bh(a,d);else{e=a.current.alternate;\nif(0===(d&30)&&!Mh(e)&&(b=Gh(a,d),2===b&&(f=zc(a),0!==f&&(d=f,b=Lh(a,f))),1===b))throw c=oh,Ih(a,0),Bh(a,d),Z(a,E()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(n(345));case 2:Nh(a,Y);break;case 3:Bh(a,d);if((d&130023424)===d&&(b=Vg+500-E(),10<b)){if(0!==wc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){H();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Qa(Nh.bind(null,a,Y),b);break}Nh(a,Y);break;case 4:Bh(a,d);if((d&4194240)===d)break;b=a.eventTimes;for(e=-1;0<\nd;){var g=31-qc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=E()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lh(d/1960))-d;if(10<d){a.timeoutHandle=Qa(Nh.bind(null,a,Y),d);break}Nh(a,Y);break;case 5:Nh(a,Y);break;default:throw Error(n(329));}}}Z(a,E());return a.callbackNode===c?Eh.bind(null,a):null}function Lh(a,b){var c=rh;a.current.memoizedState.isDehydrated&&(Ih(a,b).flags|=256);a=Gh(a,b);2!==a&&(b=Y,Y=c,null!==b&&Sf(b));return a}\nfunction Sf(a){null===Y?Y=a:Y.push.apply(Y,a)}function Mh(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!Rc(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Bh(a,b){b&=~qh;b&=~ph;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-qc(b),d=1<<c;a[c]=-1;b&=~d}}function Ch(a){if(0!==(G&6))throw Error(n(327));Fh();var b=wc(a,0);if(0===(b&1))return Z(a,E()),null;var c=Gh(a,b);if(0!==a.tag&&2===c){var d=zc(a);0!==d&&(b=d,c=Lh(a,d))}if(1===c)throw c=oh,Ih(a,0),Bh(a,b),Z(a,E()),c;if(6===c)throw Error(n(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Nh(a,Y);Z(a,E());return null}\nfunction Oh(a){null!==uh&&0===uh.tag&&0===(G&6)&&Fh();var b=G;G|=1;var c=U.transition,d=D;try{if(U.transition=null,D=1,a)return a()}finally{D=d,U.transition=c,G=b,0===(G&6)&&Xc()}}function Vf(){Wf=eg.current;x(eg)}\nfunction Ih(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;c!==Sa&&(a.timeoutHandle=Sa,Ra(c));if(null!==W)for(c=W.return;null!==c;){var d=c;Sd(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&kc();break;case 3:we();x(B);x(A);Be();break;case 5:ye(d);break;case 4:we();break;case 13:x(J);break;case 19:x(J);break;case 10:hd(d.type._context);break;case 22:case 23:Vf()}c=c.return}F=a;W=a=je(a.current,null);X=Wf=b;Q=0;oh=null;qh=ph=vd=0;Y=rh=null;if(null!==md){for(b=\n0;b<md.length;b++)if(c=md[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}md=null}return a}\nfunction Kh(a,b){do{var c=W;try{fd();Ce.current=Oe;if(Fe){for(var d=K.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Fe=!1}Ee=0;M=L=K=null;Ge=!1;He=0;nh.current=null;if(null===c||null===c.return){Q=1;oh=b;W=null;break}a:{var f=a,g=c.return,h=c,k=b;b=X;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,v=m.tag;if(0===(m.mode&1)&&(0===v||11===v||15===v)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var z=Hf(g);if(null!==z){z.flags&=-257;If(z,g,h,f,b);z.mode&1&&Ff(f,l,b);b=z;k=l;var q=b.updateQueue;if(null===q){var N=new Set;N.add(k);b.updateQueue=N}else q.add(k);break a}else{if(0===(b&1)){Ff(f,l,b);Tf();break a}k=Error(n(426))}}else if(I&&h.mode&1){var da=Hf(g);if(null!==da){0===(da.flags&65536)&&(da.flags|=256);If(da,g,h,f,b);ee(k);break a}}f=k;4!==Q&&(Q=2);null===rh?rh=[f]:rh.push(f);k=xf(k,h);h=g;do{switch(h.tag){case 3:h.flags|=\n65536;b&=-b;h.lanes|=b;var t=Af(h,k,b);td(h,t);break a;case 1:f=k;var w=h.type,u=h.stateNode;if(0===(h.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ef||!Ef.has(u)))){h.flags|=65536;b&=-b;h.lanes|=b;var V=Df(h,f,b);td(h,V);break a}}h=h.return}while(null!==h)}Ph(c)}catch(wa){b=wa;W===c&&null!==c&&(W=c=c.return);continue}break}while(1)}function Hh(){var a=mh.current;mh.current=Oe;return null===a?Oe:a}\nfunction Tf(){if(0===Q||3===Q||2===Q)Q=4;null===F||0===(vd&268435455)&&0===(ph&268435455)||Bh(F,X)}function Gh(a,b){var c=G;G|=2;var d=Hh();F===a&&X===b||Ih(a,b);do try{Qh();break}catch(e){Kh(a,e)}while(1);fd();G=c;mh.current=d;if(null!==W)throw Error(n(261));F=null;X=0;return Q}function Qh(){for(;null!==W;)Rh(W)}function Jh(){for(;null!==W&&!Hc();)Rh(W)}function Rh(a){var b=Sh(a.alternate,a,Wf);a.memoizedProps=a.pendingProps;null===b?Ph(a):W=b;nh.current=null}\nfunction Ph(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Rf(c,b,Wf),null!==c){W=c;return}}else{c=xg(c,b);if(null!==c){c.flags&=32767;W=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{Q=6;W=null;return}}b=b.sibling;if(null!==b){W=b;return}W=b=a}while(null!==b);0===Q&&(Q=5)}function Nh(a,b){var c=D,d=U.transition;try{U.transition=null,D=1,Th(a,b,c)}finally{U.transition=d,D=c}return null}\nfunction Th(a,b,c){do Fh();while(null!==uh);if(0!==(G&6))throw Error(n(327));var d=a.finishedWork,e=a.finishedLanes;if(null===d)return null;a.finishedWork=null;a.finishedLanes=0;if(d===a.current)throw Error(n(177));a.callbackNode=null;a.callbackPriority=0;var f=d.lanes|d.childLanes;Cc(a,f);a===F&&(W=F=null,X=0);0===(d.subtreeFlags&2064)&&0===(d.flags&2064)||th||(th=!0,Dh(Lc,function(){Fh();return null}));f=0!==(d.flags&15990);if(0!==(d.subtreeFlags&15990)||f){f=U.transition;U.transition=null;var g=\nD;D=1;var h=G;G|=4;nh.current=null;Eg(a,d);Ug(a,d,e);Ja(a.containerInfo);a.current=d;Xg(d,a,e);Ic();G=h;D=g;U.transition=f}else a.current=d;th&&(th=!1,uh=a,vh=e);f=a.pendingLanes;0===f&&(Ef=null);Pc(d.stateNode,c);Z(a,E());if(null!==b)for(c=a.onRecoverableError,d=0;d<b.length;d++)c(b[d]);if(Bf)throw Bf=!1,a=Cf,Cf=null,a;0!==(vh&1)&&0!==a.tag&&Fh();f=a.pendingLanes;0!==(f&1)?a===xh?wh++:(wh=0,xh=a):wh=0;Xc();return null}\nfunction Fh(){if(null!==uh){var a=Ec(vh),b=U.transition,c=D;try{U.transition=null;D=16>a?16:a;if(null===uh)var d=!1;else{a=uh;uh=null;vh=0;if(0!==(G&6))throw Error(n(331));var e=G;G|=4;for(S=a.current;null!==S;){var f=S,g=f.child;if(0!==(S.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(S=l;null!==S;){var m=S;switch(m.tag){case 0:case 11:case 15:Fg(8,m,f)}var v=m.child;if(null!==v)v.return=m,S=v;else for(;null!==S;){m=S;var r=m.sibling,z=m.return;Lg(m);if(m===\nl){S=null;break}if(null!==r){r.return=z;S=r;break}S=z}}}var q=f.alternate;if(null!==q){var N=q.child;if(null!==N){q.child=null;do{var da=N.sibling;N.sibling=null;N=da}while(null!==N)}}S=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,S=g;else b:for(;null!==S;){f=S;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Fg(9,f,f.return)}var t=f.sibling;if(null!==t){t.return=f.return;S=t;break b}S=f.return}}var w=a.current;for(S=w;null!==S;){g=S;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,S=u;else b:for(g=w;null!==S;){h=S;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Gg(9,h)}}catch(wa){T(h,h.return,wa)}if(h===g){S=null;break b}var V=h.sibling;if(null!==V){V.return=h.return;S=V;break b}S=h.return}}G=e;Xc();if(Oc&&\"function\"===typeof Oc.onPostCommitFiberRoot)try{Oc.onPostCommitFiberRoot(Nc,a)}catch(wa){}d=!0}return d}finally{D=c,U.transition=b}}return!1}function Uh(a,b,c){b=xf(c,b);b=Af(a,b,1);rd(a,b);b=H();a=Ah(a,1);null!==a&&(Bc(a,1,b),Z(a,b))}\nfunction T(a,b,c){if(3===a.tag)Uh(a,a,c);else for(;null!==b;){if(3===b.tag){Uh(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ef||!Ef.has(d))){a=xf(c,a);a=Df(b,a,1);rd(b,a);a=H();b=Ah(b,1);null!==b&&(Bc(b,1,a),Z(b,a));break}}b=b.return}}\nfunction Gf(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=H();a.pingedLanes|=a.suspendedLanes&c;F===a&&(X&c)===c&&(4===Q||3===Q&&(X&130023424)===X&&500>E()-Vg?Ih(a,0):qh|=c);Z(a,b)}function Vh(a,b){0===b&&(0===(a.mode&1)?b=1:(b=uc,uc<<=1,0===(uc&130023424)&&(uc=4194304)));var c=H();a=Ah(a,b);null!==a&&(Bc(a,b,c),Z(a,c))}function qg(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Vh(a,c)}\nfunction Tg(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(n(314));}null!==d&&d.delete(b);Vh(a,c)}var Sh;\nSh=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||B.current)kd=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return kd=!1,wg(a,b,c);kd=0!==(a.flags&131072)?!0:!1}else kd=!1,I&&0!==(b.flags&1048576)&&Qd(b,Jd,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=jc(b,A.current);jd(b,c);e=Ke(null,b,d,a,e,c);var f=Pe();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,C(d)?(f=!0,nc(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,od(b),e.updater=Bd,b.stateNode=e,e._reactInternals=b,Fd(b,d,a,c),b=hg(null,b,d,!0,f,c)):(b.tag=0,I&&f&&Rd(b),R(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Wh(d);a=ad(d,a);switch(e){case 0:b=cg(null,b,d,a,c);break a;case 1:b=gg(null,b,d,\na,c);break a;case 11:b=Yf(null,b,d,a,c);break a;case 14:b=$f(null,b,d,ad(d.type,a),c);break a}throw Error(n(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),cg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),gg(a,b,d,e,c);case 3:a:{ig(b);if(null===a)throw Error(n(387));d=b.pendingProps;f=b.memoizedState;e=f.element;pd(a,b);ud(b,d,null,c);var g=b.memoizedState;d=g.element;if(p&&f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(n(423));b=jg(a,b,d,c,e);break a}else if(d!==e){e=Error(n(424));b=jg(a,b,d,c,e);break a}else for(p&&(Ud=Nb(b.stateNode.containerInfo),Td=b,I=!0,Wd=null,Vd=!1),c=pe(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{de();if(d===e){b=Zf(a,b,c);break a}R(a,b,d,c)}b=b.child}return b;case 5:return xe(b),null===a&&ae(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nOa(d,e)?g=null:null!==f&&Oa(d,f)&&(b.flags|=32),fg(a,b),R(a,b,g,c),b.child;case 6:return null===a&&ae(b),null;case 13:return mg(a,b,c);case 4:return ve(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=oe(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),Yf(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;gd(b,d,g);if(null!==f)if(Rc(f.value,g)){if(f.children===e.children&&!B.current){b=Zf(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=qd(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=\nc);id(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(n(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);id(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,jd(b,c),e=ld(e),d=d(e),b.flags|=\n1,R(a,b,d,c),b.child;case 14:return d=b.type,e=ad(d,b.pendingProps),e=ad(d.type,e),$f(a,b,d,e,c);case 15:return bg(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ad(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,C(d)?(a=!0,nc(b)):a=!1,jd(b,c),Dd(b,d,e),Fd(b,d,e,c),hg(null,b,d,!0,a,c);case 19:return vg(a,b,c);case 22:return dg(a,b,c)}throw Error(n(156,b.tag));};function Dh(a,b){return Fc(a,b)}\nfunction Xh(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Yd(a,b,c,d){return new Xh(a,b,c,d)}function ag(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Wh(a){if(\"function\"===typeof a)return ag(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===na)return 11;if(a===qa)return 14}return 2}\nfunction je(a,b){var c=a.alternate;null===c?(c=Yd(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction le(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ag(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ia:return ne(c.children,e,f,b);case ja:g=8;e|=8;break;case ka:return a=Yd(12,c,b,e|2),a.elementType=ka,a.lanes=f,a;case oa:return a=Yd(13,c,b,e),a.elementType=oa,a.lanes=f,a;case pa:return a=Yd(19,c,b,e),a.elementType=pa,a.lanes=f,a;case sa:return ng(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case la:g=10;break a;case ma:g=9;break a;case na:g=11;\nbreak a;case qa:g=14;break a;case ra:g=16;d=null;break a}throw Error(n(130,null==a?a:typeof a,\"\"));}b=Yd(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function ne(a,b,c,d){a=Yd(7,a,d,b);a.lanes=c;return a}function ng(a,b,c,d){a=Yd(22,a,d,b);a.elementType=sa;a.lanes=c;a.stateNode={};return a}function ke(a,b,c){a=Yd(6,a,null,b);a.lanes=c;return a}\nfunction me(a,b,c){b=Yd(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Yh(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=Sa;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=Ac(0);this.expirationTimes=Ac(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Ac(0);this.identifierPrefix=d;this.onRecoverableError=e;p&&(this.mutableSourceEagerHydrationData=\nnull)}function Zh(a,b,c,d,e,f,g,h,k){a=new Yh(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Yd(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};od(f);return a}\nfunction $h(a){if(!a)return hc;a=a._reactInternals;a:{if(ya(a)!==a||1!==a.tag)throw Error(n(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(C(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(n(171));}if(1===a.tag){var c=a.type;if(C(c))return mc(a,c,b)}return b}\nfunction ai(a){var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));a=Object.keys(a).join(\",\");throw Error(n(268,a));}a=Ba(b);return null===a?null:a.stateNode}function bi(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ci(a,b){bi(a,b);(a=a.alternate)&&bi(a,b)}function di(a){a=Ba(a);return null===a?null:a.stateNode}function ei(){return null}\nexports.attemptContinuousHydration=function(a){if(13===a.tag){var b=H();Ad(a,134217728,b);ci(a,134217728)}};exports.attemptHydrationAtCurrentPriority=function(a){if(13===a.tag){var b=H(),c=zd(a);Ad(a,c,b);ci(a,c)}};exports.attemptSynchronousHydration=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=vc(b.pendingLanes);0!==c&&(Dc(b,c|1),Z(b,E()),0===(G&6)&&(sh(),Xc()))}break;case 13:var d=H();Oh(function(){return Ad(a,1,d)});ci(a,1)}};\nexports.batchedUpdates=function(a,b){var c=G;G|=1;try{return a(b)}finally{G=c,0===G&&(sh(),Tc&&Xc())}};exports.createComponentSelector=function(a){return{$$typeof:ah,value:a}};exports.createContainer=function(a,b,c,d,e,f,g){return Zh(a,b,!1,null,c,d,e,f,g)};exports.createHasPseudoClassSelector=function(a){return{$$typeof:bh,value:a}};\nexports.createHydrationContainer=function(a,b,c,d,e,f,g,h,k){a=Zh(c,d,!0,a,e,f,g,h,k);a.context=$h(null);c=a.current;d=H();e=zd(c);f=qd(d,e);f.callback=void 0!==b&&null!==b?b:null;rd(c,f);a.current.lanes=e;Bc(a,e,d);Z(a,d);return a};exports.createPortal=function(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ha,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}};exports.createRoleSelector=function(a){return{$$typeof:ch,value:a}};\nexports.createTestNameSelector=function(a){return{$$typeof:dh,value:a}};exports.createTextSelector=function(a){return{$$typeof:eh,value:a}};exports.deferredUpdates=function(a){var b=D,c=U.transition;try{return U.transition=null,D=16,a()}finally{D=b,U.transition=c}};exports.discreteUpdates=function(a,b,c,d,e){var f=D,g=U.transition;try{return U.transition=null,D=1,a(b,c,d,e)}finally{D=f,U.transition=g,0===G&&sh()}};exports.findAllNodes=kh;\nexports.findBoundingRects=function(a,b){if(!bb)throw Error(n(363));b=kh(a,b);a=[];for(var c=0;c<b.length;c++)a.push(db(b[c]));for(b=a.length-1;0<b;b--){c=a[b];for(var d=c.x,e=d+c.width,f=c.y,g=f+c.height,h=b-1;0<=h;h--)if(b!==h){var k=a[h],l=k.x,m=l+k.width,v=k.y,r=v+k.height;if(d>=l&&f>=v&&e<=m&&g<=r){a.splice(b,1);break}else if(!(d!==l||c.width!==k.width||r<f||v>g)){v>f&&(k.height+=v-f,k.y=f);r<g&&(k.height=g-v);a.splice(b,1);break}else if(!(f!==v||c.height!==k.height||m<d||l>e)){l>d&&(k.width+=\nl-d,k.x=d);m<e&&(k.width=e-l);a.splice(b,1);break}}}return a};exports.findHostInstance=ai;exports.findHostInstanceWithNoPortals=function(a){a=Aa(a);a=null!==a?Da(a):null;return null===a?null:a.stateNode};exports.findHostInstanceWithWarning=function(a){return ai(a)};exports.flushControlled=function(a){var b=G;G|=1;var c=U.transition,d=D;try{U.transition=null,D=1,a()}finally{D=d,U.transition=c,G=b,0===G&&(sh(),Xc())}};exports.flushPassiveEffects=Fh;exports.flushSync=Oh;\nexports.focusWithin=function(a,b){if(!bb)throw Error(n(363));a=gh(a);b=jh(a,b);b=Array.from(b);for(a=0;a<b.length;){var c=b[a++];if(!fb(c)){if(5===c.tag&&hb(c.stateNode))return!0;for(c=c.child;null!==c;)b.push(c),c=c.sibling}}return!1};exports.getCurrentUpdatePriority=function(){return D};\nexports.getFindAllNodesFailureDescription=function(a,b){if(!bb)throw Error(n(363));var c=0,d=[];a=[gh(a),0];for(var e=0;e<a.length;){var f=a[e++],g=a[e++],h=b[g];if(5!==f.tag||!fb(f))if(hh(f,h)&&(d.push(ih(h)),g++,g>c&&(c=g)),g<b.length)for(f=f.child;null!==f;)a.push(f,g),f=f.sibling}if(c<b.length){for(a=[];c<b.length;c++)a.push(ih(b[c]));return\"findAllNodes was able to match part of the selector:\\n  \"+(d.join(\" > \")+\"\\n\\nNo matching component was found for:\\n  \")+a.join(\" > \")}return null};\nexports.getPublicRootInstance=function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return Fa(a.child.stateNode);default:return a.child.stateNode}};\nexports.injectIntoDevTools=function(a){a={bundleType:a.bundleType,version:a.version,rendererPackageName:a.rendererPackageName,rendererConfig:a.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ea.ReactCurrentDispatcher,findHostInstanceByFiber:di,findFiberByHostInstance:a.findFiberByHostInstance||\nei,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.0.0-fc46dba67-20220329\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)a=!1;else{var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)a=!0;else{try{Nc=b.inject(a),Oc=b}catch(c){}a=b.checkDCE?!0:!1}}return a};exports.isAlreadyRendering=function(){return!1};\nexports.observeVisibleRects=function(a,b,c,d){if(!bb)throw Error(n(363));a=kh(a,b);var e=ib(a,c,d).disconnect;return{disconnect:function(){e()}}};exports.registerMutableSourceForHydration=function(a,b){var c=b._getVersion;c=c(b._source);null==a.mutableSourceEagerHydrationData?a.mutableSourceEagerHydrationData=[b,c]:a.mutableSourceEagerHydrationData.push(b,c)};exports.runWithPriority=function(a,b){var c=D;try{return D=a,b()}finally{D=c}};exports.shouldError=function(){return null};\nexports.shouldSuspend=function(){return!1};exports.updateContainer=function(a,b,c,d){var e=b.current,f=H(),g=zd(e);c=$h(c);null===b.context?b.context=c:b.pendingContext=c;b=qd(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);rd(e,b);a=Ad(e,g,f);null!==a&&sd(a,e,g);return g};\n\n    return exports;\n};\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nvar createStoreImpl = function createStoreImpl(createState) {\n  var state;\n  var listeners = new Set();\n  var setState = function setState(partial, replace) {\n    var nextState = typeof partial === 'function' ? partial(state) : partial;\n    if (!Object.is(nextState, state)) {\n      var _previousState = state;\n      state = (replace != null ? replace : typeof nextState !== 'object') ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach(function (listener) {\n        return listener(state, _previousState);\n      });\n    }\n  };\n  var getState = function getState() {\n    return state;\n  };\n  var subscribe = function subscribe(listener) {\n    listeners.add(listener);\n    return function () {\n      return listeners.delete(listener);\n    };\n  };\n  var destroy = function destroy() {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn('[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.');\n    }\n    listeners.clear();\n  };\n  var api = {\n    setState: setState,\n    getState: getState,\n    subscribe: subscribe,\n    destroy: destroy\n  };\n  state = createState(setState, getState, api);\n  return api;\n};\nvar createStore = function createStore(createState) {\n  return createState ? createStoreImpl(createState) : createStoreImpl;\n};\nvar vanilla = (function (createState) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.warn(\"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\");\n  }\n  return createStore(createState);\n});\n\nexports.createStore = createStore;\nexports.default = vanilla;\n\nmodule.exports = vanilla;\nmodule.exports.createStore = createStore;\nexports.default = module.exports;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","var map = {\n\t\"./airbus.glb\": [\n\t\t174,\n\t\t3\n\t],\n\t\"./airbus/airbus.glb\": [\n\t\t172,\n\t\t4\n\t],\n\t\"./airbus/airbus_full.glb\": [\n\t\t173,\n\t\t5\n\t],\n\t\"./airbus_new/airbus.glb\": [\n\t\t175,\n\t\t6\n\t],\n\t\"./airbus_new/airbus_full.glb\": [\n\t\t176,\n\t\t7\n\t],\n\t\"./airbus_new/airbus_full_old.glb\": [\n\t\t177,\n\t\t8\n\t],\n\t\"./background_plane.glb\": [\n\t\t178,\n\t\t9\n\t],\n\t\"./ehang.glb\": [\n\t\t182,\n\t\t10\n\t],\n\t\"./ehang/ehang.glb\": [\n\t\t179,\n\t\t11\n\t],\n\t\"./ehang/ehang_full.glb\": [\n\t\t180,\n\t\t12\n\t],\n\t\"./ehang/ehang_full_old.glb\": [\n\t\t181,\n\t\t13\n\t],\n\t\"./joby.glb\": [\n\t\t186,\n\t\t14\n\t],\n\t\"./joby/joby.glb\": [\n\t\t183,\n\t\t15\n\t],\n\t\"./joby/joby_full.glb\": [\n\t\t184,\n\t\t16\n\t],\n\t\"./joby/joby_full_old.glb\": [\n\t\t185,\n\t\t17\n\t],\n\t\"./midnight.glb\": [\n\t\t191,\n\t\t18\n\t],\n\t\"./midnight/midnight.glb\": [\n\t\t187,\n\t\t19\n\t],\n\t\"./midnight/midnight_full.glb\": [\n\t\t188,\n\t\t20\n\t],\n\t\"./midnight/midnight_full_old.glb\": [\n\t\t189,\n\t\t21\n\t],\n\t\"./midnight/midnight_undecimated.glb\": [\n\t\t190,\n\t\t22\n\t],\n\t\"./sample_taxi.glb\": [\n\t\t192,\n\t\t23\n\t],\n\t\"./vertical_aerospace.glb\": [\n\t\t195,\n\t\t24\n\t],\n\t\"./vertical_aerospace/vertical_aerospace.glb\": [\n\t\t193,\n\t\t25\n\t],\n\t\"./vertical_aerospace/vertical_aerospace_full.glb\": [\n\t\t194,\n\t\t26\n\t],\n\t\"./volocopter.glb\": [\n\t\t200,\n\t\t27\n\t],\n\t\"./volocopter/volocopter.glb\": [\n\t\t196,\n\t\t28\n\t],\n\t\"./volocopter/volocopter_full.glb\": [\n\t\t197,\n\t\t29\n\t],\n\t\"./volocopter/volocopter_full_old.glb\": [\n\t\t198,\n\t\t30\n\t],\n\t\"./volocopter/volocopter_original.glb\": [\n\t\t199,\n\t\t31\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 150;\nmodule.exports = webpackAsyncContext;","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = getPolyfill();\n\nvar getGlobal = function () { return polyfill; };\n\ndefineProperties(getGlobal, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = getGlobal;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimGlobal() {\n\tvar polyfill = getPolyfill();\n\tif (define.supportsDescriptors) {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(polyfill, 'globalThis');\n\t\tif (!descriptor || (descriptor.configurable && (descriptor.enumerable || !descriptor.writable || globalThis !== polyfill))) { // eslint-disable-line max-len\n\t\t\tObject.defineProperty(polyfill, 'globalThis', {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: polyfill,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t} else if (typeof globalThis !== 'object' || globalThis !== polyfill) {\n\t\tpolyfill.globalThis = polyfill;\n\t}\n\treturn polyfill;\n};\n","import { Loader, FileLoader, BufferGeometry, BufferAttribute } from 'three';\n\nconst _taskCache = new WeakMap();\n\nclass DRACOLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.decoderPath = '';\n    this.decoderConfig = {};\n    this.decoderBinary = null;\n    this.decoderPending = null;\n    this.workerLimit = 4;\n    this.workerPool = [];\n    this.workerNextTaskID = 1;\n    this.workerSourceURL = '';\n    this.defaultAttributeIDs = {\n      position: 'POSITION',\n      normal: 'NORMAL',\n      color: 'COLOR',\n      uv: 'TEX_COORD'\n    };\n    this.defaultAttributeTypes = {\n      position: 'Float32Array',\n      normal: 'Float32Array',\n      color: 'Float32Array',\n      uv: 'Float32Array'\n    };\n  }\n\n  setDecoderPath(path) {\n    this.decoderPath = path;\n    return this;\n  }\n\n  setDecoderConfig(config) {\n    this.decoderConfig = config;\n    return this;\n  }\n\n  setWorkerLimit(workerLimit) {\n    this.workerLimit = workerLimit;\n    return this;\n  }\n\n  load(url, onLoad, onProgress, onError) {\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType('arraybuffer');\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, buffer => {\n      const taskConfig = {\n        attributeIDs: this.defaultAttributeIDs,\n        attributeTypes: this.defaultAttributeTypes,\n        useUniqueIDs: false\n      };\n      this.decodeGeometry(buffer, taskConfig).then(onLoad).catch(onError);\n    }, onProgress, onError);\n  }\n  /** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */\n\n\n  decodeDracoFile(buffer, callback, attributeIDs, attributeTypes) {\n    const taskConfig = {\n      attributeIDs: attributeIDs || this.defaultAttributeIDs,\n      attributeTypes: attributeTypes || this.defaultAttributeTypes,\n      useUniqueIDs: !!attributeIDs\n    };\n    this.decodeGeometry(buffer, taskConfig).then(callback);\n  }\n\n  decodeGeometry(buffer, taskConfig) {\n    // TODO: For backward-compatibility, support 'attributeTypes' objects containing\n    // references (rather than names) to typed array constructors. These must be\n    // serialized before sending them to the worker.\n    for (const attribute in taskConfig.attributeTypes) {\n      const type = taskConfig.attributeTypes[attribute];\n\n      if (type.BYTES_PER_ELEMENT !== undefined) {\n        taskConfig.attributeTypes[attribute] = type.name;\n      }\n    } //\n\n\n    const taskKey = JSON.stringify(taskConfig); // Check for an existing task using this buffer. A transferred buffer cannot be transferred\n    // again from this thread.\n\n    if (_taskCache.has(buffer)) {\n      const cachedTask = _taskCache.get(buffer);\n\n      if (cachedTask.key === taskKey) {\n        return cachedTask.promise;\n      } else if (buffer.byteLength === 0) {\n        // Technically, it would be possible to wait for the previous task to complete,\n        // transfer the buffer back, and decode again with the second configuration. That\n        // is complex, and I don't know of any reason to decode a Draco buffer twice in\n        // different ways, so this is left unimplemented.\n        throw new Error('THREE.DRACOLoader: Unable to re-decode a buffer with different ' + 'settings. Buffer has already been transferred.');\n      }\n    } //\n\n\n    let worker;\n    const taskID = this.workerNextTaskID++;\n    const taskCost = buffer.byteLength; // Obtain a worker and assign a task, and construct a geometry instance\n    // when the task completes.\n\n    const geometryPending = this._getWorker(taskID, taskCost).then(_worker => {\n      worker = _worker;\n      return new Promise((resolve, reject) => {\n        worker._callbacks[taskID] = {\n          resolve,\n          reject\n        };\n        worker.postMessage({\n          type: 'decode',\n          id: taskID,\n          taskConfig,\n          buffer\n        }, [buffer]); // this.debug();\n      });\n    }).then(message => this._createGeometry(message.geometry)); // Remove task from the task list.\n    // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\n\n    geometryPending.catch(() => true).then(() => {\n      if (worker && taskID) {\n        this._releaseTask(worker, taskID); // this.debug();\n\n      }\n    }); // Cache the task result.\n\n    _taskCache.set(buffer, {\n      key: taskKey,\n      promise: geometryPending\n    });\n\n    return geometryPending;\n  }\n\n  _createGeometry(geometryData) {\n    const geometry = new BufferGeometry();\n\n    if (geometryData.index) {\n      geometry.setIndex(new BufferAttribute(geometryData.index.array, 1));\n    }\n\n    for (let i = 0; i < geometryData.attributes.length; i++) {\n      const attribute = geometryData.attributes[i];\n      const name = attribute.name;\n      const array = attribute.array;\n      const itemSize = attribute.itemSize;\n      geometry.setAttribute(name, new BufferAttribute(array, itemSize));\n    }\n\n    return geometry;\n  }\n\n  _loadLibrary(url, responseType) {\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.decoderPath);\n    loader.setResponseType(responseType);\n    loader.setWithCredentials(this.withCredentials);\n    return new Promise((resolve, reject) => {\n      loader.load(url, resolve, undefined, reject);\n    });\n  }\n\n  preload() {\n    this._initDecoder();\n\n    return this;\n  }\n\n  _initDecoder() {\n    if (this.decoderPending) return this.decoderPending;\n    const useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n    const librariesPending = [];\n\n    if (useJS) {\n      librariesPending.push(this._loadLibrary('draco_decoder.js', 'text'));\n    } else {\n      librariesPending.push(this._loadLibrary('draco_wasm_wrapper.js', 'text'));\n      librariesPending.push(this._loadLibrary('draco_decoder.wasm', 'arraybuffer'));\n    }\n\n    this.decoderPending = Promise.all(librariesPending).then(libraries => {\n      const jsContent = libraries[0];\n\n      if (!useJS) {\n        this.decoderConfig.wasmBinary = libraries[1];\n      }\n\n      const fn = DRACOWorker.toString();\n      const body = ['/* draco decoder */', jsContent, '', '/* worker */', fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))].join('\\n');\n      this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n    });\n    return this.decoderPending;\n  }\n\n  _getWorker(taskID, taskCost) {\n    return this._initDecoder().then(() => {\n      if (this.workerPool.length < this.workerLimit) {\n        const worker = new Worker(this.workerSourceURL);\n        worker._callbacks = {};\n        worker._taskCosts = {};\n        worker._taskLoad = 0;\n        worker.postMessage({\n          type: 'init',\n          decoderConfig: this.decoderConfig\n        });\n\n        worker.onmessage = function (e) {\n          const message = e.data;\n\n          switch (message.type) {\n            case 'decode':\n              worker._callbacks[message.id].resolve(message);\n\n              break;\n\n            case 'error':\n              worker._callbacks[message.id].reject(message);\n\n              break;\n\n            default:\n              console.error('THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"');\n          }\n        };\n\n        this.workerPool.push(worker);\n      } else {\n        this.workerPool.sort(function (a, b) {\n          return a._taskLoad > b._taskLoad ? -1 : 1;\n        });\n      }\n\n      const worker = this.workerPool[this.workerPool.length - 1];\n      worker._taskCosts[taskID] = taskCost;\n      worker._taskLoad += taskCost;\n      return worker;\n    });\n  }\n\n  _releaseTask(worker, taskID) {\n    worker._taskLoad -= worker._taskCosts[taskID];\n    delete worker._callbacks[taskID];\n    delete worker._taskCosts[taskID];\n  }\n\n  debug() {\n    console.log('Task load: ', this.workerPool.map(worker => worker._taskLoad));\n  }\n\n  dispose() {\n    for (let i = 0; i < this.workerPool.length; ++i) {\n      this.workerPool[i].terminate();\n    }\n\n    this.workerPool.length = 0;\n    return this;\n  }\n\n}\n/* WEB WORKER */\n\n\nfunction DRACOWorker() {\n  let decoderConfig;\n  let decoderPending;\n\n  onmessage = function (e) {\n    const message = e.data;\n\n    switch (message.type) {\n      case 'init':\n        decoderConfig = message.decoderConfig;\n        decoderPending = new Promise(function (resolve\n        /*, reject*/\n        ) {\n          decoderConfig.onModuleLoaded = function (draco) {\n            // Module is Promise-like. Wrap before resolving to avoid loop.\n            resolve({\n              draco: draco\n            });\n          };\n\n          DracoDecoderModule(decoderConfig); // eslint-disable-line no-undef\n        });\n        break;\n\n      case 'decode':\n        const buffer = message.buffer;\n        const taskConfig = message.taskConfig;\n        decoderPending.then(module => {\n          const draco = module.draco;\n          const decoder = new draco.Decoder();\n          const decoderBuffer = new draco.DecoderBuffer();\n          decoderBuffer.Init(new Int8Array(buffer), buffer.byteLength);\n\n          try {\n            const geometry = decodeGeometry(draco, decoder, decoderBuffer, taskConfig);\n            const buffers = geometry.attributes.map(attr => attr.array.buffer);\n            if (geometry.index) buffers.push(geometry.index.array.buffer);\n            self.postMessage({\n              type: 'decode',\n              id: message.id,\n              geometry\n            }, buffers);\n          } catch (error) {\n            console.error(error);\n            self.postMessage({\n              type: 'error',\n              id: message.id,\n              error: error.message\n            });\n          } finally {\n            draco.destroy(decoderBuffer);\n            draco.destroy(decoder);\n          }\n        });\n        break;\n    }\n  };\n\n  function decodeGeometry(draco, decoder, decoderBuffer, taskConfig) {\n    const attributeIDs = taskConfig.attributeIDs;\n    const attributeTypes = taskConfig.attributeTypes;\n    let dracoGeometry;\n    let decodingStatus;\n    const geometryType = decoder.GetEncodedGeometryType(decoderBuffer);\n\n    if (geometryType === draco.TRIANGULAR_MESH) {\n      dracoGeometry = new draco.Mesh();\n      decodingStatus = decoder.DecodeBufferToMesh(decoderBuffer, dracoGeometry);\n    } else if (geometryType === draco.POINT_CLOUD) {\n      dracoGeometry = new draco.PointCloud();\n      decodingStatus = decoder.DecodeBufferToPointCloud(decoderBuffer, dracoGeometry);\n    } else {\n      throw new Error('THREE.DRACOLoader: Unexpected geometry type.');\n    }\n\n    if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {\n      throw new Error('THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg());\n    }\n\n    const geometry = {\n      index: null,\n      attributes: []\n    }; // Gather all vertex attributes.\n\n    for (const attributeName in attributeIDs) {\n      const attributeType = self[attributeTypes[attributeName]];\n      let attribute;\n      let attributeID; // A Draco file may be created with default vertex attributes, whose attribute IDs\n      // are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n      // a Draco file may contain a custom set of attributes, identified by known unique\n      // IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\n      if (taskConfig.useUniqueIDs) {\n        attributeID = attributeIDs[attributeName];\n        attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID);\n      } else {\n        attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]);\n        if (attributeID === -1) continue;\n        attribute = decoder.GetAttribute(dracoGeometry, attributeID);\n      }\n\n      geometry.attributes.push(decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute));\n    } // Add index.\n\n\n    if (geometryType === draco.TRIANGULAR_MESH) {\n      geometry.index = decodeIndex(draco, decoder, dracoGeometry);\n    }\n\n    draco.destroy(dracoGeometry);\n    return geometry;\n  }\n\n  function decodeIndex(draco, decoder, dracoGeometry) {\n    const numFaces = dracoGeometry.num_faces();\n    const numIndices = numFaces * 3;\n    const byteLength = numIndices * 4;\n\n    const ptr = draco._malloc(byteLength);\n\n    decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n    const index = new Uint32Array(draco.HEAPF32.buffer, ptr, numIndices).slice();\n\n    draco._free(ptr);\n\n    return {\n      array: index,\n      itemSize: 1\n    };\n  }\n\n  function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) {\n    const numComponents = attribute.num_components();\n    const numPoints = dracoGeometry.num_points();\n    const numValues = numPoints * numComponents;\n    const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n    const dataType = getDracoDataType(draco, attributeType);\n\n    const ptr = draco._malloc(byteLength);\n\n    decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, ptr);\n    const array = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice();\n\n    draco._free(ptr);\n\n    return {\n      name: attributeName,\n      array: array,\n      itemSize: numComponents\n    };\n  }\n\n  function getDracoDataType(draco, attributeType) {\n    switch (attributeType) {\n      case Float32Array:\n        return draco.DT_FLOAT32;\n\n      case Int8Array:\n        return draco.DT_INT8;\n\n      case Int16Array:\n        return draco.DT_INT16;\n\n      case Int32Array:\n        return draco.DT_INT32;\n\n      case Uint8Array:\n        return draco.DT_UINT8;\n\n      case Uint16Array:\n        return draco.DT_UINT16;\n\n      case Uint32Array:\n        return draco.DT_UINT32;\n    }\n  }\n}\n\nexport { DRACOLoader };\n","import { BufferGeometry, BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, TrianglesDrawMode, TriangleFanDrawMode, TriangleStripDrawMode, Vector3, Float32BufferAttribute } from 'three';\nimport { getWithKey } from '../types/helpers.js';\n\n/**\n * @param  {Array<BufferGeometry>} geometries\n * @param  {Boolean} useGroups\n * @return {BufferGeometry}\n */\nconst mergeBufferGeometries = (geometries, useGroups) => {\n  const isIndexed = geometries[0].index !== null;\n  const attributesUsed = new Set(Object.keys(geometries[0].attributes));\n  const morphAttributesUsed = new Set(Object.keys(geometries[0].morphAttributes));\n  const attributes = {};\n  const morphAttributes = {};\n  const morphTargetsRelative = geometries[0].morphTargetsRelative;\n  const mergedGeometry = new BufferGeometry();\n  let offset = 0;\n  geometries.forEach((geom, i) => {\n    let attributesCount = 0; // ensure that all geometries are indexed, or none\n\n    if (isIndexed !== (geom.index !== null)) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.');\n      return null;\n    } // gather attributes, exit early if they're different\n\n\n    for (let name in geom.attributes) {\n      if (!attributesUsed.has(name)) {\n        console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure \"' + name + '\" attribute exists among all geometries, or in none of them.');\n        return null;\n      }\n\n      if (attributes[name] === undefined) {\n        attributes[name] = [];\n      }\n\n      attributes[name].push(geom.attributes[name]);\n      attributesCount++;\n    } // ensure geometries have the same number of attributes\n\n\n    if (attributesCount !== attributesUsed.size) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.');\n      return null;\n    } // gather morph attributes, exit early if they're different\n\n\n    if (morphTargetsRelative !== geom.morphTargetsRelative) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.');\n      return null;\n    }\n\n    for (let name in geom.morphAttributes) {\n      if (!morphAttributesUsed.has(name)) {\n        console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '.  .morphAttributes must be consistent throughout all geometries.');\n        return null;\n      }\n\n      if (morphAttributes[name] === undefined) morphAttributes[name] = [];\n      morphAttributes[name].push(geom.morphAttributes[name]);\n    } // gather .userData\n\n\n    mergedGeometry.userData.mergedUserData = mergedGeometry.userData.mergedUserData || [];\n    mergedGeometry.userData.mergedUserData.push(geom.userData);\n\n    if (useGroups) {\n      let count;\n\n      if (geom.index) {\n        count = geom.index.count;\n      } else if (geom.attributes.position !== undefined) {\n        count = geom.attributes.position.count;\n      } else {\n        console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute');\n        return null;\n      }\n\n      mergedGeometry.addGroup(offset, count, i);\n      offset += count;\n    }\n  }); // merge indices\n\n  if (isIndexed) {\n    let indexOffset = 0;\n    const mergedIndex = [];\n    geometries.forEach(geom => {\n      const index = geom.index;\n\n      for (let j = 0; j < index.count; ++j) {\n        mergedIndex.push(index.getX(j) + indexOffset);\n      }\n\n      indexOffset += geom.attributes.position.count;\n    });\n    mergedGeometry.setIndex(mergedIndex);\n  } // merge attributes\n\n\n  for (let name in attributes) {\n    const mergedAttribute = mergeBufferAttributes(attributes[name]);\n\n    if (!mergedAttribute) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + name + ' attribute.');\n      return null;\n    }\n\n    mergedGeometry.setAttribute(name, mergedAttribute);\n  } // merge morph attributes\n\n\n  for (let name in morphAttributes) {\n    const numMorphTargets = morphAttributes[name][0].length;\n    if (numMorphTargets === 0) break;\n    mergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\n    mergedGeometry.morphAttributes[name] = [];\n\n    for (let i = 0; i < numMorphTargets; ++i) {\n      const morphAttributesToMerge = [];\n\n      for (let j = 0; j < morphAttributes[name].length; ++j) {\n        morphAttributesToMerge.push(morphAttributes[name][j][i]);\n      }\n\n      const mergedMorphAttribute = mergeBufferAttributes(morphAttributesToMerge);\n\n      if (!mergedMorphAttribute) {\n        console.error('THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + name + ' morphAttribute.');\n        return null;\n      }\n\n      mergedGeometry.morphAttributes[name].push(mergedMorphAttribute);\n    }\n  }\n\n  return mergedGeometry;\n};\n/**\n * @param {Array<BufferAttribute>} attributes\n * @return {BufferAttribute}\n */\n\nconst mergeBufferAttributes = attributes => {\n  let TypedArray = undefined;\n  let itemSize = undefined;\n  let normalized = undefined;\n  let arrayLength = 0;\n  attributes.forEach(attr => {\n    if (TypedArray === undefined) {\n      TypedArray = attr.array.constructor;\n    }\n\n    if (TypedArray !== attr.array.constructor) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.');\n      return null;\n    }\n\n    if (itemSize === undefined) itemSize = attr.itemSize;\n\n    if (itemSize !== attr.itemSize) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.');\n      return null;\n    }\n\n    if (normalized === undefined) normalized = attr.normalized;\n\n    if (normalized !== attr.normalized) {\n      console.error('THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.');\n      return null;\n    }\n\n    arrayLength += attr.array.length;\n  });\n\n  if (TypedArray && itemSize) {\n    // @ts-expect-error this works in JS and TS is complaining but it's such a tiny thing I can live with the guilt\n    const array = new TypedArray(arrayLength);\n    let offset = 0;\n    attributes.forEach(attr => {\n      array.set(attr.array, offset);\n      offset += attr.array.length;\n    });\n    return new BufferAttribute(array, itemSize, normalized);\n  }\n};\n/**\n * @param {Array<BufferAttribute>} attributes\n * @return {Array<InterleavedBufferAttribute>}\n */\n\nconst interleaveAttributes = attributes => {\n  // Interleaves the provided attributes into an InterleavedBuffer and returns\n  // a set of InterleavedBufferAttributes for each attribute\n  let TypedArray = undefined;\n  let arrayLength = 0;\n  let stride = 0; // calculate the the length and type of the interleavedBuffer\n\n  for (let i = 0, l = attributes.length; i < l; ++i) {\n    const attribute = attributes[i];\n    if (TypedArray === undefined) TypedArray = attribute.array.constructor;\n\n    if (TypedArray !== attribute.array.constructor) {\n      console.error('AttributeBuffers of different types cannot be interleaved');\n      return null;\n    }\n\n    arrayLength += attribute.array.length;\n    stride += attribute.itemSize;\n  } // Create the set of buffer attributes\n  // @ts-expect-error this works in JS and TS is complaining but it's such a tiny thing I can live with the guilt\n\n\n  const interleavedBuffer = new InterleavedBuffer(new TypedArray(arrayLength), stride);\n  let offset = 0;\n  const res = [];\n  const getters = ['getX', 'getY', 'getZ', 'getW'];\n  const setters = ['setX', 'setY', 'setZ', 'setW'];\n\n  for (let j = 0, l = attributes.length; j < l; j++) {\n    const attribute = attributes[j];\n    const itemSize = attribute.itemSize;\n    const count = attribute.count;\n    const iba = new InterleavedBufferAttribute(interleavedBuffer, itemSize, offset, attribute.normalized);\n    res.push(iba);\n    offset += itemSize; // Move the data for each attribute into the new interleavedBuffer\n    // at the appropriate offset\n\n    for (let c = 0; c < count; c++) {\n      for (let k = 0; k < itemSize; k++) {\n        const set = getWithKey(iba, setters[k]);\n        const get = getWithKey(attribute, getters[k]);\n        set(c, get(c));\n      }\n    }\n  }\n\n  return res;\n};\n/**\n * @param {Array<BufferGeometry>} geometry\n * @return {number}\n */\n\nfunction estimateBytesUsed(geometry) {\n  // Return the estimated memory used by this geometry in bytes\n  // Calculate using itemSize, count, and BYTES_PER_ELEMENT to account\n  // for InterleavedBufferAttributes.\n  let mem = 0;\n\n  for (let name in geometry.attributes) {\n    const attr = geometry.getAttribute(name);\n    mem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n  }\n\n  const indices = geometry.getIndex();\n  mem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n  return mem;\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {number} tolerance\n * @return {BufferGeometry>}\n */\n\nfunction mergeVertices(geometry, tolerance = 1e-4) {\n  tolerance = Math.max(tolerance, Number.EPSILON); // Generate an index buffer if the geometry doesn't have one, or optimize it\n  // if it's already available.\n\n  const hashToIndex = {};\n  const indices = geometry.getIndex();\n  const positions = geometry.getAttribute('position');\n  const vertexCount = indices ? indices.count : positions.count; // next value for triangle indices\n\n  let nextIndex = 0; // attributes and new attribute arrays\n\n  const attributeNames = Object.keys(geometry.attributes);\n  const attrArrays = {};\n  const morphAttrsArrays = {};\n  const newIndices = [];\n  const getters = ['getX', 'getY', 'getZ', 'getW']; // initialize the arrays\n\n  for (let i = 0, l = attributeNames.length; i < l; i++) {\n    const name = attributeNames[i];\n    attrArrays[name] = [];\n    const morphAttr = geometry.morphAttributes[name];\n\n    if (morphAttr) {\n      morphAttrsArrays[name] = new Array(morphAttr.length).fill(0).map(() => []);\n    }\n  } // convert the error tolerance to an amount of decimal places to truncate to\n\n\n  const decimalShift = Math.log10(1 / tolerance);\n  const shiftMultiplier = Math.pow(10, decimalShift);\n\n  for (let i = 0; i < vertexCount; i++) {\n    const index = indices ? indices.getX(i) : i; // Generate a hash for the vertex attributes at the current index 'i'\n\n    let hash = '';\n\n    for (let j = 0, l = attributeNames.length; j < l; j++) {\n      const name = attributeNames[j];\n      const attribute = geometry.getAttribute(name);\n      const itemSize = attribute.itemSize;\n\n      for (let k = 0; k < itemSize; k++) {\n        // double tilde truncates the decimal value\n        // @ts-ignore no\n        hash += `${~~(attribute[getters[k]](index) * shiftMultiplier)},`;\n      }\n    } // Add another reference to the vertex if it's already\n    // used by another index\n\n\n    if (hash in hashToIndex) {\n      newIndices.push(hashToIndex[hash]);\n    } else {\n      // copy data to the new index in the attribute arrays\n      for (let j = 0, l = attributeNames.length; j < l; j++) {\n        const name = attributeNames[j];\n        const attribute = geometry.getAttribute(name);\n        const morphAttr = geometry.morphAttributes[name];\n        const itemSize = attribute.itemSize;\n        const newarray = attrArrays[name];\n        const newMorphArrays = morphAttrsArrays[name];\n\n        for (let k = 0; k < itemSize; k++) {\n          const getterFunc = getters[k]; // @ts-ignore\n\n          newarray.push(attribute[getterFunc](index));\n\n          if (morphAttr) {\n            for (let m = 0, ml = morphAttr.length; m < ml; m++) {\n              // @ts-ignore\n              newMorphArrays[m].push(morphAttr[m][getterFunc](index));\n            }\n          }\n        }\n      }\n\n      hashToIndex[hash] = nextIndex;\n      newIndices.push(nextIndex);\n      nextIndex++;\n    }\n  } // Generate typed arrays from new attribute arrays and update\n  // the attributeBuffers\n\n\n  const result = geometry.clone();\n\n  for (let i = 0, l = attributeNames.length; i < l; i++) {\n    const name = attributeNames[i];\n    const oldAttribute = geometry.getAttribute(name); //@ts-expect-error  something to do with functions and constructors and new\n\n    const buffer = new oldAttribute.array.constructor(attrArrays[name]);\n    const attribute = new BufferAttribute(buffer, oldAttribute.itemSize, oldAttribute.normalized);\n    result.setAttribute(name, attribute); // Update the attribute arrays\n\n    if (name in morphAttrsArrays) {\n      for (let j = 0; j < morphAttrsArrays[name].length; j++) {\n        const oldMorphAttribute = geometry.morphAttributes[name][j]; //@ts-expect-error something to do with functions and constructors and new\n\n        const buffer = new oldMorphAttribute.array.constructor(morphAttrsArrays[name][j]);\n        const morphAttribute = new BufferAttribute(buffer, oldMorphAttribute.itemSize, oldMorphAttribute.normalized);\n        result.morphAttributes[name][j] = morphAttribute;\n      }\n    }\n  } // indices\n\n\n  result.setIndex(newIndices);\n  return result;\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {number} drawMode\n * @return {BufferGeometry}\n */\n\nfunction toTrianglesDrawMode(geometry, drawMode) {\n  if (drawMode === TrianglesDrawMode) {\n    console.warn('THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.');\n    return geometry;\n  }\n\n  if (drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode) {\n    let index = geometry.getIndex(); // generate index if not present\n\n    if (index === null) {\n      const indices = [];\n      const position = geometry.getAttribute('position');\n\n      if (position !== undefined) {\n        for (let i = 0; i < position.count; i++) {\n          indices.push(i);\n        }\n\n        geometry.setIndex(indices);\n        index = geometry.getIndex();\n      } else {\n        console.error('THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.');\n        return geometry;\n      }\n    } //\n\n\n    const numberOfTriangles = index.count - 2;\n    const newIndices = [];\n\n    if (index) {\n      if (drawMode === TriangleFanDrawMode) {\n        // gl.TRIANGLE_FAN\n        for (let i = 1; i <= numberOfTriangles; i++) {\n          newIndices.push(index.getX(0));\n          newIndices.push(index.getX(i));\n          newIndices.push(index.getX(i + 1));\n        }\n      } else {\n        // gl.TRIANGLE_STRIP\n        for (let i = 0; i < numberOfTriangles; i++) {\n          if (i % 2 === 0) {\n            newIndices.push(index.getX(i));\n            newIndices.push(index.getX(i + 1));\n            newIndices.push(index.getX(i + 2));\n          } else {\n            newIndices.push(index.getX(i + 2));\n            newIndices.push(index.getX(i + 1));\n            newIndices.push(index.getX(i));\n          }\n        }\n      }\n    }\n\n    if (newIndices.length / 3 !== numberOfTriangles) {\n      console.error('THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.');\n    } // build final geometry\n\n\n    const newGeometry = geometry.clone();\n    newGeometry.setIndex(newIndices);\n    newGeometry.clearGroups();\n    return newGeometry;\n  } else {\n    console.error('THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode);\n    return geometry;\n  }\n}\n/**\n * Calculates the morphed attributes of a morphed/skinned BufferGeometry.\n * Helpful for Raytracing or Decals.\n * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points.\n * @return {Object} An Object with original position/normal attributes and morphed ones.\n */\n\nfunction computeMorphedAttributes(object) {\n  if (object.geometry.isBufferGeometry !== true) {\n    console.error('THREE.BufferGeometryUtils: Geometry is not of type BufferGeometry.');\n    return null;\n  }\n\n  const _vA = new Vector3();\n\n  const _vB = new Vector3();\n\n  const _vC = new Vector3();\n\n  const _tempA = new Vector3();\n\n  const _tempB = new Vector3();\n\n  const _tempC = new Vector3();\n\n  const _morphA = new Vector3();\n\n  const _morphB = new Vector3();\n\n  const _morphC = new Vector3();\n\n  function _calculateMorphedAttributeData(object, material, attribute, morphAttribute, morphTargetsRelative, a, b, c, modifiedAttributeArray) {\n    _vA.fromBufferAttribute(attribute, a);\n\n    _vB.fromBufferAttribute(attribute, b);\n\n    _vC.fromBufferAttribute(attribute, c);\n\n    const morphInfluences = object.morphTargetInfluences;\n\n    if ( // @ts-expect-error\n    material.morphTargets && morphAttribute && morphInfluences) {\n      _morphA.set(0, 0, 0);\n\n      _morphB.set(0, 0, 0);\n\n      _morphC.set(0, 0, 0);\n\n      for (let i = 0, il = morphAttribute.length; i < il; i++) {\n        const influence = morphInfluences[i];\n        const morph = morphAttribute[i];\n        if (influence === 0) continue;\n\n        _tempA.fromBufferAttribute(morph, a);\n\n        _tempB.fromBufferAttribute(morph, b);\n\n        _tempC.fromBufferAttribute(morph, c);\n\n        if (morphTargetsRelative) {\n          _morphA.addScaledVector(_tempA, influence);\n\n          _morphB.addScaledVector(_tempB, influence);\n\n          _morphC.addScaledVector(_tempC, influence);\n        } else {\n          _morphA.addScaledVector(_tempA.sub(_vA), influence);\n\n          _morphB.addScaledVector(_tempB.sub(_vB), influence);\n\n          _morphC.addScaledVector(_tempC.sub(_vC), influence);\n        }\n      }\n\n      _vA.add(_morphA);\n\n      _vB.add(_morphB);\n\n      _vC.add(_morphC);\n    }\n\n    if (object.isSkinnedMesh) {\n      // @ts-expect-error – https://github.com/three-types/three-ts-types/issues/37\n      object.boneTransform(a, _vA); // @ts-expect-error – https://github.com/three-types/three-ts-types/issues/37\n\n      object.boneTransform(b, _vB); // @ts-expect-error – https://github.com/three-types/three-ts-types/issues/37\n\n      object.boneTransform(c, _vC);\n    }\n\n    modifiedAttributeArray[a * 3 + 0] = _vA.x;\n    modifiedAttributeArray[a * 3 + 1] = _vA.y;\n    modifiedAttributeArray[a * 3 + 2] = _vA.z;\n    modifiedAttributeArray[b * 3 + 0] = _vB.x;\n    modifiedAttributeArray[b * 3 + 1] = _vB.y;\n    modifiedAttributeArray[b * 3 + 2] = _vB.z;\n    modifiedAttributeArray[c * 3 + 0] = _vC.x;\n    modifiedAttributeArray[c * 3 + 1] = _vC.y;\n    modifiedAttributeArray[c * 3 + 2] = _vC.z;\n  }\n\n  const geometry = object.geometry;\n  const material = object.material;\n  let a, b, c;\n  const index = geometry.index;\n  const positionAttribute = geometry.attributes.position;\n  const morphPosition = geometry.morphAttributes.position;\n  const morphTargetsRelative = geometry.morphTargetsRelative;\n  const normalAttribute = geometry.attributes.normal;\n  const morphNormal = geometry.morphAttributes.position;\n  const groups = geometry.groups;\n  const drawRange = geometry.drawRange;\n  let i, j, il, jl;\n  let group, groupMaterial;\n  let start, end;\n  const modifiedPosition = new Float32Array(positionAttribute.count * positionAttribute.itemSize);\n  const modifiedNormal = new Float32Array(normalAttribute.count * normalAttribute.itemSize);\n\n  if (index !== null) {\n    // indexed buffer geometry\n    if (Array.isArray(material)) {\n      for (i = 0, il = groups.length; i < il; i++) {\n        group = groups[i];\n        groupMaterial = material[group.materialIndex];\n        start = Math.max(group.start, drawRange.start);\n        end = Math.min(group.start + group.count, drawRange.start + drawRange.count);\n\n        for (j = start, jl = end; j < jl; j += 3) {\n          a = index.getX(j);\n          b = index.getX(j + 1);\n          c = index.getX(j + 2);\n\n          _calculateMorphedAttributeData(object, groupMaterial, positionAttribute, morphPosition, morphTargetsRelative, a, b, c, modifiedPosition);\n\n          _calculateMorphedAttributeData(object, groupMaterial, normalAttribute, morphNormal, morphTargetsRelative, a, b, c, modifiedNormal);\n        }\n      }\n    } else {\n      start = Math.max(0, drawRange.start);\n      end = Math.min(index.count, drawRange.start + drawRange.count);\n\n      for (i = start, il = end; i < il; i += 3) {\n        a = index.getX(i);\n        b = index.getX(i + 1);\n        c = index.getX(i + 2);\n\n        _calculateMorphedAttributeData(object, material, positionAttribute, morphPosition, morphTargetsRelative, a, b, c, modifiedPosition);\n\n        _calculateMorphedAttributeData(object, material, normalAttribute, morphNormal, morphTargetsRelative, a, b, c, modifiedNormal);\n      }\n    }\n  } else if (positionAttribute !== undefined) {\n    // non-indexed buffer geometry\n    if (Array.isArray(material)) {\n      for (i = 0, il = groups.length; i < il; i++) {\n        group = groups[i];\n        groupMaterial = material[group.materialIndex];\n        start = Math.max(group.start, drawRange.start);\n        end = Math.min(group.start + group.count, drawRange.start + drawRange.count);\n\n        for (j = start, jl = end; j < jl; j += 3) {\n          a = j;\n          b = j + 1;\n          c = j + 2;\n\n          _calculateMorphedAttributeData(object, groupMaterial, positionAttribute, morphPosition, morphTargetsRelative, a, b, c, modifiedPosition);\n\n          _calculateMorphedAttributeData(object, groupMaterial, normalAttribute, morphNormal, morphTargetsRelative, a, b, c, modifiedNormal);\n        }\n      }\n    } else {\n      start = Math.max(0, drawRange.start);\n      end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n\n      for (i = start, il = end; i < il; i += 3) {\n        a = i;\n        b = i + 1;\n        c = i + 2;\n\n        _calculateMorphedAttributeData(object, material, positionAttribute, morphPosition, morphTargetsRelative, a, b, c, modifiedPosition);\n\n        _calculateMorphedAttributeData(object, material, normalAttribute, morphNormal, morphTargetsRelative, a, b, c, modifiedNormal);\n      }\n    }\n  }\n\n  const morphedPositionAttribute = new Float32BufferAttribute(modifiedPosition, 3);\n  const morphedNormalAttribute = new Float32BufferAttribute(modifiedNormal, 3);\n  return {\n    positionAttribute: positionAttribute,\n    normalAttribute: normalAttribute,\n    morphedPositionAttribute: morphedPositionAttribute,\n    morphedNormalAttribute: morphedNormalAttribute\n  };\n} // Creates a new, non-indexed geometry with smooth normals everywhere except faces that meet at\n// an angle greater than the crease angle.\n\nfunction toCreasedNormals(geometry, creaseAngle = Math.PI / 3\n/* 60 degrees */\n) {\n  const creaseDot = Math.cos(creaseAngle);\n  const hashMultiplier = (1 + 1e-10) * 1e2; // reusable vertors\n\n  const verts = [new Vector3(), new Vector3(), new Vector3()];\n  const tempVec1 = new Vector3();\n  const tempVec2 = new Vector3();\n  const tempNorm = new Vector3();\n  const tempNorm2 = new Vector3(); // hashes a vector\n\n  function hashVertex(v) {\n    const x = ~~(v.x * hashMultiplier);\n    const y = ~~(v.y * hashMultiplier);\n    const z = ~~(v.z * hashMultiplier);\n    return `${x},${y},${z}`;\n  }\n\n  const resultGeometry = geometry.toNonIndexed();\n  const posAttr = resultGeometry.attributes.position;\n  const vertexMap = {}; // find all the normals shared by commonly located vertices\n\n  for (let i = 0, l = posAttr.count / 3; i < l; i++) {\n    const i3 = 3 * i;\n    const a = verts[0].fromBufferAttribute(posAttr, i3 + 0);\n    const b = verts[1].fromBufferAttribute(posAttr, i3 + 1);\n    const c = verts[2].fromBufferAttribute(posAttr, i3 + 2);\n    tempVec1.subVectors(c, b);\n    tempVec2.subVectors(a, b); // add the normal to the map for all vertices\n\n    const normal = new Vector3().crossVectors(tempVec1, tempVec2).normalize();\n\n    for (let n = 0; n < 3; n++) {\n      const vert = verts[n];\n      const hash = hashVertex(vert);\n\n      if (!(hash in vertexMap)) {\n        vertexMap[hash] = [];\n      }\n\n      vertexMap[hash].push(normal);\n    }\n  } // average normals from all vertices that share a common location if they are within the\n  // provided crease threshold\n\n\n  const normalArray = new Float32Array(posAttr.count * 3);\n  const normAttr = new BufferAttribute(normalArray, 3, false);\n\n  for (let i = 0, l = posAttr.count / 3; i < l; i++) {\n    // get the face normal for this vertex\n    const i3 = 3 * i;\n    const a = verts[0].fromBufferAttribute(posAttr, i3 + 0);\n    const b = verts[1].fromBufferAttribute(posAttr, i3 + 1);\n    const c = verts[2].fromBufferAttribute(posAttr, i3 + 2);\n    tempVec1.subVectors(c, b);\n    tempVec2.subVectors(a, b);\n    tempNorm.crossVectors(tempVec1, tempVec2).normalize(); // average all normals that meet the threshold and set the normal value\n\n    for (let n = 0; n < 3; n++) {\n      const vert = verts[n];\n      const hash = hashVertex(vert);\n      const otherNormals = vertexMap[hash];\n      tempNorm2.set(0, 0, 0);\n\n      for (let k = 0, lk = otherNormals.length; k < lk; k++) {\n        const otherNorm = otherNormals[k];\n\n        if (tempNorm.dot(otherNorm) > creaseDot) {\n          tempNorm2.add(otherNorm);\n        }\n      }\n\n      tempNorm2.normalize();\n      normAttr.setXYZ(i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z);\n    }\n  }\n\n  resultGeometry.setAttribute('normal', normAttr);\n  return resultGeometry;\n}\n\nexport { computeMorphedAttributes, estimateBytesUsed, interleaveAttributes, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, toCreasedNormals, toTrianglesDrawMode };\n","import { Loader, LoaderUtils, FileLoader, Color, SpotLight, PointLight, DirectionalLight, MeshBasicMaterial, sRGBEncoding, MeshPhysicalMaterial, Vector2, Matrix4, Vector3, Quaternion, InstancedMesh, Object3D, REVISION, TextureLoader, ImageBitmapLoader, BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, LinearFilter, LinearMipmapLinearFilter, RepeatWrapping, PointsMaterial, Material, LineBasicMaterial, MeshStandardMaterial, DoubleSide, PropertyBinding, BufferGeometry, SkinnedMesh, Mesh, TriangleStripDrawMode, TriangleFanDrawMode, LineSegments, Line, LineLoop, Points, Group, PerspectiveCamera, MathUtils, OrthographicCamera, Skeleton, InterpolateLinear, AnimationClip, Bone, NearestFilter, NearestMipmapNearestFilter, LinearMipmapNearestFilter, NearestMipmapLinearFilter, ClampToEdgeWrapping, MirroredRepeatWrapping, InterpolateDiscrete, FrontSide, Texture, VectorKeyframeTrack, QuaternionKeyframeTrack, NumberKeyframeTrack, Box3, Sphere, Interpolant } from 'three';\nimport { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';\n\nclass GLTFLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.dracoLoader = null;\n    this.ktx2Loader = null;\n    this.meshoptDecoder = null;\n    this.pluginCallbacks = [];\n    this.register(function (parser) {\n      return new GLTFMaterialsClearcoatExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFTextureBasisUExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFTextureWebPExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFTextureAVIFExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsSheenExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsTransmissionExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsVolumeExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsIorExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsEmissiveStrengthExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsSpecularExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMaterialsIridescenceExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFLightsExtension(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMeshoptCompression(parser);\n    });\n    this.register(function (parser) {\n      return new GLTFMeshGpuInstancing(parser);\n    });\n  }\n\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    let resourcePath;\n\n    if (this.resourcePath !== '') {\n      resourcePath = this.resourcePath;\n    } else if (this.path !== '') {\n      resourcePath = this.path;\n    } else {\n      resourcePath = LoaderUtils.extractUrlBase(url);\n    } // Tells the LoadingManager to track an extra item, which resolves after\n    // the model is fully loaded. This means the count of items loaded will\n    // be incorrect, but ensures manager.onLoad() does not fire early.\n\n\n    this.manager.itemStart(url);\n\n    const _onError = function (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    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType('arraybuffer');\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\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\n  setDRACOLoader(dracoLoader) {\n    this.dracoLoader = dracoLoader;\n    return this;\n  }\n\n  setDDSLoader() {\n    throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');\n  }\n\n  setKTX2Loader(ktx2Loader) {\n    this.ktx2Loader = ktx2Loader;\n    return this;\n  }\n\n  setMeshoptDecoder(meshoptDecoder) {\n    this.meshoptDecoder = meshoptDecoder;\n    return this;\n  }\n\n  register(callback) {\n    if (this.pluginCallbacks.indexOf(callback) === -1) {\n      this.pluginCallbacks.push(callback);\n    }\n\n    return this;\n  }\n\n  unregister(callback) {\n    if (this.pluginCallbacks.indexOf(callback) !== -1) {\n      this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n    }\n\n    return this;\n  }\n\n  parse(data, path, onLoad, onError) {\n    let json;\n    const extensions = {};\n    const plugins = {};\n\n    if (typeof data === 'string') {\n      json = JSON.parse(data);\n    } else if (data instanceof ArrayBuffer) {\n      const magic = LoaderUtils.decodeText(new Uint8Array(data.slice(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        json = JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content);\n      } else {\n        json = JSON.parse(LoaderUtils.decodeText(new Uint8Array(data)));\n      }\n    } else {\n      json = data;\n    }\n\n    if (json.asset === undefined || json.asset.version[0] < 2) {\n      if (onError) onError(new Error('THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.'));\n      return;\n    }\n\n    const parser = new GLTFParser(json, {\n      path: path || this.resourcePath || '',\n      crossOrigin: this.crossOrigin,\n      requestHeader: this.requestHeader,\n      manager: this.manager,\n      ktx2Loader: this.ktx2Loader,\n      meshoptDecoder: this.meshoptDecoder\n    });\n    parser.fileLoader.setRequestHeader(this.requestHeader);\n\n    for (let i = 0; i < this.pluginCallbacks.length; i++) {\n      const plugin = this.pluginCallbacks[i](parser);\n      plugins[plugin.name] = plugin; // Workaround to avoid determining as unknown extension\n      // in addUnknownExtensionsToUserData().\n      // Remove this workaround if we move all the existing\n      // extension handlers to plugin system\n\n      extensions[plugin.name] = true;\n    }\n\n    if (json.extensionsUsed) {\n      for (let i = 0; i < json.extensionsUsed.length; ++i) {\n        const extensionName = json.extensionsUsed[i];\n        const extensionsRequired = json.extensionsRequired || [];\n\n        switch (extensionName) {\n          case EXTENSIONS.KHR_MATERIALS_UNLIT:\n            extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n            break;\n\n          case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n            extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n            break;\n\n          case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n            extensions[extensionName] = new GLTFTextureTransformExtension();\n            break;\n\n          case EXTENSIONS.KHR_MESH_QUANTIZATION:\n            extensions[extensionName] = new GLTFMeshQuantizationExtension();\n            break;\n\n          default:\n            if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === undefined) {\n              console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n            }\n\n        }\n      }\n    }\n\n    parser.setExtensions(extensions);\n    parser.setPlugins(plugins);\n    parser.parse(onLoad, onError);\n  }\n\n  parseAsync(data, path) {\n    const scope = this;\n    return new Promise(function (resolve, reject) {\n      scope.parse(data, path, resolve, reject);\n    });\n  }\n\n}\n/* GLTFREGISTRY */\n\n\nfunction GLTFRegistry() {\n  let objects = {};\n  return {\n    get: function (key) {\n      return objects[key];\n    },\n    add: function (key, object) {\n      objects[key] = object;\n    },\n    remove: function (key) {\n      delete objects[key];\n    },\n    removeAll: function () {\n      objects = {};\n    }\n  };\n}\n/*********************************/\n\n/********** EXTENSIONS ***********/\n\n/*********************************/\n\n\nconst EXTENSIONS = {\n  KHR_BINARY_GLTF: 'KHR_binary_glTF',\n  KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n  KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n  KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n  KHR_MATERIALS_IOR: 'KHR_materials_ior',\n  KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n  KHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n  KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n  KHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n  KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n  KHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n  KHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n  KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n  KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n  KHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',\n  EXT_TEXTURE_WEBP: 'EXT_texture_webp',\n  EXT_TEXTURE_AVIF: 'EXT_texture_avif',\n  EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n  EXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'\n};\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\n\nclass GLTFLightsExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; // Object3D instance caches\n\n    this.cache = {\n      refs: {},\n      uses: {}\n    };\n  }\n\n  _markDefs() {\n    const parser = this.parser;\n    const nodeDefs = this.parser.json.nodes || [];\n\n    for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n      const nodeDef = nodeDefs[nodeIndex];\n\n      if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== undefined) {\n        parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n      }\n    }\n  }\n\n  _loadLight(lightIndex) {\n    const parser = this.parser;\n    const cacheKey = 'light:' + lightIndex;\n    let dependency = parser.cache.get(cacheKey);\n    if (dependency) return dependency;\n    const json = parser.json;\n    const extensions = json.extensions && json.extensions[this.name] || {};\n    const lightDefs = extensions.lights || [];\n    const lightDef = lightDefs[lightIndex];\n    let lightNode;\n    const color = new Color(0xffffff);\n    if (lightDef.color !== undefined) color.fromArray(lightDef.color);\n    const range = lightDef.range !== undefined ? lightDef.range : 0;\n\n    switch (lightDef.type) {\n      case 'directional':\n        lightNode = new DirectionalLight(color);\n        lightNode.target.position.set(0, 0, -1);\n        lightNode.add(lightNode.target);\n        break;\n\n      case 'point':\n        lightNode = new PointLight(color);\n        lightNode.distance = range;\n        break;\n\n      case 'spot':\n        lightNode = new SpotLight(color);\n        lightNode.distance = range; // Handle spotlight properties.\n\n        lightDef.spot = lightDef.spot || {};\n        lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n        lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n        lightNode.angle = lightDef.spot.outerConeAngle;\n        lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n        lightNode.target.position.set(0, 0, -1);\n        lightNode.add(lightNode.target);\n        break;\n\n      default:\n        throw new Error('THREE.GLTFLoader: Unexpected light type: ' + lightDef.type);\n    } // Some lights (e.g. spot) default to a position other than the origin. Reset the position\n    // here, because node-level parsing will only override position if explicitly specified.\n\n\n    lightNode.position.set(0, 0, 0);\n    lightNode.decay = 2;\n    assignExtrasToUserData(lightNode, lightDef);\n    if (lightDef.intensity !== undefined) lightNode.intensity = lightDef.intensity;\n    lightNode.name = parser.createUniqueName(lightDef.name || 'light_' + lightIndex);\n    dependency = Promise.resolve(lightNode);\n    parser.cache.add(cacheKey, dependency);\n    return dependency;\n  }\n\n  getDependency(type, index) {\n    if (type !== 'light') return;\n    return this._loadLight(index);\n  }\n\n  createNodeAttachment(nodeIndex) {\n    const self = this;\n    const parser = this.parser;\n    const json = parser.json;\n    const nodeDef = json.nodes[nodeIndex];\n    const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {};\n    const lightIndex = lightDef.light;\n    if (lightIndex === undefined) return null;\n    return this._loadLight(lightIndex).then(function (light) {\n      return parser._getNodeRef(self.cache, lightIndex, light);\n    });\n  }\n\n}\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\n\n\nclass GLTFMaterialsUnlitExtension {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n  }\n\n  getMaterialType() {\n    return MeshBasicMaterial;\n  }\n\n  extendParams(materialParams, materialDef, parser) {\n    const pending = [];\n    materialParams.color = new Color(1.0, 1.0, 1.0);\n    materialParams.opacity = 1.0;\n    const metallicRoughness = materialDef.pbrMetallicRoughness;\n\n    if (metallicRoughness) {\n      if (Array.isArray(metallicRoughness.baseColorFactor)) {\n        const 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, sRGBEncoding));\n      }\n    }\n\n    return Promise.all(pending);\n  }\n\n}\n/**\n * Materials Emissive Strength Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md\n */\n\n\nclass GLTFMaterialsEmissiveStrengthExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const emissiveStrength = materialDef.extensions[this.name].emissiveStrength;\n\n    if (emissiveStrength !== undefined) {\n      materialParams.emissiveIntensity = emissiveStrength;\n    }\n\n    return Promise.resolve();\n  }\n\n}\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\n\n\nclass GLTFMaterialsClearcoatExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n\n    if (extension.clearcoatFactor !== undefined) {\n      materialParams.clearcoat = extension.clearcoatFactor;\n    }\n\n    if (extension.clearcoatTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'clearcoatMap', extension.clearcoatTexture));\n    }\n\n    if (extension.clearcoatRoughnessFactor !== undefined) {\n      materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n    }\n\n    if (extension.clearcoatRoughnessTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture));\n    }\n\n    if (extension.clearcoatNormalTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture));\n\n      if (extension.clearcoatNormalTexture.scale !== undefined) {\n        const scale = extension.clearcoatNormalTexture.scale;\n        materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n      }\n    }\n\n    return Promise.all(pending);\n  }\n\n}\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\n\n\nclass GLTFMaterialsIridescenceExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n\n    if (extension.iridescenceFactor !== undefined) {\n      materialParams.iridescence = extension.iridescenceFactor;\n    }\n\n    if (extension.iridescenceTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'iridescenceMap', extension.iridescenceTexture));\n    }\n\n    if (extension.iridescenceIor !== undefined) {\n      materialParams.iridescenceIOR = extension.iridescenceIor;\n    }\n\n    if (materialParams.iridescenceThicknessRange === undefined) {\n      materialParams.iridescenceThicknessRange = [100, 400];\n    }\n\n    if (extension.iridescenceThicknessMinimum !== undefined) {\n      materialParams.iridescenceThicknessRange[0] = extension.iridescenceThicknessMinimum;\n    }\n\n    if (extension.iridescenceThicknessMaximum !== undefined) {\n      materialParams.iridescenceThicknessRange[1] = extension.iridescenceThicknessMaximum;\n    }\n\n    if (extension.iridescenceThicknessTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture));\n    }\n\n    return Promise.all(pending);\n  }\n\n}\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\n\n\nclass GLTFMaterialsSheenExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const pending = [];\n    materialParams.sheenColor = new Color(0, 0, 0);\n    materialParams.sheenRoughness = 0;\n    materialParams.sheen = 1;\n    const extension = materialDef.extensions[this.name];\n\n    if (extension.sheenColorFactor !== undefined) {\n      materialParams.sheenColor.fromArray(extension.sheenColorFactor);\n    }\n\n    if (extension.sheenRoughnessFactor !== undefined) {\n      materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n    }\n\n    if (extension.sheenColorTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'sheenColorMap', extension.sheenColorTexture, sRGBEncoding));\n    }\n\n    if (extension.sheenRoughnessTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture));\n    }\n\n    return Promise.all(pending);\n  }\n\n}\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\n\n\nclass GLTFMaterialsTransmissionExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n\n    if (extension.transmissionFactor !== undefined) {\n      materialParams.transmission = extension.transmissionFactor;\n    }\n\n    if (extension.transmissionTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'transmissionMap', extension.transmissionTexture));\n    }\n\n    return Promise.all(pending);\n  }\n\n}\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\n\n\nclass GLTFMaterialsVolumeExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n    if (extension.thicknessTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'thicknessMap', extension.thicknessTexture));\n    }\n\n    materialParams.attenuationDistance = extension.attenuationDistance || Infinity;\n    const colorArray = extension.attenuationColor || [1, 1, 1];\n    materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n    return Promise.all(pending);\n  }\n\n}\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\n\n\nclass GLTFMaterialsIorExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const extension = materialDef.extensions[this.name];\n    materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n    return Promise.resolve();\n  }\n\n}\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\n\n\nclass GLTFMaterialsSpecularExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n  }\n\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n    return MeshPhysicalMaterial;\n  }\n\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n    if (extension.specularTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'specularIntensityMap', extension.specularTexture));\n    }\n\n    const colorArray = extension.specularColorFactor || [1, 1, 1];\n    materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n\n    if (extension.specularColorTexture !== undefined) {\n      pending.push(parser.assignTexture(materialParams, 'specularColorMap', extension.specularColorTexture, sRGBEncoding));\n    }\n\n    return Promise.all(pending);\n  }\n\n}\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\n\n\nclass GLTFTextureBasisUExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n  }\n\n  loadTexture(textureIndex) {\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n\n    if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n      return null;\n    }\n\n    const extension = textureDef.extensions[this.name];\n    const loader = parser.options.ktx2Loader;\n\n    if (!loader) {\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n        throw new Error('THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures');\n      } else {\n        // Assumes that the extension is optional and that a fallback texture is present\n        return null;\n      }\n    }\n\n    return parser.loadTextureImage(textureIndex, extension.source, loader);\n  }\n\n}\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\n\n\nclass GLTFTextureWebPExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n    this.isSupported = null;\n  }\n\n  loadTexture(textureIndex) {\n    const name = this.name;\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n\n    if (!textureDef.extensions || !textureDef.extensions[name]) {\n      return null;\n    }\n\n    const extension = textureDef.extensions[name];\n    const source = json.images[extension.source];\n    let loader = parser.textureLoader;\n\n    if (source.uri) {\n      const handler = parser.options.manager.getHandler(source.uri);\n      if (handler !== null) loader = handler;\n    }\n\n    return this.detectSupport().then(function (isSupported) {\n      if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader);\n\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n        throw new Error('THREE.GLTFLoader: WebP required by asset but unsupported.');\n      } // Fall back to PNG or JPEG.\n\n\n      return parser.loadTexture(textureIndex);\n    });\n  }\n\n  detectSupport() {\n    if (!this.isSupported) {\n      this.isSupported = new Promise(function (resolve) {\n        const image = new Image(); // Lossy test image. Support for lossy images doesn't guarantee support for all\n        // WebP images, unfortunately.\n\n        image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n        image.onload = image.onerror = function () {\n          resolve(image.height === 1);\n        };\n      });\n    }\n\n    return this.isSupported;\n  }\n\n}\n/**\n * AVIF Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif\n */\n\n\nclass GLTFTextureAVIFExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.EXT_TEXTURE_AVIF;\n    this.isSupported = null;\n  }\n\n  loadTexture(textureIndex) {\n    const name = this.name;\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n\n    if (!textureDef.extensions || !textureDef.extensions[name]) {\n      return null;\n    }\n\n    const extension = textureDef.extensions[name];\n    const source = json.images[extension.source];\n    let loader = parser.textureLoader;\n\n    if (source.uri) {\n      const handler = parser.options.manager.getHandler(source.uri);\n      if (handler !== null) loader = handler;\n    }\n\n    return this.detectSupport().then(function (isSupported) {\n      if (isSupported) return parser.loadTextureImage(textureIndex, extension.source, loader);\n\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n        throw new Error('THREE.GLTFLoader: AVIF required by asset but unsupported.');\n      } // Fall back to PNG or JPEG.\n\n\n      return parser.loadTexture(textureIndex);\n    });\n  }\n\n  detectSupport() {\n    if (!this.isSupported) {\n      this.isSupported = new Promise(function (resolve) {\n        const image = new Image(); // Lossy test image.\n\n        image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';\n\n        image.onload = image.onerror = function () {\n          resolve(image.height === 1);\n        };\n      });\n    }\n\n    return this.isSupported;\n  }\n\n}\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\n\n\nclass GLTFMeshoptCompression {\n  constructor(parser) {\n    this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n    this.parser = parser;\n  }\n\n  loadBufferView(index) {\n    const json = this.parser.json;\n    const bufferView = json.bufferViews[index];\n\n    if (bufferView.extensions && bufferView.extensions[this.name]) {\n      const extensionDef = bufferView.extensions[this.name];\n      const buffer = this.parser.getDependency('buffer', extensionDef.buffer);\n      const decoder = this.parser.options.meshoptDecoder;\n\n      if (!decoder || !decoder.supported) {\n        if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n          throw new Error('THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files');\n        } else {\n          // Assumes that the extension is optional and that fallback buffer data is present\n          return null;\n        }\n      }\n\n      return buffer.then(function (res) {\n        const byteOffset = extensionDef.byteOffset || 0;\n        const byteLength = extensionDef.byteLength || 0;\n        const count = extensionDef.count;\n        const stride = extensionDef.byteStride;\n        const source = new Uint8Array(res, byteOffset, byteLength);\n\n        if (decoder.decodeGltfBufferAsync) {\n          return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function (res) {\n            return res.buffer;\n          });\n        } else {\n          // Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync\n          return decoder.ready.then(function () {\n            const result = new ArrayBuffer(count * stride);\n            decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\n            return result;\n          });\n        }\n      });\n    } else {\n      return null;\n    }\n  }\n\n}\n/**\n * GPU Instancing Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing\n *\n */\n\n\nclass GLTFMeshGpuInstancing {\n  constructor(parser) {\n    this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n    this.parser = parser;\n  }\n\n  createNodeMesh(nodeIndex) {\n    const json = this.parser.json;\n    const nodeDef = json.nodes[nodeIndex];\n\n    if (!nodeDef.extensions || !nodeDef.extensions[this.name] || nodeDef.mesh === undefined) {\n      return null;\n    }\n\n    const meshDef = json.meshes[nodeDef.mesh]; // No Points or Lines + Instancing support yet\n\n    for (const primitive of meshDef.primitives) {\n      if (primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && primitive.mode !== undefined) {\n        return null;\n      }\n    }\n\n    const extensionDef = nodeDef.extensions[this.name];\n    const attributesDef = extensionDef.attributes; // @TODO: Can we support InstancedMesh + SkinnedMesh?\n\n    const pending = [];\n    const attributes = {};\n\n    for (const key in attributesDef) {\n      pending.push(this.parser.getDependency('accessor', attributesDef[key]).then(accessor => {\n        attributes[key] = accessor;\n        return attributes[key];\n      }));\n    }\n\n    if (pending.length < 1) {\n      return null;\n    }\n\n    pending.push(this.parser.createNodeMesh(nodeIndex));\n    return Promise.all(pending).then(results => {\n      const nodeObject = results.pop();\n      const meshes = nodeObject.isGroup ? nodeObject.children : [nodeObject];\n      const count = results[0].count; // All attribute counts should be same\n\n      const instancedMeshes = [];\n\n      for (const mesh of meshes) {\n        // Temporal variables\n        const m = new Matrix4();\n        const p = new Vector3();\n        const q = new Quaternion();\n        const s = new Vector3(1, 1, 1);\n        const instancedMesh = new InstancedMesh(mesh.geometry, mesh.material, count);\n\n        for (let i = 0; i < count; i++) {\n          if (attributes.TRANSLATION) {\n            p.fromBufferAttribute(attributes.TRANSLATION, i);\n          }\n\n          if (attributes.ROTATION) {\n            q.fromBufferAttribute(attributes.ROTATION, i);\n          }\n\n          if (attributes.SCALE) {\n            s.fromBufferAttribute(attributes.SCALE, i);\n          }\n\n          instancedMesh.setMatrixAt(i, m.compose(p, q, s));\n        } // Add instance attributes to the geometry, excluding TRS.\n\n\n        for (const attributeName in attributes) {\n          if (attributeName !== 'TRANSLATION' && attributeName !== 'ROTATION' && attributeName !== 'SCALE') {\n            mesh.geometry.setAttribute(attributeName, attributes[attributeName]);\n          }\n        } // Just in case\n\n\n        Object3D.prototype.copy.call(instancedMesh, mesh);\n        this.parser.assignFinalMaterial(instancedMesh);\n        instancedMeshes.push(instancedMesh);\n      }\n\n      if (nodeObject.isGroup) {\n        nodeObject.clear();\n        nodeObject.add(...instancedMeshes);\n        return nodeObject;\n      }\n\n      return instancedMeshes[0];\n    });\n  }\n\n}\n/* BINARY EXTENSION */\n\n\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = {\n  JSON: 0x4e4f534a,\n  BIN: 0x004e4942\n};\n\nclass GLTFBinaryExtension {\n  constructor(data) {\n    this.name = EXTENSIONS.KHR_BINARY_GLTF;\n    this.content = null;\n    this.body = null;\n    const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n    this.header = {\n      magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n      version: headerView.getUint32(4, true),\n      length: headerView.getUint32(8, true)\n    };\n\n    if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n      throw new Error('THREE.GLTFLoader: Unsupported glTF-Binary header.');\n    } else if (this.header.version < 2.0) {\n      throw new Error('THREE.GLTFLoader: Legacy binary file detected.');\n    }\n\n    const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n    const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n    let chunkIndex = 0;\n\n    while (chunkIndex < chunkContentsLength) {\n      const chunkLength = chunkView.getUint32(chunkIndex, true);\n      chunkIndex += 4;\n      const chunkType = chunkView.getUint32(chunkIndex, true);\n      chunkIndex += 4;\n\n      if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n        const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n        this.content = LoaderUtils.decodeText(contentArray);\n      } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n        const 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}\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\n\n\nclass GLTFDracoMeshCompressionExtension {\n  constructor(json, dracoLoader) {\n    if (!dracoLoader) {\n      throw new Error('THREE.GLTFLoader: No DRACOLoader instance provided.');\n    }\n\n    this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n    this.json = json;\n    this.dracoLoader = dracoLoader;\n    this.dracoLoader.preload();\n  }\n\n  decodePrimitive(primitive, parser) {\n    const json = this.json;\n    const dracoLoader = this.dracoLoader;\n    const bufferViewIndex = primitive.extensions[this.name].bufferView;\n    const gltfAttributeMap = primitive.extensions[this.name].attributes;\n    const threeAttributeMap = {};\n    const attributeNormalizedMap = {};\n    const attributeTypeMap = {};\n\n    for (const attributeName in gltfAttributeMap) {\n      const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n      threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n    }\n\n    for (const attributeName in primitive.attributes) {\n      const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n\n      if (gltfAttributeMap[attributeName] !== undefined) {\n        const accessorDef = json.accessors[primitive.attributes[attributeName]];\n        const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n        attributeTypeMap[threeAttributeName] = componentType.name;\n        attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\n      }\n    }\n\n    return parser.getDependency('bufferView', bufferViewIndex).then(function (bufferView) {\n      return new Promise(function (resolve) {\n        dracoLoader.decodeDracoFile(bufferView, function (geometry) {\n          for (const attributeName in geometry.attributes) {\n            const attribute = geometry.attributes[attributeName];\n            const normalized = attributeNormalizedMap[attributeName];\n            if (normalized !== undefined) attribute.normalized = normalized;\n          }\n\n          resolve(geometry);\n        }, threeAttributeMap, attributeTypeMap);\n      });\n    });\n  }\n\n}\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\n\n\nclass GLTFTextureTransformExtension {\n  constructor() {\n    this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n  }\n\n  extendTexture(texture, transform) {\n    if ((transform.texCoord === undefined || transform.texCoord === texture.channel) && transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined) {\n      // See https://github.com/mrdoob/three.js/issues/21819.\n      return texture;\n    }\n\n    texture = texture.clone();\n\n    if (transform.texCoord !== undefined) {\n      texture.channel = transform.texCoord;\n    }\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    texture.needsUpdate = true;\n    return texture;\n  }\n\n}\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\n\n\nclass GLTFMeshQuantizationExtension {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\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\nclass GLTFCubicSplineInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n\n  copySampleValue_(index) {\n    // Copies a sample value to the result buffer. See description of glTF\n    // CUBICSPLINE values layout in interpolate_() function below.\n    const result = this.resultBuffer,\n          values = this.sampleValues,\n          valueSize = this.valueSize,\n          offset = index * valueSize * 3 + valueSize;\n\n    for (let i = 0; i !== valueSize; i++) {\n      result[i] = values[offset + i];\n    }\n\n    return result;\n  }\n\n  interpolate_(i1, t0, t, t1) {\n    const result = this.resultBuffer;\n    const values = this.sampleValues;\n    const stride = this.valueSize;\n    const stride2 = stride * 2;\n    const stride3 = stride * 3;\n    const td = t1 - t0;\n    const p = (t - t0) / td;\n    const pp = p * p;\n    const ppp = pp * p;\n    const offset1 = i1 * stride3;\n    const offset0 = offset1 - stride3;\n    const s2 = -2 * ppp + 3 * pp;\n    const s3 = ppp - pp;\n    const s0 = 1 - s2;\n    const 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 (let i = 0; i !== stride; i++) {\n      const p0 = values[offset0 + i + stride]; // splineVertex_k\n\n      const m0 = values[offset0 + i + stride2] * td; // outTangent_k * (t_k+1 - t_k)\n\n      const p1 = values[offset1 + i + stride]; // splineVertex_k+1\n\n      const 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\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n  interpolate_(i1, t0, t, t1) {\n    const result = super.interpolate_(i1, t0, t, t1);\n\n    _q.fromArray(result).normalize().toArray(result);\n\n    return result;\n  }\n\n}\n/*********************************/\n\n/********** INTERNALS ************/\n\n/*********************************/\n\n/* CONSTANTS */\n\n\nconst 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};\nconst WEBGL_COMPONENT_TYPES = {\n  5120: Int8Array,\n  5121: Uint8Array,\n  5122: Int16Array,\n  5123: Uint16Array,\n  5125: Uint32Array,\n  5126: Float32Array\n};\nconst WEBGL_FILTERS = {\n  9728: NearestFilter,\n  9729: LinearFilter,\n  9984: NearestMipmapNearestFilter,\n  9985: LinearMipmapNearestFilter,\n  9986: NearestMipmapLinearFilter,\n  9987: LinearMipmapLinearFilter\n};\nconst WEBGL_WRAPPINGS = {\n  33071: ClampToEdgeWrapping,\n  33648: MirroredRepeatWrapping,\n  10497: RepeatWrapping\n};\nconst 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};\nconst ATTRIBUTES = {\n  POSITION: 'position',\n  NORMAL: 'normal',\n  TANGENT: 'tangent',\n  // uv => uv1, 4 uv channels\n  // https://github.com/mrdoob/three.js/pull/25943\n  // https://github.com/mrdoob/three.js/pull/25788\n  ...(REVISION.replace(/\\D+/g, '') >= 152 ? {\n    TEXCOORD_0: 'uv',\n    TEXCOORD_1: 'uv1',\n    TEXCOORD_2: 'uv2',\n    TEXCOORD_3: 'uv3'\n  } : {\n    TEXCOORD_0: 'uv',\n    TEXCOORD_1: 'uv2'\n  }),\n  COLOR_0: 'color',\n  WEIGHTS_0: 'skinWeight',\n  JOINTS_0: 'skinIndex'\n};\nconst PATH_PROPERTIES = {\n  scale: 'scale',\n  translation: 'position',\n  rotation: 'quaternion',\n  weights: 'morphTargetInfluences'\n};\nconst INTERPOLATION = {\n  CUBICSPLINE: undefined,\n  // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n  // keyframe track will be initialized with a default interpolation type, then modified.\n  LINEAR: InterpolateLinear,\n  STEP: InterpolateDiscrete\n};\nconst ALPHA_MODES = {\n  OPAQUE: 'OPAQUE',\n  MASK: 'MASK',\n  BLEND: 'BLEND'\n};\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\n\nfunction createDefaultMaterial(cache) {\n  if (cache['DefaultMaterial'] === undefined) {\n    cache['DefaultMaterial'] = new MeshStandardMaterial({\n      color: 0xffffff,\n      emissive: 0x000000,\n      metalness: 1,\n      roughness: 1,\n      transparent: false,\n      depthTest: true,\n      side: FrontSide\n    });\n  }\n\n  return cache['DefaultMaterial'];\n}\n\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n  // Add unknown glTF extensions to an object's userData.\n  for (const name in objectDef.extensions) {\n    if (knownExtensions[name] === undefined) {\n      object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n      object.userData.gltfExtensions[name] = objectDef.extensions[name];\n    }\n  }\n}\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\n\n\nfunction assignExtrasToUserData(object, gltfDef) {\n  if (gltfDef.extras !== undefined) {\n    if (typeof gltfDef.extras === 'object') {\n      Object.assign(object.userData, gltfDef.extras);\n    } else {\n      console.warn('THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras);\n    }\n  }\n}\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array<GLTF.Target>} targets\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\n */\n\n\nfunction addMorphTargets(geometry, targets, parser) {\n  let hasMorphPosition = false;\n  let hasMorphNormal = false;\n  let hasMorphColor = false;\n\n  for (let i = 0, il = targets.length; i < il; i++) {\n    const target = targets[i];\n    if (target.POSITION !== undefined) hasMorphPosition = true;\n    if (target.NORMAL !== undefined) hasMorphNormal = true;\n    if (target.COLOR_0 !== undefined) hasMorphColor = true;\n    if (hasMorphPosition && hasMorphNormal && hasMorphColor) break;\n  }\n\n  if (!hasMorphPosition && !hasMorphNormal && !hasMorphColor) return Promise.resolve(geometry);\n  const pendingPositionAccessors = [];\n  const pendingNormalAccessors = [];\n  const pendingColorAccessors = [];\n\n  for (let i = 0, il = targets.length; i < il; i++) {\n    const target = targets[i];\n\n    if (hasMorphPosition) {\n      const pendingAccessor = target.POSITION !== undefined ? parser.getDependency('accessor', target.POSITION) : geometry.attributes.position;\n      pendingPositionAccessors.push(pendingAccessor);\n    }\n\n    if (hasMorphNormal) {\n      const pendingAccessor = target.NORMAL !== undefined ? parser.getDependency('accessor', target.NORMAL) : geometry.attributes.normal;\n      pendingNormalAccessors.push(pendingAccessor);\n    }\n\n    if (hasMorphColor) {\n      const pendingAccessor = target.COLOR_0 !== undefined ? parser.getDependency('accessor', target.COLOR_0) : geometry.attributes.color;\n      pendingColorAccessors.push(pendingAccessor);\n    }\n  }\n\n  return Promise.all([Promise.all(pendingPositionAccessors), Promise.all(pendingNormalAccessors), Promise.all(pendingColorAccessors)]).then(function (accessors) {\n    const morphPositions = accessors[0];\n    const morphNormals = accessors[1];\n    const morphColors = accessors[2];\n    if (hasMorphPosition) geometry.morphAttributes.position = morphPositions;\n    if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals;\n    if (hasMorphColor) geometry.morphAttributes.color = morphColors;\n    geometry.morphTargetsRelative = true;\n    return geometry;\n  });\n}\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\n\n\nfunction updateMorphTargets(mesh, meshDef) {\n  mesh.updateMorphTargets();\n\n  if (meshDef.weights !== undefined) {\n    for (let 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    const targetNames = meshDef.extras.targetNames;\n\n    if (mesh.morphTargetInfluences.length === targetNames.length) {\n      mesh.morphTargetDictionary = {};\n\n      for (let 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\nfunction createPrimitiveKey(primitiveDef) {\n  const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n  let geometryKey;\n\n  if (dracoExtension) {\n    geometryKey = 'draco:' + dracoExtension.bufferView + ':' + dracoExtension.indices + ':' + createAttributesKey(dracoExtension.attributes);\n  } else {\n    geometryKey = primitiveDef.indices + ':' + createAttributesKey(primitiveDef.attributes) + ':' + primitiveDef.mode;\n  }\n\n  return geometryKey;\n}\n\nfunction createAttributesKey(attributes) {\n  let attributesKey = '';\n  const keys = Object.keys(attributes).sort();\n\n  for (let i = 0, il = keys.length; i < il; i++) {\n    attributesKey += keys[i] + ':' + attributes[keys[i]] + ';';\n  }\n\n  return attributesKey;\n}\n\nfunction getNormalizedComponentScale(constructor) {\n  // Reference:\n  // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n  switch (constructor) {\n    case Int8Array:\n      return 1 / 127;\n\n    case Uint8Array:\n      return 1 / 255;\n\n    case Int16Array:\n      return 1 / 32767;\n\n    case Uint16Array:\n      return 1 / 65535;\n\n    default:\n      throw new Error('THREE.GLTFLoader: Unsupported normalized accessor component type.');\n  }\n}\n\nfunction getImageURIMimeType(uri) {\n  if (uri.search(/\\.jpe?g($|\\?)/i) > 0 || uri.search(/^data\\:image\\/jpeg/) === 0) return 'image/jpeg';\n  if (uri.search(/\\.webp($|\\?)/i) > 0 || uri.search(/^data\\:image\\/webp/) === 0) return 'image/webp';\n  return 'image/png';\n}\n\nconst _identityMatrix = new Matrix4();\n/* GLTF PARSER */\n\n\nclass GLTFParser {\n  constructor(json = {}, options = {}) {\n    this.json = json;\n    this.extensions = {};\n    this.plugins = {};\n    this.options = options; // loader object cache\n\n    this.cache = new GLTFRegistry(); // associations between Three.js objects and glTF elements\n\n    this.associations = new Map(); // BufferGeometry caching\n\n    this.primitiveCache = {}; // Node cache\n\n    this.nodeCache = {}; // Object3D instance caches\n\n    this.meshCache = {\n      refs: {},\n      uses: {}\n    };\n    this.cameraCache = {\n      refs: {},\n      uses: {}\n    };\n    this.lightCache = {\n      refs: {},\n      uses: {}\n    };\n    this.sourceCache = {};\n    this.textureCache = {}; // Track node names, to ensure no duplicates\n\n    this.nodeNamesUsed = {}; // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n    // expensive work of uploading a texture to the GPU off the main thread.\n\n    let isSafari = false;\n    let isFirefox = false;\n    let firefoxVersion = -1;\n\n    if (typeof navigator !== 'undefined') {\n      isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === true;\n      isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n      firefoxVersion = isFirefox ? navigator.userAgent.match(/Firefox\\/([0-9]+)\\./)[1] : -1;\n    }\n\n    if (typeof createImageBitmap === 'undefined' || isSafari || isFirefox && firefoxVersion < 98) {\n      this.textureLoader = new TextureLoader(this.options.manager);\n    } else {\n      this.textureLoader = new ImageBitmapLoader(this.options.manager);\n    }\n\n    this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n    this.textureLoader.setRequestHeader(this.options.requestHeader);\n    this.fileLoader = new FileLoader(this.options.manager);\n    this.fileLoader.setResponseType('arraybuffer');\n\n    if (this.options.crossOrigin === 'use-credentials') {\n      this.fileLoader.setWithCredentials(true);\n    }\n  }\n\n  setExtensions(extensions) {\n    this.extensions = extensions;\n  }\n\n  setPlugins(plugins) {\n    this.plugins = plugins;\n  }\n\n  parse(onLoad, onError) {\n    const parser = this;\n    const json = this.json;\n    const extensions = this.extensions; // Clear the loader cache\n\n    this.cache.removeAll();\n    this.nodeCache = {}; // Mark the special nodes/meshes in json for efficient parse\n\n    this._invokeAll(function (ext) {\n      return ext._markDefs && ext._markDefs();\n    });\n\n    Promise.all(this._invokeAll(function (ext) {\n      return ext.beforeRoot && ext.beforeRoot();\n    })).then(function () {\n      return Promise.all([parser.getDependencies('scene'), parser.getDependencies('animation'), parser.getDependencies('camera')]);\n    }).then(function (dependencies) {\n      const result = {\n        scene: dependencies[0][json.scene || 0],\n        scenes: dependencies[0],\n        animations: dependencies[1],\n        cameras: dependencies[2],\n        asset: json.asset,\n        parser: parser,\n        userData: {}\n      };\n      addUnknownExtensionsToUserData(extensions, result, json);\n      assignExtrasToUserData(result, json);\n      Promise.all(parser._invokeAll(function (ext) {\n        return ext.afterRoot && ext.afterRoot(result);\n      })).then(function () {\n        onLoad(result);\n      });\n    }).catch(onError);\n  }\n  /**\n   * Marks the special nodes/meshes in json for efficient parse.\n   */\n\n\n  _markDefs() {\n    const nodeDefs = this.json.nodes || [];\n    const skinDefs = this.json.skins || [];\n    const meshDefs = this.json.meshes || []; // Nothing in the node definition indicates whether it is a Bone or an\n    // Object3D. Use the skins' joint references to mark bones.\n\n    for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n      const joints = skinDefs[skinIndex].joints;\n\n      for (let i = 0, il = joints.length; i < il; i++) {\n        nodeDefs[joints[i]].isBone = true;\n      }\n    } // Iterate over all nodes, marking references to shared resources,\n    // as well as skeleton joints.\n\n\n    for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n      const nodeDef = nodeDefs[nodeIndex];\n\n      if (nodeDef.mesh !== undefined) {\n        this._addNodeRef(this.meshCache, nodeDef.mesh); // Nothing in the mesh definition indicates whether it is\n        // a SkinnedMesh or Mesh. Use the node's mesh reference\n        // to mark SkinnedMesh if node has skin.\n\n\n        if (nodeDef.skin !== undefined) {\n          meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n        }\n      }\n\n      if (nodeDef.camera !== undefined) {\n        this._addNodeRef(this.cameraCache, nodeDef.camera);\n      }\n    }\n  }\n  /**\n   * Counts references to shared node / Object3D resources. These resources\n   * can be reused, or \"instantiated\", at multiple nodes in the scene\n   * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n   * be marked. Non-scenegraph resources (like Materials, Geometries, and\n   * Textures) can be reused directly and are not marked here.\n   *\n   * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n   */\n\n\n  _addNodeRef(cache, index) {\n    if (index === undefined) return;\n\n    if (cache.refs[index] === undefined) {\n      cache.refs[index] = cache.uses[index] = 0;\n    }\n\n    cache.refs[index]++;\n  }\n  /** Returns a reference to a shared resource, cloning it if necessary. */\n\n\n  _getNodeRef(cache, index, object) {\n    if (cache.refs[index] <= 1) return object;\n    const ref = object.clone(); // Propagates mappings to the cloned object, prevents mappings on the\n    // original object from being lost.\n\n    const updateMappings = (original, clone) => {\n      const mappings = this.associations.get(original);\n\n      if (mappings != null) {\n        this.associations.set(clone, mappings);\n      }\n\n      for (const [i, child] of original.children.entries()) {\n        updateMappings(child, clone.children[i]);\n      }\n    };\n\n    updateMappings(object, ref);\n    ref.name += '_instance_' + cache.uses[index]++;\n    return ref;\n  }\n\n  _invokeOne(func) {\n    const extensions = Object.values(this.plugins);\n    extensions.push(this);\n\n    for (let i = 0; i < extensions.length; i++) {\n      const result = func(extensions[i]);\n      if (result) return result;\n    }\n\n    return null;\n  }\n\n  _invokeAll(func) {\n    const extensions = Object.values(this.plugins);\n    extensions.unshift(this);\n    const pending = [];\n\n    for (let i = 0; i < extensions.length; i++) {\n      const result = func(extensions[i]);\n      if (result) pending.push(result);\n    }\n\n    return pending;\n  }\n  /**\n   * Requests the specified dependency asynchronously, with caching.\n   * @param {string} type\n   * @param {number} index\n   * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n   */\n\n\n  getDependency(type, index) {\n    const cacheKey = type + ':' + index;\n    let 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._invokeOne(function (ext) {\n            return ext.loadNode && ext.loadNode(index);\n          });\n          break;\n\n        case 'mesh':\n          dependency = this._invokeOne(function (ext) {\n            return ext.loadMesh && ext.loadMesh(index);\n          });\n          break;\n\n        case 'accessor':\n          dependency = this.loadAccessor(index);\n          break;\n\n        case 'bufferView':\n          dependency = this._invokeOne(function (ext) {\n            return ext.loadBufferView && ext.loadBufferView(index);\n          });\n          break;\n\n        case 'buffer':\n          dependency = this.loadBuffer(index);\n          break;\n\n        case 'material':\n          dependency = this._invokeOne(function (ext) {\n            return ext.loadMaterial && ext.loadMaterial(index);\n          });\n          break;\n\n        case 'texture':\n          dependency = this._invokeOne(function (ext) {\n            return ext.loadTexture && ext.loadTexture(index);\n          });\n          break;\n\n        case 'skin':\n          dependency = this.loadSkin(index);\n          break;\n\n        case 'animation':\n          dependency = this._invokeOne(function (ext) {\n            return ext.loadAnimation && ext.loadAnimation(index);\n          });\n          break;\n\n        case 'camera':\n          dependency = this.loadCamera(index);\n          break;\n\n        default:\n          dependency = this._invokeOne(function (ext) {\n            return ext != this && ext.getDependency && ext.getDependency(type, index);\n          });\n\n          if (!dependency) {\n            throw new Error('Unknown type: ' + type);\n          }\n\n          break;\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<Array<Object>>}\n   */\n\n\n  getDependencies(type) {\n    let dependencies = this.cache.get(type);\n\n    if (!dependencies) {\n      const parser = this;\n      const defs = this.json[type + (type === 'mesh' ? 'es' : 's')] || [];\n      dependencies = Promise.all(defs.map(function (def, index) {\n        return parser.getDependency(type, index);\n      }));\n      this.cache.add(type, dependencies);\n    }\n\n    return dependencies;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n   * @param {number} bufferIndex\n   * @return {Promise<ArrayBuffer>}\n   */\n\n\n  loadBuffer(bufferIndex) {\n    const bufferDef = this.json.buffers[bufferIndex];\n    const 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    const options = this.options;\n    return new Promise(function (resolve, reject) {\n      loader.load(LoaderUtils.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<ArrayBuffer>}\n   */\n\n\n  loadBufferView(bufferViewIndex) {\n    const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n    return this.getDependency('buffer', bufferViewDef.buffer).then(function (buffer) {\n      const byteLength = bufferViewDef.byteLength || 0;\n      const 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<BufferAttribute|InterleavedBufferAttribute>}\n   */\n\n\n  loadAccessor(accessorIndex) {\n    const parser = this;\n    const json = this.json;\n    const accessorDef = this.json.accessors[accessorIndex];\n\n    if (accessorDef.bufferView === undefined && accessorDef.sparse === undefined) {\n      const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n      const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n      const normalized = accessorDef.normalized === true;\n      const array = new TypedArray(accessorDef.count * itemSize);\n      return Promise.resolve(new BufferAttribute(array, itemSize, normalized));\n    }\n\n    const 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      const bufferView = bufferViews[0];\n      const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n      const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\n      const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n      const itemBytes = elementBytes * itemSize;\n      const byteOffset = accessorDef.byteOffset || 0;\n      const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[accessorDef.bufferView].byteStride : undefined;\n      const normalized = accessorDef.normalized === true;\n      let array, bufferAttribute; // The buffer is not interleaved if the stride is the item size in bytes.\n\n      if (byteStride && byteStride !== itemBytes) {\n        // Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n        // This makes sure that IBA.count reflects accessor.count properly\n        const ibSlice = Math.floor(byteOffset / byteStride);\n        const ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n        let ib = parser.cache.get(ibCacheKey);\n\n        if (!ib) {\n          array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes); // Integer parameters to IB/IBA are in array elements, not bytes.\n\n          ib = new InterleavedBuffer(array, byteStride / elementBytes);\n          parser.cache.add(ibCacheKey, ib);\n        }\n\n        bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized);\n      } else {\n        if (bufferView === null) {\n          array = new TypedArray(accessorDef.count * itemSize);\n        } else {\n          array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n        }\n\n        bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n      } // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\n\n      if (accessorDef.sparse !== undefined) {\n        const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n        const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n        const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n        const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n        const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n        const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n\n        if (bufferView !== null) {\n          // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n          bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n        }\n\n        for (let i = 0, il = sparseIndices.length; i < il; i++) {\n          const 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<THREE.Texture|null>}\n   */\n\n\n  loadTexture(textureIndex) {\n    const json = this.json;\n    const options = this.options;\n    const textureDef = json.textures[textureIndex];\n    const sourceIndex = textureDef.source;\n    const sourceDef = json.images[sourceIndex];\n    let loader = this.textureLoader;\n\n    if (sourceDef.uri) {\n      const handler = options.manager.getHandler(sourceDef.uri);\n      if (handler !== null) loader = handler;\n    }\n\n    return this.loadTextureImage(textureIndex, sourceIndex, loader);\n  }\n\n  loadTextureImage(textureIndex, sourceIndex, loader) {\n    const parser = this;\n    const json = this.json;\n    const textureDef = json.textures[textureIndex];\n    const sourceDef = json.images[sourceIndex];\n    const cacheKey = (sourceDef.uri || sourceDef.bufferView) + ':' + textureDef.sampler;\n\n    if (this.textureCache[cacheKey]) {\n      // See https://github.com/mrdoob/three.js/issues/21559.\n      return this.textureCache[cacheKey];\n    }\n\n    const promise = this.loadImageSource(sourceIndex, loader).then(function (texture) {\n      texture.flipY = false;\n      texture.name = textureDef.name || sourceDef.name || '';\n\n      if (texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith('data:image/') === false) {\n        texture.name = sourceDef.uri;\n      }\n\n      const samplers = json.samplers || {};\n      const sampler = samplers[textureDef.sampler] || {};\n      texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n      texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n      texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n      texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n      parser.associations.set(texture, {\n        textures: textureIndex\n      });\n      return texture;\n    }).catch(function () {\n      return null;\n    });\n    this.textureCache[cacheKey] = promise;\n    return promise;\n  }\n\n  loadImageSource(sourceIndex, loader) {\n    const parser = this;\n    const json = this.json;\n    const options = this.options;\n\n    if (this.sourceCache[sourceIndex] !== undefined) {\n      return this.sourceCache[sourceIndex].then(texture => texture.clone());\n    }\n\n    const sourceDef = json.images[sourceIndex];\n    const URL = self.URL || self.webkitURL;\n    let sourceURI = sourceDef.uri || '';\n    let isObjectURL = false;\n\n    if (sourceDef.bufferView !== undefined) {\n      // Load binary image data from bufferView, if provided.\n      sourceURI = parser.getDependency('bufferView', sourceDef.bufferView).then(function (bufferView) {\n        isObjectURL = true;\n        const blob = new Blob([bufferView], {\n          type: sourceDef.mimeType\n        });\n        sourceURI = URL.createObjectURL(blob);\n        return sourceURI;\n      });\n    } else if (sourceDef.uri === undefined) {\n      throw new Error('THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView');\n    }\n\n    const promise = Promise.resolve(sourceURI).then(function (sourceURI) {\n      return new Promise(function (resolve, reject) {\n        let onLoad = resolve;\n\n        if (loader.isImageBitmapLoader === true) {\n          onLoad = function (imageBitmap) {\n            const texture = new Texture(imageBitmap);\n            texture.needsUpdate = true;\n            resolve(texture);\n          };\n        }\n\n        loader.load(LoaderUtils.resolveURL(sourceURI, options.path), onLoad, undefined, reject);\n      });\n    }).then(function (texture) {\n      // Clean up resources and configure Texture.\n      if (isObjectURL === true) {\n        URL.revokeObjectURL(sourceURI);\n      }\n\n      texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri);\n      return texture;\n    }).catch(function (error) {\n      console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n      throw error;\n    });\n    this.sourceCache[sourceIndex] = promise;\n    return promise;\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<Texture>}\n   */\n\n\n  assignTexture(materialParams, mapName, mapDef, encoding) {\n    const parser = this;\n    return this.getDependency('texture', mapDef.index).then(function (texture) {\n      if (!texture) return null;\n\n      if (mapDef.texCoord !== undefined && mapDef.texCoord > 0) {\n        texture = texture.clone();\n        texture.channel = mapDef.texCoord;\n      }\n\n      if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n        const transform = mapDef.extensions !== undefined ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : undefined;\n\n        if (transform) {\n          const gltfReference = parser.associations.get(texture);\n          texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n          parser.associations.set(texture, gltfReference);\n        }\n      }\n\n      if (encoding !== undefined) {\n        texture.encoding = encoding;\n      }\n\n      materialParams[mapName] = texture;\n      return texture;\n    });\n  }\n  /**\n   * Assigns final material to a Mesh, Line, or Points instance. The instance\n   * already has a material (generated from the glTF material options alone)\n   * but reuse of the same glTF material may require multiple threejs materials\n   * to accommodate different primitive types, defines, etc. New materials will\n   * be created if necessary, and reused from a cache.\n   * @param  {Object3D} mesh Mesh, Line, or Points instance.\n   */\n\n\n  assignFinalMaterial(mesh) {\n    const geometry = mesh.geometry;\n    let material = mesh.material;\n    const useDerivativeTangents = geometry.attributes.tangent === undefined;\n    const useVertexColors = geometry.attributes.color !== undefined;\n    const useFlatShading = geometry.attributes.normal === undefined;\n\n    if (mesh.isPoints) {\n      const cacheKey = 'PointsMaterial:' + material.uuid;\n      let pointsMaterial = this.cache.get(cacheKey);\n\n      if (!pointsMaterial) {\n        pointsMaterial = new PointsMaterial();\n        Material.prototype.copy.call(pointsMaterial, material);\n        pointsMaterial.color.copy(material.color);\n        pointsMaterial.map = material.map;\n        pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n        this.cache.add(cacheKey, pointsMaterial);\n      }\n\n      material = pointsMaterial;\n    } else if (mesh.isLine) {\n      const cacheKey = 'LineBasicMaterial:' + material.uuid;\n      let lineMaterial = this.cache.get(cacheKey);\n\n      if (!lineMaterial) {\n        lineMaterial = new LineBasicMaterial();\n        Material.prototype.copy.call(lineMaterial, material);\n        lineMaterial.color.copy(material.color);\n        lineMaterial.map = material.map;\n        this.cache.add(cacheKey, lineMaterial);\n      }\n\n      material = lineMaterial;\n    } // Clone the material if it will be modified\n\n\n    if (useDerivativeTangents || useVertexColors || useFlatShading) {\n      let cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n      if (useDerivativeTangents) cacheKey += 'derivative-tangents:';\n      if (useVertexColors) cacheKey += 'vertex-colors:';\n      if (useFlatShading) cacheKey += 'flat-shading:';\n      let cachedMaterial = this.cache.get(cacheKey);\n\n      if (!cachedMaterial) {\n        cachedMaterial = material.clone();\n        if (useVertexColors) cachedMaterial.vertexColors = true;\n        if (useFlatShading) cachedMaterial.flatShading = true;\n\n        if (useDerivativeTangents) {\n          // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n          if (cachedMaterial.normalScale) cachedMaterial.normalScale.y *= -1;\n          if (cachedMaterial.clearcoatNormalScale) cachedMaterial.clearcoatNormalScale.y *= -1;\n        }\n\n        this.cache.add(cacheKey, cachedMaterial);\n        this.associations.set(cachedMaterial, this.associations.get(material));\n      }\n\n      material = cachedMaterial;\n    }\n\n    mesh.material = material;\n  }\n\n  getMaterialType() {\n    return MeshStandardMaterial;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n   * @param {number} materialIndex\n   * @return {Promise<Material>}\n   */\n\n\n  loadMaterial(materialIndex) {\n    const parser = this;\n    const json = this.json;\n    const extensions = this.extensions;\n    const materialDef = json.materials[materialIndex];\n    let materialType;\n    const materialParams = {};\n    const materialExtensions = materialDef.extensions || {};\n    const pending = [];\n\n    if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n      const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n      materialType = kmuExtension.getMaterialType();\n      pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n    } else {\n      // Specification:\n      // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n      const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n      materialParams.color = new Color(1.0, 1.0, 1.0);\n      materialParams.opacity = 1.0;\n\n      if (Array.isArray(metallicRoughness.baseColorFactor)) {\n        const 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, sRGBEncoding));\n      }\n\n      materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n      materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n      if (metallicRoughness.metallicRoughnessTexture !== undefined) {\n        pending.push(parser.assignTexture(materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture));\n        pending.push(parser.assignTexture(materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture));\n      }\n\n      materialType = this._invokeOne(function (ext) {\n        return ext.getMaterialType && ext.getMaterialType(materialIndex);\n      });\n      pending.push(Promise.all(this._invokeAll(function (ext) {\n        return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\n      })));\n    }\n\n    if (materialDef.doubleSided === true) {\n      materialParams.side = DoubleSide;\n    }\n\n    const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n    if (alphaMode === ALPHA_MODES.BLEND) {\n      materialParams.transparent = true; // See: https://github.com/mrdoob/three.js/issues/17706\n\n      materialParams.depthWrite = false;\n    } else {\n      materialParams.transparent = false;\n\n      if (alphaMode === ALPHA_MODES.MASK) {\n        materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n      }\n    }\n\n    if (materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, 'normalMap', materialDef.normalTexture));\n      materialParams.normalScale = new Vector2(1, 1);\n\n      if (materialDef.normalTexture.scale !== undefined) {\n        const scale = materialDef.normalTexture.scale;\n        materialParams.normalScale.set(scale, scale);\n      }\n    }\n\n    if (materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, 'aoMap', materialDef.occlusionTexture));\n\n      if (materialDef.occlusionTexture.strength !== undefined) {\n        materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n      }\n    }\n\n    if (materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial) {\n      materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n    }\n\n    if (materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, 'emissiveMap', materialDef.emissiveTexture, sRGBEncoding));\n    }\n\n    return Promise.all(pending).then(function () {\n      const material = new materialType(materialParams);\n      if (materialDef.name) material.name = materialDef.name;\n      assignExtrasToUserData(material, materialDef);\n      parser.associations.set(material, {\n        materials: materialIndex\n      });\n      if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef);\n      return material;\n    });\n  }\n  /** When Object3D instances are targeted by animation, they need unique names. */\n\n\n  createUniqueName(originalName) {\n    const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || '');\n    let name = sanitizedName;\n\n    for (let i = 1; this.nodeNamesUsed[name]; ++i) {\n      name = sanitizedName + '_' + i;\n    }\n\n    this.nodeNamesUsed[name] = true;\n    return name;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n   *\n   * Creates BufferGeometries from primitives.\n   *\n   * @param {Array<GLTF.Primitive>} primitives\n   * @return {Promise<Array<BufferGeometry>>}\n   */\n\n\n  loadGeometries(primitives) {\n    const parser = this;\n    const extensions = this.extensions;\n    const cache = this.primitiveCache;\n\n    function createDracoPrimitive(primitive) {\n      return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function (geometry) {\n        return addPrimitiveAttributes(geometry, primitive, parser);\n      });\n    }\n\n    const pending = [];\n\n    for (let i = 0, il = primitives.length; i < il; i++) {\n      const primitive = primitives[i];\n      const cacheKey = createPrimitiveKey(primitive); // See if we've already created this geometry\n\n      const cached = cache[cacheKey];\n\n      if (cached) {\n        // Use the cached geometry if it exists\n        pending.push(cached.promise);\n      } else {\n        let geometryPromise;\n\n        if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n          // Use DRACO geometry if available\n          geometryPromise = createDracoPrimitive(primitive);\n        } else {\n          // Otherwise create a new geometry\n          geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n        } // Cache this geometry\n\n\n        cache[cacheKey] = {\n          primitive: primitive,\n          promise: geometryPromise\n        };\n        pending.push(geometryPromise);\n      }\n    }\n\n    return Promise.all(pending);\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n   * @param {number} meshIndex\n   * @return {Promise<Group|Mesh|SkinnedMesh>}\n   */\n\n\n  loadMesh(meshIndex) {\n    const parser = this;\n    const json = this.json;\n    const extensions = this.extensions;\n    const meshDef = json.meshes[meshIndex];\n    const primitives = meshDef.primitives;\n    const pending = [];\n\n    for (let i = 0, il = primitives.length; i < il; i++) {\n      const material = primitives[i].material === undefined ? createDefaultMaterial(this.cache) : this.getDependency('material', primitives[i].material);\n      pending.push(material);\n    }\n\n    pending.push(parser.loadGeometries(primitives));\n    return Promise.all(pending).then(function (results) {\n      const materials = results.slice(0, results.length - 1);\n      const geometries = results[results.length - 1];\n      const meshes = [];\n\n      for (let i = 0, il = geometries.length; i < il; i++) {\n        const geometry = geometries[i];\n        const primitive = primitives[i]; // 1. create Mesh\n\n        let mesh;\n        const material = materials[i];\n\n        if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === undefined) {\n          // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n          mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material);\n\n          if (mesh.isSkinnedMesh === true) {\n            // normalize skin weights to fix malformed assets (see #15319)\n            mesh.normalizeSkinWeights();\n          }\n\n          if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n            mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n          } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n            mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n          }\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n          mesh = new LineSegments(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n          mesh = new Line(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n          mesh = new LineLoop(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n          mesh = new Points(geometry, material);\n        } else {\n          throw new Error('THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode);\n        }\n\n        if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n          updateMorphTargets(mesh, meshDef);\n        }\n\n        mesh.name = parser.createUniqueName(meshDef.name || 'mesh_' + meshIndex);\n        assignExtrasToUserData(mesh, meshDef);\n        if (primitive.extensions) addUnknownExtensionsToUserData(extensions, mesh, primitive);\n        parser.assignFinalMaterial(mesh);\n        meshes.push(mesh);\n      }\n\n      for (let i = 0, il = meshes.length; i < il; i++) {\n        parser.associations.set(meshes[i], {\n          meshes: meshIndex,\n          primitives: i\n        });\n      }\n\n      if (meshes.length === 1) {\n        return meshes[0];\n      }\n\n      const group = new Group();\n      parser.associations.set(group, {\n        meshes: meshIndex\n      });\n\n      for (let i = 0, il = meshes.length; i < il; i++) {\n        group.add(meshes[i]);\n      }\n\n      return group;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n   * @param {number} cameraIndex\n   * @return {Promise<THREE.Camera>}\n   */\n\n\n  loadCamera(cameraIndex) {\n    let camera;\n    const cameraDef = this.json.cameras[cameraIndex];\n    const params = cameraDef[cameraDef.type];\n\n    if (!params) {\n      console.warn('THREE.GLTFLoader: Missing camera parameters.');\n      return;\n    }\n\n    if (cameraDef.type === 'perspective') {\n      camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n    } else if (cameraDef.type === 'orthographic') {\n      camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n    }\n\n    if (cameraDef.name) camera.name = this.createUniqueName(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<Skeleton>}\n   */\n\n\n  loadSkin(skinIndex) {\n    const skinDef = this.json.skins[skinIndex];\n    const pending = [];\n\n    for (let i = 0, il = skinDef.joints.length; i < il; i++) {\n      pending.push(this._loadNodeShallow(skinDef.joints[i]));\n    }\n\n    if (skinDef.inverseBindMatrices !== undefined) {\n      pending.push(this.getDependency('accessor', skinDef.inverseBindMatrices));\n    } else {\n      pending.push(null);\n    }\n\n    return Promise.all(pending).then(function (results) {\n      const inverseBindMatrices = results.pop();\n      const jointNodes = results; // Note that bones (joint nodes) may or may not be in the\n      // scene graph at this time.\n\n      const bones = [];\n      const boneInverses = [];\n\n      for (let i = 0, il = jointNodes.length; i < il; i++) {\n        const jointNode = jointNodes[i];\n\n        if (jointNode) {\n          bones.push(jointNode);\n          const mat = new Matrix4();\n\n          if (inverseBindMatrices !== null) {\n            mat.fromArray(inverseBindMatrices.array, i * 16);\n          }\n\n          boneInverses.push(mat);\n        } else {\n          console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinDef.joints[i]);\n        }\n      }\n\n      return new Skeleton(bones, boneInverses);\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n   * @param {number} animationIndex\n   * @return {Promise<AnimationClip>}\n   */\n\n\n  loadAnimation(animationIndex) {\n    const json = this.json;\n    const animationDef = json.animations[animationIndex];\n    const animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n    const pendingNodes = [];\n    const pendingInputAccessors = [];\n    const pendingOutputAccessors = [];\n    const pendingSamplers = [];\n    const pendingTargets = [];\n\n    for (let i = 0, il = animationDef.channels.length; i < il; i++) {\n      const channel = animationDef.channels[i];\n      const sampler = animationDef.samplers[channel.sampler];\n      const target = channel.target;\n      const name = target.node;\n      const input = animationDef.parameters !== undefined ? animationDef.parameters[sampler.input] : sampler.input;\n      const output = animationDef.parameters !== undefined ? animationDef.parameters[sampler.output] : sampler.output;\n      if (target.node === undefined) continue;\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      const nodes = dependencies[0];\n      const inputAccessors = dependencies[1];\n      const outputAccessors = dependencies[2];\n      const samplers = dependencies[3];\n      const targets = dependencies[4];\n      const tracks = [];\n\n      for (let i = 0, il = nodes.length; i < il; i++) {\n        const node = nodes[i];\n        const inputAccessor = inputAccessors[i];\n        const outputAccessor = outputAccessors[i];\n        const sampler = samplers[i];\n        const target = targets[i];\n        if (node === undefined) continue;\n        node.updateMatrix();\n        let TypedKeyframeTrack;\n\n        switch (PATH_PROPERTIES[target.path]) {\n          case PATH_PROPERTIES.weights:\n            TypedKeyframeTrack = NumberKeyframeTrack;\n            break;\n\n          case PATH_PROPERTIES.rotation:\n            TypedKeyframeTrack = QuaternionKeyframeTrack;\n            break;\n\n          case PATH_PROPERTIES.position:\n          case PATH_PROPERTIES.scale:\n          default:\n            TypedKeyframeTrack = VectorKeyframeTrack;\n            break;\n        }\n\n        const targetName = node.name ? node.name : node.uuid;\n        const interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\n        const targetNames = [];\n\n        if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n          node.traverse(function (object) {\n            if (object.morphTargetInfluences) {\n              targetNames.push(object.name ? object.name : object.uuid);\n            }\n          });\n        } else {\n          targetNames.push(targetName);\n        }\n\n        let outputArray = outputAccessor.array;\n\n        if (outputAccessor.normalized) {\n          const scale = getNormalizedComponentScale(outputArray.constructor);\n          const scaled = new Float32Array(outputArray.length);\n\n          for (let j = 0, jl = outputArray.length; j < jl; j++) {\n            scaled[j] = outputArray[j] * scale;\n          }\n\n          outputArray = scaled;\n        }\n\n        for (let j = 0, jl = targetNames.length; j < jl; j++) {\n          const track = new TypedKeyframeTrack(targetNames[j] + '.' + PATH_PROPERTIES[target.path], inputAccessor.array, outputArray, interpolation); // Override interpolation with custom factory method.\n\n          if (sampler.interpolation === 'CUBICSPLINE') {\n            track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\n              // A CUBICSPLINE keyframe in glTF has three output values for each input value,\n              // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n              // must be divided by three to get the interpolant's sampleSize argument.\n              const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n              return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n            }; // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\n\n            track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n          }\n\n          tracks.push(track);\n        }\n      }\n\n      return new AnimationClip(animationName, undefined, tracks);\n    });\n  }\n\n  createNodeMesh(nodeIndex) {\n    const json = this.json;\n    const parser = this;\n    const nodeDef = json.nodes[nodeIndex];\n    if (nodeDef.mesh === undefined) return null;\n    return parser.getDependency('mesh', nodeDef.mesh).then(function (mesh) {\n      const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh); // if weights are provided on the node, override weights on the mesh.\n\n\n      if (nodeDef.weights !== undefined) {\n        node.traverse(function (o) {\n          if (!o.isMesh) return;\n\n          for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\n            o.morphTargetInfluences[i] = nodeDef.weights[i];\n          }\n        });\n      }\n\n      return node;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n   * @param {number} nodeIndex\n   * @return {Promise<Object3D>}\n   */\n\n\n  loadNode(nodeIndex) {\n    const json = this.json;\n    const parser = this;\n    const nodeDef = json.nodes[nodeIndex];\n\n    const nodePending = parser._loadNodeShallow(nodeIndex);\n\n    const childPending = [];\n    const childrenDef = nodeDef.children || [];\n\n    for (let i = 0, il = childrenDef.length; i < il; i++) {\n      childPending.push(parser.getDependency('node', childrenDef[i]));\n    }\n\n    const skeletonPending = nodeDef.skin === undefined ? Promise.resolve(null) : parser.getDependency('skin', nodeDef.skin);\n    return Promise.all([nodePending, Promise.all(childPending), skeletonPending]).then(function (results) {\n      const node = results[0];\n      const children = results[1];\n      const skeleton = results[2];\n\n      if (skeleton !== null) {\n        // This full traverse should be fine because\n        // child glTF nodes have not been added to this node yet.\n        node.traverse(function (mesh) {\n          if (!mesh.isSkinnedMesh) return;\n          mesh.bind(skeleton, _identityMatrix);\n        });\n      }\n\n      for (let i = 0, il = children.length; i < il; i++) {\n        node.add(children[i]);\n      }\n\n      return node;\n    });\n  } // ._loadNodeShallow() parses a single node.\n  // skin and child nodes are created and added in .loadNode() (no '_' prefix).\n\n\n  _loadNodeShallow(nodeIndex) {\n    const json = this.json;\n    const extensions = this.extensions;\n    const parser = this; // This method is called from .loadNode() and .loadSkin().\n    // Cache a node to avoid duplication.\n\n    if (this.nodeCache[nodeIndex] !== undefined) {\n      return this.nodeCache[nodeIndex];\n    }\n\n    const nodeDef = json.nodes[nodeIndex]; // reserve node's name before its dependencies, so the root has the intended name.\n\n    const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : '';\n    const pending = [];\n\n    const meshPromise = parser._invokeOne(function (ext) {\n      return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n    });\n\n    if (meshPromise) {\n      pending.push(meshPromise);\n    }\n\n    if (nodeDef.camera !== undefined) {\n      pending.push(parser.getDependency('camera', nodeDef.camera).then(function (camera) {\n        return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n      }));\n    }\n\n    parser._invokeAll(function (ext) {\n      return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);\n    }).forEach(function (promise) {\n      pending.push(promise);\n    });\n\n    this.nodeCache[nodeIndex] = Promise.all(pending).then(function (objects) {\n      let node; // .isBone isn't in glTF spec. See ._markDefs\n\n      if (nodeDef.isBone === true) {\n        node = new Bone();\n      } else if (objects.length > 1) {\n        node = new Group();\n      } else if (objects.length === 1) {\n        node = objects[0];\n      } else {\n        node = new Object3D();\n      }\n\n      if (node !== objects[0]) {\n        for (let i = 0, il = objects.length; i < il; i++) {\n          node.add(objects[i]);\n        }\n      }\n\n      if (nodeDef.name) {\n        node.userData.name = nodeDef.name;\n        node.name = nodeName;\n      }\n\n      assignExtrasToUserData(node, nodeDef);\n      if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef);\n\n      if (nodeDef.matrix !== undefined) {\n        const matrix = new Matrix4();\n        matrix.fromArray(nodeDef.matrix);\n        node.applyMatrix4(matrix);\n      } else {\n        if (nodeDef.translation !== undefined) {\n          node.position.fromArray(nodeDef.translation);\n        }\n\n        if (nodeDef.rotation !== undefined) {\n          node.quaternion.fromArray(nodeDef.rotation);\n        }\n\n        if (nodeDef.scale !== undefined) {\n          node.scale.fromArray(nodeDef.scale);\n        }\n      }\n\n      if (!parser.associations.has(node)) {\n        parser.associations.set(node, {});\n      }\n\n      parser.associations.get(node).nodes = nodeIndex;\n      return node;\n    });\n    return this.nodeCache[nodeIndex];\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n   * @param {number} sceneIndex\n   * @return {Promise<Group>}\n   */\n\n\n  loadScene(sceneIndex) {\n    const extensions = this.extensions;\n    const sceneDef = this.json.scenes[sceneIndex];\n    const parser = this; // Loader returns Group, not Scene.\n    // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\n    const scene = new Group();\n    if (sceneDef.name) scene.name = parser.createUniqueName(sceneDef.name);\n    assignExtrasToUserData(scene, sceneDef);\n    if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n    const nodeIds = sceneDef.nodes || [];\n    const pending = [];\n\n    for (let i = 0, il = nodeIds.length; i < il; i++) {\n      pending.push(parser.getDependency('node', nodeIds[i]));\n    }\n\n    return Promise.all(pending).then(function (nodes) {\n      for (let i = 0, il = nodes.length; i < il; i++) {\n        scene.add(nodes[i]);\n      } // Removes dangling associations, associations that reference a node that\n      // didn't make it into the scene.\n\n\n      const reduceAssociations = node => {\n        const reducedAssociations = new Map();\n\n        for (const [key, value] of parser.associations) {\n          if (key instanceof Material || key instanceof Texture) {\n            reducedAssociations.set(key, value);\n          }\n        }\n\n        node.traverse(node => {\n          const mappings = parser.associations.get(node);\n\n          if (mappings != null) {\n            reducedAssociations.set(node, mappings);\n          }\n        });\n        return reducedAssociations;\n      };\n\n      parser.associations = reduceAssociations(scene);\n      return scene;\n    });\n  }\n\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\n\n\nfunction computeBounds(geometry, primitiveDef, parser) {\n  const attributes = primitiveDef.attributes;\n  const box = new Box3();\n\n  if (attributes.POSITION !== undefined) {\n    const accessor = parser.json.accessors[attributes.POSITION];\n    const min = accessor.min;\n    const max = accessor.max; // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n    if (min !== undefined && max !== undefined) {\n      box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max[0], max[1], max[2]));\n\n      if (accessor.normalized) {\n        const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n        box.min.multiplyScalar(boxScale);\n        box.max.multiplyScalar(boxScale);\n      }\n    } else {\n      console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\n      return;\n    }\n  } else {\n    return;\n  }\n\n  const targets = primitiveDef.targets;\n\n  if (targets !== undefined) {\n    const maxDisplacement = new Vector3();\n    const vector = new Vector3();\n\n    for (let i = 0, il = targets.length; i < il; i++) {\n      const target = targets[i];\n\n      if (target.POSITION !== undefined) {\n        const accessor = parser.json.accessors[target.POSITION];\n        const min = accessor.min;\n        const max = accessor.max; // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n        if (min !== undefined && max !== undefined) {\n          // we need to get max of absolute components because target weight is [-1,1]\n          vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\n          vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\n          vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2])));\n\n          if (accessor.normalized) {\n            const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n            vector.multiplyScalar(boxScale);\n          } // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n          // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n          // are used to implement key-frame animations and as such only two are active at a time - this results in very large\n          // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\n\n          maxDisplacement.max(vector);\n        } else {\n          console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\n        }\n      }\n    } // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\n\n    box.expandByVector(maxDisplacement);\n  }\n\n  geometry.boundingBox = box;\n  const sphere = new Sphere();\n  box.getCenter(sphere.center);\n  sphere.radius = box.min.distanceTo(box.max) / 2;\n  geometry.boundingSphere = sphere;\n}\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\n */\n\n\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n  const attributes = primitiveDef.attributes;\n  const pending = [];\n\n  function assignAttributeAccessor(accessorIndex, attributeName) {\n    return parser.getDependency('accessor', accessorIndex).then(function (accessor) {\n      geometry.setAttribute(attributeName, accessor);\n    });\n  }\n\n  for (const gltfAttributeName in attributes) {\n    const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); // Skip attributes already provided by e.g. Draco extension.\n\n    if (threeAttributeName in geometry.attributes) continue;\n    pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n  }\n\n  if (primitiveDef.indices !== undefined && !geometry.index) {\n    const accessor = parser.getDependency('accessor', primitiveDef.indices).then(function (accessor) {\n      geometry.setIndex(accessor);\n    });\n    pending.push(accessor);\n  }\n\n  assignExtrasToUserData(geometry, primitiveDef);\n  computeBounds(geometry, primitiveDef, parser);\n  return Promise.all(pending).then(function () {\n    return primitiveDef.targets !== undefined ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n  });\n}\n\nexport { GLTFLoader };\n","import React from 'react';\n\nconst WrapperContext = React.createContext(null);\nconst useWrapperContext = () => React.useContext(WrapperContext);\n\nexport { WrapperContext, useWrapperContext };\n","export const deg2rad = (degrees) => degrees * (Math.PI / 180);\n\nexport const rad2deg = (radians) => radians * (180 / Math.PI);\n\nexport const cylindrical2cartesian = (polar, height, r, earthRadius = 2) => {\n  const x = (r + earthRadius) * Math.sin(polar);\n  const y = height;\n  const z = (r + earthRadius) * Math.cos(polar);\n\n  return { x, y, z };\n};\n\nexport const spherical2cartesian = (phi, theta, altitude, earthRadius = 2, returnArray = false) => {\n  const rho = altitude + earthRadius;\n\n  const x = rho * Math.sin(theta) * Math.cos(phi);\n  const y = rho * Math.sin(theta) * Math.sin(phi);\n  const z = rho * Math.cos(theta);\n\n  if (returnArray === true) {\n    return [x, y, z];\n  }\n  return { x, y, z };\n};\n\nexport const cartesian2spherical = (x, y, z) => {\n  const rho = Math.sqrt(x * x + y * y + z * z);\n\n  const phi = Math.atan2(y, x);\n  const theta = Math.acos(z / rho);\n\n  return { rho, phi, theta };\n};\n\nexport const kmToArcLength = (lengthKm) => {\n  const earthCircumference = 40075;\n  const radiansPerKm = (2 * Math.PI) / earthCircumference;\n  return lengthKm * radiansPerKm;\n};\n\nexport const kmToDistance = (lengthKm, earthRadiusUnits = 2) => {\n  const earthRadius = 6371;\n  const unitsPerKm = earthRadiusUnits / earthRadius;\n  return lengthKm * unitsPerKm;\n};\n\nexport const sphericalRotation = (position, axis, rotationRadians) => {\n  let [x, y, z] = position;\n\n  if (axis === 'x') {\n    // x-axis rotation\n    const originalY = y;\n    y = originalY * Math.cos(rotationRadians) - z * Math.sin(rotationRadians);\n    z = originalY * Math.sin(rotationRadians) + z * Math.cos(rotationRadians);\n  } else if (axis === 'y') {\n    // y-axis rotation\n    const originalZ = z;\n    z = originalZ * Math.cos(rotationRadians) - x * Math.sin(rotationRadians);\n    x = originalZ * Math.sin(rotationRadians) + x * Math.cos(rotationRadians);\n  } else if (axis === 'z') {\n    // z-axis rotation\n    const originalX = x;\n    x = originalX * Math.cos(rotationRadians) - y * Math.sin(rotationRadians);\n    y = originalX * Math.sin(rotationRadians) + y * Math.cos(rotationRadians);\n  }\n\n  return [x, y, z];\n};\n\nexport const getOrbitPath = ({\n  originPoint,\n  radiusChange,\n  inclination,\n  progress,\n  progressCollisionPoint = 0,\n}) => {\n  let { rho, phi, theta } = originPoint;\n\n  rho += radiusChange * Math.max(0, progress - progressCollisionPoint);\n  theta += progress;\n  phi = inclination;\n\n  const { x, y, z } = spherical2cartesian(phi, theta, rho, 0);\n\n  return [x, y, z];\n};\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (process.env.NODE_ENV !== 'production') {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode && tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","var e=\"-ms-\";var r=\"-moz-\";var a=\"-webkit-\";var n=\"comm\";var c=\"rule\";var s=\"decl\";var t=\"@page\";var u=\"@media\";var i=\"@import\";var f=\"@charset\";var o=\"@viewport\";var l=\"@supports\";var v=\"@document\";var p=\"@namespace\";var h=\"@keyframes\";var b=\"@font-face\";var w=\"@counter-style\";var d=\"@font-feature-values\";var $=\"@layer\";var g=Math.abs;var k=String.fromCharCode;var m=Object.assign;function x(e,r){return O(e,0)^45?(((r<<2^O(e,0))<<2^O(e,1))<<2^O(e,2))<<2^O(e,3):0}function y(e){return e.trim()}function j(e,r){return(e=r.exec(e))?e[0]:e}function z(e,r,a){return e.replace(r,a)}function C(e,r){return e.indexOf(r)}function O(e,r){return e.charCodeAt(r)|0}function A(e,r,a){return e.slice(r,a)}function M(e){return e.length}function S(e){return e.length}function q(e,r){return r.push(e),e}function B(e,r){return e.map(r).join(\"\")}var D=1;var E=1;var F=0;var G=0;var H=0;var I=\"\";function J(e,r,a,n,c,s,t){return{value:e,root:r,parent:a,type:n,props:c,children:s,line:D,column:E,length:t,return:\"\"}}function K(e,r){return m(J(\"\",null,null,\"\",null,null,0),e,{length:-e.length},r)}function L(){return H}function N(){H=G>0?O(I,--G):0;if(E--,H===10)E=1,D--;return H}function P(){H=G<F?O(I,G++):0;if(E++,H===10)E=1,D++;return H}function Q(){return O(I,G)}function R(){return G}function T(e,r){return A(I,e,r)}function U(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function V(e){return D=E=1,F=M(I=e),G=0,[]}function W(e){return I=\"\",e}function X(e){return y(T(G-1,re(e===91?e+2:e===40?e+1:e)))}function Y(e){return W(_(V(e)))}function Z(e){while(H=Q())if(H<33)P();else break;return U(e)>2||U(H)>3?\"\":\" \"}function _(e){while(P())switch(U(H)){case 0:q(ne(G-1),e);break;case 2:q(X(H),e);break;default:q(k(H),e)}return e}function ee(e,r){while(--r&&P())if(H<48||H>102||H>57&&H<65||H>70&&H<97)break;return T(e,R()+(r<6&&Q()==32&&P()==32))}function re(e){while(P())switch(H){case e:return G;case 34:case 39:if(e!==34&&e!==39)re(H);break;case 40:if(e===41)re(e);break;case 92:P();break}return G}function ae(e,r){while(P())if(e+H===47+10)break;else if(e+H===42+42&&Q()===47)break;return\"/*\"+T(r,G-1)+\"*\"+k(e===47?e:P())}function ne(e){while(!U(Q()))P();return T(e,G)}function ce(e){return W(se(\"\",null,null,null,[\"\"],e=V(e),0,[0],e))}function se(e,r,a,n,c,s,t,u,i){var f=0;var o=0;var l=t;var v=0;var p=0;var h=0;var b=1;var w=1;var d=1;var $=0;var g=\"\";var m=c;var x=s;var y=n;var j=g;while(w)switch(h=$,$=P()){case 40:if(h!=108&&O(j,l-1)==58){if(C(j+=z(X($),\"&\",\"&\\f\"),\"&\\f\")!=-1)d=-1;break}case 34:case 39:case 91:j+=X($);break;case 9:case 10:case 13:case 32:j+=Z(h);break;case 92:j+=ee(R()-1,7);continue;case 47:switch(Q()){case 42:case 47:q(ue(ae(P(),R()),r,a),i);break;default:j+=\"/\"}break;case 123*b:u[f++]=M(j)*d;case 125*b:case 59:case 0:switch($){case 0:case 125:w=0;case 59+o:if(d==-1)j=z(j,/\\f/g,\"\");if(p>0&&M(j)-l)q(p>32?ie(j+\";\",n,a,l-1):ie(z(j,\" \",\"\")+\";\",n,a,l-2),i);break;case 59:j+=\";\";default:q(y=te(j,r,a,f,o,c,u,g,m=[],x=[],l),s);if($===123)if(o===0)se(j,r,y,y,m,s,l,u,x);else switch(v===99&&O(j,3)===110?100:v){case 100:case 108:case 109:case 115:se(e,y,y,n&&q(te(e,y,y,0,0,c,u,g,c,m=[],l),x),c,x,l,u,n?m:x);break;default:se(j,y,y,y,[\"\"],x,0,u,x)}}f=o=p=0,b=d=1,g=j=\"\",l=t;break;case 58:l=1+M(j),p=h;default:if(b<1)if($==123)--b;else if($==125&&b++==0&&N()==125)continue;switch(j+=k($),$*b){case 38:d=o>0?1:(j+=\"\\f\",-1);break;case 44:u[f++]=(M(j)-1)*d,d=1;break;case 64:if(Q()===45)j+=X(P());v=Q(),o=l=M(g=j+=ne(R())),$++;break;case 45:if(h===45&&M(j)==2)b=0}}return s}function te(e,r,a,n,s,t,u,i,f,o,l){var v=s-1;var p=s===0?t:[\"\"];var h=S(p);for(var b=0,w=0,d=0;b<n;++b)for(var $=0,k=A(e,v+1,v=g(w=u[b])),m=e;$<h;++$)if(m=y(w>0?p[$]+\" \"+k:z(k,/&\\f/g,p[$])))f[d++]=m;return J(e,r,a,s===0?c:i,f,o,l)}function ue(e,r,a){return J(e,r,a,n,k(L()),A(e,2,-2),0)}function ie(e,r,a,n){return J(e,r,a,s,A(e,0,n),A(e,n+1,-1),n)}function fe(n,c,s){switch(x(n,c)){case 5103:return a+\"print-\"+n+n;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return a+n+n;case 4789:return r+n+n;case 5349:case 4246:case 4810:case 6968:case 2756:return a+n+r+n+e+n+n;case 5936:switch(O(n,c+11)){case 114:return a+n+e+z(n,/[svh]\\w+-[tblr]{2}/,\"tb\")+n;case 108:return a+n+e+z(n,/[svh]\\w+-[tblr]{2}/,\"tb-rl\")+n;case 45:return a+n+e+z(n,/[svh]\\w+-[tblr]{2}/,\"lr\")+n}case 6828:case 4268:case 2903:return a+n+e+n+n;case 6165:return a+n+e+\"flex-\"+n+n;case 5187:return a+n+z(n,/(\\w+).+(:[^]+)/,a+\"box-$1$2\"+e+\"flex-$1$2\")+n;case 5443:return a+n+e+\"flex-item-\"+z(n,/flex-|-self/g,\"\")+(!j(n,/flex-|baseline/)?e+\"grid-row-\"+z(n,/flex-|-self/g,\"\"):\"\")+n;case 4675:return a+n+e+\"flex-line-pack\"+z(n,/align-content|flex-|-self/g,\"\")+n;case 5548:return a+n+e+z(n,\"shrink\",\"negative\")+n;case 5292:return a+n+e+z(n,\"basis\",\"preferred-size\")+n;case 6060:return a+\"box-\"+z(n,\"-grow\",\"\")+a+n+e+z(n,\"grow\",\"positive\")+n;case 4554:return a+z(n,/([^-])(transform)/g,\"$1\"+a+\"$2\")+n;case 6187:return z(z(z(n,/(zoom-|grab)/,a+\"$1\"),/(image-set)/,a+\"$1\"),n,\"\")+n;case 5495:case 3959:return z(n,/(image-set\\([^]*)/,a+\"$1\"+\"$`$1\");case 4968:return z(z(n,/(.+:)(flex-)?(.*)/,a+\"box-pack:$3\"+e+\"flex-pack:$3\"),/s.+-b[^;]+/,\"justify\")+a+n+n;case 4200:if(!j(n,/flex-|baseline/))return e+\"grid-column-align\"+A(n,c)+n;break;case 2592:case 3360:return e+z(n,\"template-\",\"\")+n;case 4384:case 3616:if(s&&s.some((function(e,r){return c=r,j(e.props,/grid-\\w+-end/)}))){return~C(n+(s=s[c].value),\"span\")?n:e+z(n,\"-start\",\"\")+n+e+\"grid-row-span:\"+(~C(s,\"span\")?j(s,/\\d+/):+j(s,/\\d+/)-+j(n,/\\d+/))+\";\"}return e+z(n,\"-start\",\"\")+n;case 4896:case 4128:return s&&s.some((function(e){return j(e.props,/grid-\\w+-start/)}))?n:e+z(z(n,\"-end\",\"-span\"),\"span \",\"\")+n;case 4095:case 3583:case 4068:case 2532:return z(n,/(.+)-inline(.+)/,a+\"$1$2\")+n;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(M(n)-1-c>6)switch(O(n,c+1)){case 109:if(O(n,c+4)!==45)break;case 102:return z(n,/(.+:)(.+)-([^]+)/,\"$1\"+a+\"$2-$3\"+\"$1\"+r+(O(n,c+3)==108?\"$3\":\"$2-$3\"))+n;case 115:return~C(n,\"stretch\")?fe(z(n,\"stretch\",\"fill-available\"),c,s)+n:n}break;case 5152:case 5920:return z(n,/(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/,(function(r,a,c,s,t,u,i){return e+a+\":\"+c+i+(s?e+a+\"-span:\"+(t?u:+u-+c)+i:\"\")+n}));case 4949:if(O(n,c+6)===121)return z(n,\":\",\":\"+a)+n;break;case 6444:switch(O(n,O(n,14)===45?18:11)){case 120:return z(n,/(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/,\"$1\"+a+(O(n,14)===45?\"inline-\":\"\")+\"box$3\"+\"$1\"+a+\"$2$3\"+\"$1\"+e+\"$2box$3\")+n;case 100:return z(n,\":\",\":\"+e)+n}break;case 5719:case 2647:case 2135:case 3927:case 2391:return z(n,\"scroll-\",\"scroll-snap-\")+n}return n}function oe(e,r){var a=\"\";var n=S(e);for(var c=0;c<n;c++)a+=r(e[c],c,e,r)||\"\";return a}function le(e,r,a,t){switch(e.type){case $:if(e.children.length)break;case i:case s:return e.return=e.return||e.value;case n:return\"\";case h:return e.return=e.value+\"{\"+oe(e.children,t)+\"}\";case c:e.value=e.props.join(\",\")}return M(a=oe(e.children,t))?e.return=e.value+\"{\"+a+\"}\":\"\"}function ve(e){var r=S(e);return function(a,n,c,s){var t=\"\";for(var u=0;u<r;u++)t+=e[u](a,n,c,s)||\"\";return t}}function pe(e){return function(r){if(!r.root)if(r=r.return)e(r)}}function he(n,t,u,i){if(n.length>-1)if(!n.return)switch(n.type){case s:n.return=fe(n.value,n.length,u);return;case h:return oe([K(n,{value:z(n.value,\"@\",\"@\"+a)})],i);case c:if(n.length)return B(n.props,(function(c){switch(j(c,/(::plac\\w+|:read-\\w+)/)){case\":read-only\":case\":read-write\":return oe([K(n,{props:[z(c,/:(read-\\w+)/,\":\"+r+\"$1\")]})],i);case\"::placeholder\":return oe([K(n,{props:[z(c,/:(plac\\w+)/,\":\"+a+\"input-$1\")]}),K(n,{props:[z(c,/:(plac\\w+)/,\":\"+r+\"$1\")]}),K(n,{props:[z(c,/:(plac\\w+)/,e+\"input-$1\")]})],i)}return\"\"}))}}function be(e){switch(e.type){case c:e.props=e.props.map((function(r){return B(Y(r),(function(r,a,n){switch(O(r,0)){case 12:return A(r,1,M(r));case 0:case 40:case 43:case 62:case 126:return r;case 58:if(n[++a]===\"global\")n[a]=\"\",n[++a]=\"\\f\"+A(n[a],a=1,-1);case 32:return a===1?\"\":r;default:switch(a){case 0:e=r;return S(n)>1?\"\":r;case a=S(n)-1:case 2:return a===2?r+e+e:r+e;default:return r}}}))}))}}export{f as CHARSET,n as COMMENT,w as COUNTER_STYLE,s as DECLARATION,v as DOCUMENT,b as FONT_FACE,d as FONT_FEATURE_VALUES,i as IMPORT,h as KEYFRAMES,$ as LAYER,u as MEDIA,r as MOZ,e as MS,p as NAMESPACE,t as PAGE,c as RULESET,l as SUPPORTS,o as VIEWPORT,a as WEBKIT,g as abs,V as alloc,q as append,m as assign,R as caret,L as char,H as character,I as characters,O as charat,E as column,B as combine,ue as comment,ae as commenter,ce as compile,K as copy,W as dealloc,ie as declaration,X as delimit,re as delimiter,ee as escaping,k as from,x as hash,ne as identifier,C as indexof,F as length,D as line,j as match,ve as middleware,be as namespace,P as next,J as node,se as parse,Q as peek,G as position,fe as prefix,he as prefixer,N as prev,z as replace,te as ruleset,pe as rulesheet,oe as serialize,S as sizeof,T as slice,le as stringify,M as strlen,A as substr,U as token,Y as tokenize,_ as tokenizer,y as trim,Z as whitespace};\n//# sourceMappingURL=stylis.mjs.map\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule' || cache.compat) return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses) {\n      var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n      //\n      // considering this input:\n      // .a {\n      //   .b /* comm */ {}\n      //   color: hotpink;\n      // }\n      // we get output corresponding to this:\n      // .a {\n      //   & {\n      //     /* comm */\n      //     color: hotpink;\n      //   }\n      //   .b {}\n      // }\n\n      var commentContainer = isNested ? element.parent.children : // global rule at the root level\n      children;\n\n      for (var i = commentContainer.length - 1; i >= 0; i--) {\n        var node = commentContainer[i];\n\n        if (node.line < element.line) {\n          break;\n        } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n        // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n        // this will also match inputs like this:\n        // .a {\n        //   /* comm */\n        //   .b {}\n        // }\n        //\n        // but that is fine\n        //\n        // it would be the easiest to change the placement of the comment to be the first child of the rule:\n        // .a {\n        //   .b { /* comm */ }\n        // }\n        // with such inputs we wouldn't have to search for the comment at all\n        // TODO: consider changing this comment placement in the next major version\n\n\n        if (node.column < element.column) {\n          if (isIgnoringComment(node)) {\n            return;\n          }\n\n          break;\n        }\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (process.env.NODE_ENV !== 'production' && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (process.env.NODE_ENV !== 'production') {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className] + \";\");\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false ) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error(noComponentSelectorMessage);\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error(noComponentSelectorMessage);\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nif (!isBrowser) {\n  withEmotionCache = function withEmotionCache(func) {\n    return function (props) {\n      var cache = useContext(EmotionCacheContext);\n\n      if (cache === null) {\n        // yes, we're potentially creating this on every render\n        // it doesn't actually matter though since it's only on the server\n        // so there will only every be a single render\n        // that could change in the future because of suspense and etc. but for now,\n        // this works and i don't want to optimise for a future thing that we aren't sure about\n        cache = createCache({\n          key: 'css'\n        });\n        return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n          value: cache\n        }, func(props, cache));\n      } else {\n        return func(props, cache);\n      }\n    };\n  };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/React.forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var WrappedComponent = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-c39617d8.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.0\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.2\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return React.createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n  if (!isBrowser$1) {\n    var _ref;\n\n    var serializedNames = serialized.name;\n    var serializedStyles = serialized.styles;\n    var next = serialized.next;\n\n    while (next !== undefined) {\n      serializedNames += ' ' + next.name;\n      serializedStyles += next.styles;\n      next = next.next;\n    }\n\n    var shouldCache = cache.compat === true;\n    var rules = cache.insert(\"\", {\n      name: serializedNames,\n      styles: serializedStyles\n    }, cache.sheet, shouldCache);\n\n    if (shouldCache) {\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n      __html: rules\n    }, _ref.nonce = cache.sheet.nonce, _ref));\n  } // yes, i know these hooks are used conditionally\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n\n  var css = function css() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('css can only be used during render');\n    }\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n  var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n  if (isBrowser && !isTestEnv) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import React, { useContext, useEffect } from 'react';\nimport { WrapperContext } from '../ScrollWrapper/wrapperContext';\nimport { rad2deg } from '../../util/spatial.js';\n\nimport './styles.scss';\n\nconst updateCamera = (e, sceneCamera, setSceneCamera, attribute, axis) => {\n  const newCamera = sceneCamera.clone();\n\n  newCamera[attribute][axis] = Number(e.target.value);\n\n  setSceneCamera(newCamera);\n};\n\nconst Debugger = () => {\n  const { sceneCamera, scrollPosition, setSceneCamera } = useContext(WrapperContext);\n\n  return (\n    <div className=\"debug-box\">\n      <div>\n        Step: {scrollPosition.activeStep} ({scrollPosition.stepProgress.toFixed(2)})\n      </div>\n      {sceneCamera !== null && (\n        <React.Fragment>\n          <div>\n            Position:{' '}\n            {['x', 'y', 'z'].map((axis, i) => (\n              <React.Fragment>\n                <input\n                  type=\"number\"\n                  step=\"0.01\"\n                  value={sceneCamera.position[axis].toFixed(3)}\n                  onChange={(e) => updateCamera(e, sceneCamera, setSceneCamera, 'rotation', axis)}\n                />\n                {i < 2 && ', '}\n              </React.Fragment>\n            ))}\n          </div>\n          <div>\n            Rotation:{' '}\n            {['x', 'y', 'z'].map((axis, i) => (\n              <React.Fragment>\n                <input\n                  type=\"number\"\n                  step=\"0.1\"\n                  value={rad2deg(sceneCamera.rotation[axis]).toFixed(1)}\n                  onChange={(e) => updateCamera(e, sceneCamera, setSceneCamera, 'rotation', axis)}\n                />\n                {i < 2 && ', '}\n              </React.Fragment>\n            ))}\n          </div>\n        </React.Fragment>\n      )}\n    </div>\n  );\n};\n\nexport default Debugger;\n","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n  const { width, height } = window.visualViewport;\n  return {\n    width,\n    height,\n  };\n}\n\nexport default function useWindowDimensions() {\n  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n  useEffect(() => {\n    function handleResize() {\n      setWindowDimensions(getWindowDimensions());\n    }\n\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  return windowDimensions;\n}\n","import HTMLReactParser from './index.js';\n\nexport var domToReact = HTMLReactParser.domToReact;\nexport var htmlToDOM = HTMLReactParser.htmlToDOM;\nexport var attributesToProps = HTMLReactParser.attributesToProps;\nexport var Element = HTMLReactParser.Element;\n\nexport default HTMLReactParser;\n","/* eslint-disable react/no-array-index-key */\nimport React from 'react';\nimport classNames from 'classnames';\nimport ReactHTMLParser from 'html-react-parser';\n\nimport './styles.scss';\n\nconst ScrollStep = ({\n  cards,\n  // cardsContent,\n  index,\n  isActive,\n  stepClass,\n  annotationMode,\n}) => {\n  return (\n    <div className={classNames('step', stepClass, isActive && 'is-active')} data-step={index}>\n      {cards.map(({ html, text, type, style, ...card }, i) => {\n        let cardStyle = [...style];\n        if (annotationMode !== null) {\n          cardStyle = [annotationMode];\n        }\n        // const html = cardsContent[i].html;\n        // const text = cardsContent[i].text;\n\n        return (\n          <div className={classNames('card-wrapper', type)} key={`card-${i}`}>\n            {\n              // eslint-disable-next-line react/no-array-index-key\n              <div className={classNames('card', type, ...cardStyle)} key={`card-${i}`}>\n                {html\n                  ? ReactHTMLParser(html)\n                  : text.split('\\n').map((par, j) => {\n                      // eslint-disable-next-line react/no-array-index-key\n                      return <p key={`par-${j}`}>{par || `This is step ${index}`}</p>;\n                    })}\n\n                {card.post_media_text && ReactHTMLParser(card.post_media_text)}\n              </div>\n            }\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n\nexport default React.memo(ScrollStep);\n","/* eslint-disable camelcase */\nimport React, { useEffect, useState, useRef, useMemo } from 'react';\nimport scrollama from 'scrollama';\nimport classNames from 'classnames';\n\nimport Debugger from '../Debugger/index.jsx';\nimport useWindowDimensions from './util/window-dimensions';\nimport ScrollStep from '../ScrollStep/index.jsx';\n\nimport config from '../../config.json';\nimport { WrapperContext } from './wrapperContext';\n\nimport './styles.scss';\n\nconst initScroller = (\n  movementSectionProportion,\n  setScrollPosition,\n  stepClass,\n  totalSteps,\n  progressEnabled = true\n) => {\n  const scroller = scrollama();\n\n  // setup the instance, pass callback functions\n  scroller\n    .setup({\n      step: `.${stepClass}`,\n      threshold: 4,\n      offset: 0.9,\n      progress: progressEnabled,\n      // debug: true,\n    })\n    .onStepProgress(({ index, progress, direction }) => {\n      // this division between \"sectioned progress\" and \"true progress\" allows us to run some animations only...\n      // within the range of 0.2 and 0.8 and keep things static on the edges of the steps, so that things...\n      // aren't always in movement (e.g. the satellites can hove in place for a second)\n      // const sectionedProgress = Math.min(\n      //   Math.max((progress - (1 - movementSectionProportion) / 2) / movementSectionProportion, 0),\n      //   1\n      // );\n\n      if (progressEnabled === false) {\n        return;\n      }\n\n      // const sectionedProgress = Math.max(\n      //   0,\n      //   (progress - (1 - movementSectionProportion)) / movementSectionProportion\n      // );\n      // Doing it like this will make it so that all the movement happens at the start of the step\n      // ...which we may decide that we want\n      const sectionedProgress = Math.min(1, progress / movementSectionProportion);\n\n      setScrollPosition({\n        activeStep: index,\n        stepProgress: sectionedProgress,\n        trueStepProgress: progress,\n        sectionActive: true,\n        direction,\n      });\n    })\n    .onStepEnter(({ index, direction }) => {\n      if (progressEnabled === true) {\n        return;\n      }\n\n      setScrollPosition({\n        activeStep: index,\n        stepProgress: 0,\n        trueStepProgress: 0,\n        sectionActive: true,\n        direction,\n      });\n    })\n    .onStepExit(({ index, direction }) => {\n      if (index === 0 && direction === 'up') {\n        setScrollPosition({\n          activeStep: 0,\n          stepProgress: 0,\n          trueStepProgress: 0,\n          sectionActive: true,\n          direction,\n        });\n      }\n\n      if (index === totalSteps - 1 && direction === 'down') {\n        setScrollPosition({\n          activeStep: index,\n          stepProgress: 1.0,\n          trueStepProgress: 1.0,\n          sectionActive: false,\n          direction,\n        });\n      }\n    });\n\n  return scroller;\n};\n\nconst ScrollWrapper = ({\n  annotationMode = null,\n  setAnnotationMode,\n  context,\n  data,\n  waypoints,\n  // cardsContent,\n  toggleLabel,\n  debug = false,\n  movementSectionProportion = 1,\n  hidden = false,\n  prod = false,\n  stepClass,\n  progress = true,\n  scrollSectionClassName = null,\n  ...props\n}) => {\n  const [scrollPosition, setScrollPosition] = useState({\n    activeStep: -1,\n    stepProgress: 0,\n    trueStepProgress: 0,\n    sectionActive: true,\n    direction: 'down',\n  });\n  const [sceneCamera, setSceneCamera] = useState(null);\n  const [cameraPosition, setCameraPosition] = useState(null);\n  const [showDebugMode, setShowDebugMode] = useState(false);\n\n  const { height, width } = useWindowDimensions();\n\n  const scroller = useRef(null);\n  const annotationsRef = useRef(null);\n  const annotationsHeight = useRef(0);\n\n  const mobileBreakpoint = config.mobile_breakpoint;\n  const tabletBreakpoint = config.tablet_breakpoint;\n\n  const isMobile = useMemo(\n    () => width !== null && width < mobileBreakpoint,\n    [mobileBreakpoint, width]\n  );\n\n  useEffect(() => {\n    // If the screen height/width changes, resize scrollama scroller after short delay\n    if (scroller.current !== null && annotationsRef.current !== null) {\n      const newAnnotationsHeight = annotationsRef.current.clientHeight;\n\n      if (newAnnotationsHeight !== annotationsHeight.current) {\n        annotationsHeight.current = newAnnotationsHeight;\n        setTimeout(() => scroller.current.resize(), 800);\n      }\n      return;\n    }\n\n    // this defines the period of \"sectioned progress\", which many components will use in place of raw...\n    // step progress for movement, opposed to paused time within each section\n    // const movementSectionProportion = 0.65;\n\n    // instantiate the scrollama\n    scroller.current = initScroller(\n      movementSectionProportion,\n      setScrollPosition,\n      stepClass,\n      waypoints.length,\n      progress\n    );\n  }, [height, width, movementSectionProportion]);\n\n  // If ScrollWrapper is re-rendered, check the height of the annotations div...\n  // if it doesn't match the old one, resize the scrollama scroller\n  useEffect(() => {\n    if (scroller.current !== null && annotationsRef.current !== null) {\n      const newAnnotationsHeight = annotationsRef.current.clientHeight;\n\n      if (newAnnotationsHeight !== annotationsHeight.current) {\n        annotationsHeight.current = newAnnotationsHeight;\n        setTimeout(() => scroller.current.resize(), 800);\n      }\n    }\n  });\n\n  useEffect(() => {\n    if (window) {\n      window.scrollTo(0, 0);\n    }\n  }, [hidden]);\n\n  return (\n    <WrapperContext.Provider\n      value={{\n        scrollPosition,\n        annotationMode,\n        setAnnotationMode,\n        screenWidth: width,\n        screenHeight: height,\n        sceneCamera,\n        setSceneCamera,\n        cameraPosition,\n        setCameraPosition,\n        waypoints,\n        isMobile,\n        data,\n        showDebugMode,\n        prod,\n      }}\n    >\n      <section\n        className={classNames(\n          'scroll',\n          scrollSectionClassName,\n          hidden === true && 'hidden-wrapper'\n        )}\n      >\n        {/* <ProgressBar topOffset={0.18} /> */}\n        <article className=\"annotations\" ref={annotationsRef}>\n          {waypoints.map(({ section_text, step }, i) => (\n            <ScrollStep\n              cards={section_text.cards}\n              // cardsContent={cardsContent[i].cards}\n              key={step}\n              index={i}\n              isActive={scrollPosition.activeStep === i}\n              stepClass={stepClass}\n              annotationMode={annotationMode}\n            />\n          ))}\n        </article>\n\n        <figure className=\"canvas-wrapper\">{width && props.children}</figure>\n\n        {debug === true && (\n          <React.Fragment>\n            <button\n              type=\"button\"\n              className=\"debug-trigger\"\n              onClick={() => setShowDebugMode(!showDebugMode)}\n            >\n              {showDebugMode ? 'Stop debugging' : 'Debug'}\n            </button>\n            {showDebugMode && <Debugger />}\n          </React.Fragment>\n        )}\n      </section>\n    </WrapperContext.Provider>\n  );\n};\n\nexport default React.memo(ScrollWrapper);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\n\nimport './styles.scss';\n\nconst ImageSet = ({\n  sources,\n  alt,\n  caption,\n  additionalClasses,\n  title,\n  subtitle,\n  note,\n  fullWidth,\n}) => {\n  return (\n    <div className={classnames('image-set-container', additionalClasses)}>\n      {title && fullWidth ? (\n        <GridContainer>\n          <GridRow>\n            <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n              <div className={classnames('image-title-container', fullWidth ? 'full-width' : '')}>\n                <hr />\n                {title && <p className=\"image-title\">{title}</p>}\n                {subtitle && <p className=\"image-subtitle\">{subtitle}</p>}\n              </div>\n            </GridChild>\n          </GridRow>\n        </GridContainer>\n      ) : (\n        <div className=\"image-title-container\">\n          {title && <p className=\"image-title\">{title}</p>}\n          {subtitle && <p className=\"image-subtitle\">{subtitle}</p>}\n        </div>\n      )}\n      <figure>\n        <picture>\n          {sources && sources.small && (\n            <source media=\"screen and (max-width: 740px)\" srcSet={sources.small} />\n          )}\n          {sources && sources.large && (\n            <source media=\"screen and (min-width: 1180px)\" srcSet={sources.large} />\n          )}\n          {sources && sources.medium && <img srcSet={sources.medium} alt={alt} />}\n        </picture>\n        {caption && <figcaption>{caption}</figcaption>}\n      </figure>\n      {note && <p className=\"note\">{note}</p>}\n    </div>\n  );\n};\n\nImageSet.defaultProps = {\n  caption: '',\n  additionalClasses: [],\n  title: '',\n  subtitle: '',\n  note: '',\n  fullWidth: false,\n};\n\nImageSet.propTypes = {\n  sources: PropTypes.shape({\n    small: PropTypes.string.isRequired,\n    medium: PropTypes.string.isRequired,\n    large: PropTypes.string.isRequired,\n  }).isRequired,\n  alt: PropTypes.string.isRequired,\n  caption: PropTypes.string,\n  // eslint-disable-next-line react/require-default-props\n  additionalClasses: PropTypes.arrayOf(),\n  title: PropTypes.string,\n  subtitle: PropTypes.string,\n  note: PropTypes.string,\n  fullWidth: PropTypes.bool,\n};\n\nexport default ImageSet;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\n\nimport './styles.scss';\n\nconst Credits = ({ hidden = false }) => {\n  return (\n    <GridContainer className={classNames('credits-wrapper', hidden && 'hidden')}>\n      <GridRow>\n        <GridChild data-o-grid-colspan=\"12 S11 Scenter M9 L8 XL7\">\n          <div className=\"credits-content\">\n            <p>\n              <span className=\"credit-section-header\">Notes and sources</span>: Aircraft data for\n              contenders comes from SMG Consulting’s{' '}\n              <a\n                href=\"https://aamrealityindex.com/aam-reality-index\"\n                className=\"credits-link\"\n                target=\"_blank\"\n                rel=\"noreferrer\"\n              >\n                Advanced Air Mobility Reality Index\n              </a>\n              . Funding refers to money raised both in private and public rounds sourced from SMG\n              data. Launch represents each company’s targeted entry into service. Ehang’s EH216-S is\n              autonomous, meaning it can fly with two passengers and no pilot.\n            </p>\n          </div>\n        </GridChild>\n      </GridRow>\n    </GridContainer>\n  );\n};\n\nexport default Credits;\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport './styles.scss';\n\nconst Loader = ({ children, loadText = 'Loading', dynamicEllipsis = true }) => {\n  return (\n    <div className=\"loader\">\n      {children}\n      <p className={classNames('load-text', dynamicEllipsis === true && 'dynamic-ellipsis')}>\n        {loadText}\n      </p>\n    </div>\n  );\n};\n\nexport default React.memo(Loader);\n","function mergeRefs(refs) {\n  return function (value) {\n    refs.forEach(function (ref) {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        ref.current = value;\n      }\n    });\n  };\n}\n\nexport default mergeRefs;\n//# sourceMappingURL=react-merge-refs.esm.js.map\n","import * as React from 'react';\nimport * as THREE from 'three';\nimport { useThree } from '@react-three/fiber';\n\n// 👇 uncomment when TS version supports function overloads\n// export function useFBO(settings?: FBOSettings)\nfunction useFBO(\n/** Width in pixels, or settings (will render fullscreen by default) */\nwidth,\n/** Height in pixels */\nheight,\n/**Settings */\nsettings) {\n  const size = useThree(state => state.size);\n  const viewport = useThree(state => state.viewport);\n\n  const _width = typeof width === 'number' ? width : size.width * viewport.dpr;\n\n  const _height = typeof height === 'number' ? height : size.height * viewport.dpr;\n\n  const _settings = (typeof width === 'number' ? settings : width) || {};\n\n  const {\n    samples = 0,\n    depth,\n    ...targetSettings\n  } = _settings;\n  const target = React.useMemo(() => {\n    const target = new THREE.WebGLRenderTarget(_width, _height, {\n      minFilter: THREE.LinearFilter,\n      magFilter: THREE.LinearFilter,\n      type: THREE.HalfFloatType,\n      ...targetSettings\n    });\n\n    if (depth) {\n      target.depthTexture = new THREE.DepthTexture(_width, _height, THREE.FloatType);\n    }\n\n    target.samples = samples;\n    return target;\n  }, []);\n  React.useLayoutEffect(() => {\n    target.setSize(_width, _height);\n    if (samples) target.samples = samples;\n  }, [samples, target, _width, _height]);\n  React.useEffect(() => {\n    return () => target.dispose();\n  }, []);\n  return target;\n}\n\nexport { useFBO };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport mergeRefs from 'react-merge-refs';\nimport { useFBO } from './useFBO.js';\n\nconst isFunction = node => typeof node === 'function';\n\nconst PerspectiveCamera = /*#__PURE__*/React.forwardRef(({\n  envMap,\n  resolution = 256,\n  frames = Infinity,\n  makeDefault,\n  children,\n  ...props\n}, ref) => {\n  const set = useThree(({\n    set\n  }) => set);\n  const camera = useThree(({\n    camera\n  }) => camera);\n  const size = useThree(({\n    size\n  }) => size);\n  const cameraRef = React.useRef(null);\n  const groupRef = React.useRef(null);\n  const fbo = useFBO(resolution);\n  React.useLayoutEffect(() => {\n    if (!props.manual) {\n      cameraRef.current.aspect = size.width / size.height;\n    }\n  }, [size, props]);\n  React.useLayoutEffect(() => {\n    cameraRef.current.updateProjectionMatrix();\n  });\n  let count = 0;\n  let oldEnvMap = null;\n  const functional = isFunction(children);\n  useFrame(state => {\n    if (functional && (frames === Infinity || count < frames)) {\n      groupRef.current.visible = false;\n      state.gl.setRenderTarget(fbo);\n      oldEnvMap = state.scene.background;\n      if (envMap) state.scene.background = envMap;\n      state.gl.render(state.scene, cameraRef.current);\n      state.scene.background = oldEnvMap;\n      state.gl.setRenderTarget(null);\n      groupRef.current.visible = true;\n      count++;\n    }\n  });\n  React.useLayoutEffect(() => {\n    if (makeDefault) {\n      const oldCam = camera;\n      set(() => ({\n        camera: cameraRef.current\n      }));\n      return () => set(() => ({\n        camera: oldCam\n      }));\n    } // The camera should not be part of the dependency list because this components camera is a stable reference\n    // that must exchange the default, and clean up after itself on unmount.\n\n  }, [cameraRef, makeDefault, set]);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"perspectiveCamera\", _extends({\n    ref: mergeRefs([cameraRef, ref])\n  }, props), !functional && children), /*#__PURE__*/React.createElement(\"group\", {\n    ref: groupRef\n  }, functional && children(fbo.texture)));\n});\n\nexport { PerspectiveCamera };\n","import { WebGLCubeRenderTarget, CubeCamera } from 'three';\nimport * as React from 'react';\nimport { useThree } from '@react-three/fiber';\n\nfunction Preload({\n  all,\n  scene,\n  camera\n}) {\n  const gl = useThree(({\n    gl\n  }) => gl);\n  const dCamera = useThree(({\n    camera\n  }) => camera);\n  const dScene = useThree(({\n    scene\n  }) => scene); // Layout effect because it must run before React commits\n\n  React.useLayoutEffect(() => {\n    const invisible = [];\n\n    if (all) {\n      (scene || dScene).traverse(object => {\n        if (object.visible === false) {\n          invisible.push(object);\n          object.visible = true;\n        }\n      });\n    } // Now compile the scene\n\n\n    gl.compile(scene || dScene, camera || dCamera); // And for good measure, hit it with a cube camera\n\n    const cubeRenderTarget = new WebGLCubeRenderTarget(128);\n    const cubeCamera = new CubeCamera(0.01, 100000, cubeRenderTarget);\n    cubeCamera.update(gl, scene || dScene);\n    cubeRenderTarget.dispose(); // Flips these objects back\n\n    invisible.forEach(object => object.visible = false);\n  }, []);\n  return null;\n}\n\nexport { Preload };\n","import * as React from 'react';\nimport { useThree } from '@react-three/fiber';\n\nfunction AdaptiveDpr({\n  pixelated\n}) {\n  const gl = useThree(state => state.gl);\n  const active = useThree(state => state.internal.active);\n  const current = useThree(state => state.performance.current);\n  const initialDpr = useThree(state => state.viewport.initialDpr);\n  const setDpr = useThree(state => state.setDpr); // Restore initial pixelratio on unmount\n\n  React.useEffect(() => {\n    const domElement = gl.domElement;\n    return () => {\n      if (active) setDpr(initialDpr);\n      if (pixelated && domElement) domElement.style.imageRendering = 'auto';\n    };\n  }, []); // Set adaptive pixelratio\n\n  React.useEffect(() => {\n    setDpr(current * initialDpr);\n    if (pixelated && gl.domElement) gl.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n  }, [current]);\n  return null;\n}\n\nexport { AdaptiveDpr };\n","import * as React from 'react';\nimport { useThree } from '@react-three/fiber';\n\nfunction AdaptiveEvents() {\n  const get = useThree(state => state.get);\n  const setEvents = useThree(state => state.setEvents);\n  const current = useThree(state => state.performance.current);\n  React.useEffect(() => {\n    const enabled = get().events.enabled;\n    return () => setEvents({\n      enabled\n    });\n  }, []);\n  React.useEffect(() => setEvents({\n    enabled: current === 1\n  }), [current]);\n  return null;\n}\n\nexport { AdaptiveEvents };\n","import React__default, { useRef, useEffect, useContext, createRef, forwardRef, useState, useMemo, useLayoutEffect, createElement } from 'react';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport create from 'zustand';\nimport ReactDOM from 'react-dom/client';\nimport { PerspectiveCamera, OrthographicCamera, Vector3 } from 'three';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectDestructuringEmpty(obj) {\n  if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nvar useAnnounceStore = /*#__PURE__*/create(function (set) {\n  return {\n    message: '',\n    a11yScreenReader: function a11yScreenReader(message) {\n      set(function () {\n        return {\n          message: message\n        };\n      });\n    }\n  };\n});\n\nvar stylesHiddenButScreenreadable = {\n  opacity: 0,\n  borderRadius: '50%',\n  width: '50px',\n  height: '50px',\n  overflow: 'hidden',\n  transform: 'translateX(-50%) translateY(-50%)',\n  display: 'inline-block',\n  userSelect: 'none',\n  WebkitUserSelect: 'none',\n  WebkitTouchCallout: 'none',\n  margin: 0\n};\n\nvar A11ySectionContext = /*#__PURE__*/React__default.createContext( /*#__PURE__*/createRef());\nA11ySectionContext.displayName = 'A11ySectionContext';\n\nvar useA11ySectionContext = function useA11ySectionContext() {\n  return useContext(A11ySectionContext);\n};\nvar A11ySection = function A11ySection(_ref) {\n  var children = _ref.children,\n      label = _ref.label,\n      description = _ref.description;\n  var ref = useRef(null);\n  var refpDesc = useRef(null);\n  var gl = useThree(function (state) {\n    return state.gl;\n  });\n\n  var _React$useState = React__default.useState(function () {\n    return document.createElement('section');\n  }),\n      el = _React$useState[0];\n\n  var target = gl.domElement.parentNode;\n  useEffect(function () {\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    if (label) {\n      el.setAttribute('aria-label', label);\n    }\n\n    el.setAttribute('r3f-a11y', 'true');\n    el.setAttribute('style', function (styles) {\n      return Object.keys(styles).reduce(function (acc, key) {\n        return acc + key.split(/(?=[A-Z])/).join('-').toLowerCase() + ':' + styles[key] + ';';\n      }, '');\n    }(stylesHiddenButScreenreadable));\n\n    if (description) {\n      if (refpDesc.current === null) {\n        var pDesc = document.createElement('p');\n        pDesc.innerHTML = description;\n        pDesc.style.cssText = 'border: 0!important;clip: rect(1px,1px,1px,1px)!important;-webkit-clip-path: inset(50%)!important;clip-path: inset(50%)!important;height: 1px!important;margin: -1px!important;overflow: hidden!important;padding: 0!important;position: absolute!important;width: 1px!important;white-space: nowrap!important;';\n        el.prepend(pDesc);\n        refpDesc.current = pDesc;\n      } else {\n        refpDesc.current.innerHTML = description;\n      }\n    }\n\n    return function () {\n      if (target) target.removeChild(el);\n    };\n  }, [description, label]);\n\n  if (ref.current === null) {\n    if (target) {\n      target.appendChild(el);\n    }\n\n    ref.current = el;\n  }\n\n  return React__default.createElement(React__default.Fragment, null, React__default.createElement(A11ySectionContext.Provider, {\n    value: ref\n  }, children));\n};\n\nvar v1 = /*#__PURE__*/new Vector3();\nvar v2 = /*#__PURE__*/new Vector3();\nvar v3 = /*#__PURE__*/new Vector3();\n\nfunction calculatePosition(el, camera, size) {\n  var objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n  objectPos.project(camera);\n  var widthHalf = size.width / 2;\n  var heightHalf = size.height / 2;\n  return [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nfunction isObjectBehindCamera(el, camera) {\n  var objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n  var cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n  var deltaCamObj = objectPos.sub(cameraPos);\n  var camDir = camera.getWorldDirection(v3);\n  return deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nfunction objectZIndex(el, camera, zIndexRange) {\n  if (camera instanceof PerspectiveCamera || camera instanceof OrthographicCamera) {\n    var objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n    var cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n    var dist = objectPos.distanceTo(cameraPos);\n    var A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n    var B = zIndexRange[1] - A * camera.far;\n    return Math.round(A * dist + B);\n  }\n\n  return undefined;\n}\n\nvar Html = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var _portal$current;\n\n  var children = _ref.children,\n      _ref$eps = _ref.eps,\n      eps = _ref$eps === void 0 ? 0.001 : _ref$eps,\n      style = _ref.style,\n      className = _ref.className,\n      portal = _ref.portal,\n      _ref$zIndexRange = _ref.zIndexRange,\n      zIndexRange = _ref$zIndexRange === void 0 ? [16777271, 0] : _ref$zIndexRange,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"eps\", \"style\", \"className\", \"portal\", \"zIndexRange\"]);\n\n  var gl = useThree(function (_ref2) {\n    var gl = _ref2.gl;\n    return gl;\n  });\n  var camera = useThree(function (_ref3) {\n    var camera = _ref3.camera;\n    return camera;\n  });\n  var scene = useThree(function (_ref4) {\n    var scene = _ref4.scene;\n    return scene;\n  });\n  var size = useThree(function (_ref5) {\n    var size = _ref5.size;\n    return size;\n  });\n\n  var _React$useState = useState(function () {\n    return document.createElement('div');\n  }),\n      el = _React$useState[0];\n\n  var root = useMemo(function () {\n    return ReactDOM.createRoot(el);\n  }, [el]);\n  var group = useRef(null);\n  var oldZoom = useRef(0);\n  var oldPosition = useRef([0, 0]);\n  var target = (_portal$current = portal == null ? void 0 : portal.current) != null ? _portal$current : gl.domElement.parentNode;\n  useEffect(function () {\n    if (group.current) {\n      scene.updateMatrixWorld();\n      var vec = calculatePosition(group.current, camera, size);\n      el.style.cssText = \"position:absolute;top:0;left:0;transform:translate3d(\" + vec[0] + \"px,\" + vec[1] + \"px,0);transform-origin:0 0;\";\n\n      if (target) {\n        target.appendChild(el);\n      }\n\n      return function () {\n        if (target) target.removeChild(el);\n        root.unmount();\n      };\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, [target]);\n  var styles = useMemo(function () {\n    return _extends({\n      position: 'absolute',\n      transform: 'none'\n    }, style);\n  }, [style, size]);\n  useLayoutEffect(function () {\n    root.render(createElement(\"div\", {\n      ref: ref,\n      style: styles,\n      className: className,\n      children: children\n    }));\n  });\n  useFrame(function () {\n    if (group.current) {\n      camera.updateMatrixWorld();\n      var vec = calculatePosition(group.current, camera, size);\n\n      if (Math.abs(oldZoom.current - camera.zoom) > eps || Math.abs(oldPosition.current[0] - vec[0]) > eps || Math.abs(oldPosition.current[1] - vec[1]) > eps) {\n        el.style.display = !isObjectBehindCamera(group.current, camera) ? 'block' : 'none';\n        el.style.zIndex = \"\" + objectZIndex(group.current, camera, zIndexRange);\n        el.style.transform = \"translate3d(\" + vec[0] + \"px,\" + vec[1] + \"px,0) scale(1)\";\n        oldPosition.current = vec;\n        oldZoom.current = camera.zoom;\n      }\n    }\n  });\n  return createElement(\"group\", Object.assign({}, props, {\n    ref: group\n  }));\n});\n\nvar A11yContext = /*#__PURE__*/React__default.createContext({\n  focus: false,\n  hover: false,\n  pressed: false\n});\nA11yContext.displayName = 'A11yContext';\n\nvar useA11y = function useA11y() {\n  return useContext(A11yContext);\n};\nvar A11y = function A11y(_ref) {\n  var children = _ref.children,\n      description = _ref.description,\n      activationMsg = _ref.activationMsg,\n      deactivationMsg = _ref.deactivationMsg,\n      tabIndex = _ref.tabIndex,\n      href = _ref.href,\n      role = _ref.role,\n      _ref$showAltText = _ref.showAltText,\n      showAltText = _ref$showAltText === void 0 ? false : _ref$showAltText,\n      actionCall = _ref.actionCall,\n      focusCall = _ref.focusCall,\n      disabled = _ref.disabled,\n      _ref$debug = _ref.debug,\n      debug = _ref$debug === void 0 ? false : _ref$debug,\n      a11yElStyle = _ref.a11yElStyle,\n      _ref$startPressed = _ref.startPressed,\n      startPressed = _ref$startPressed === void 0 ? false : _ref$startPressed,\n      _ref$tag = _ref.tag,\n      tag = _ref$tag === void 0 ? 'p' : _ref$tag,\n      _ref$hidden = _ref.hidden,\n      hidden = _ref$hidden === void 0 ? false : _ref$hidden,\n      dragThreshold = _ref.dragThreshold,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"description\", \"activationMsg\", \"deactivationMsg\", \"tabIndex\", \"href\", \"role\", \"showAltText\", \"actionCall\", \"focusCall\", \"disabled\", \"debug\", \"a11yElStyle\", \"startPressed\", \"tag\", \"hidden\", \"dragThreshold\"]);\n\n  var constHiddenButScreenreadable = Object.assign({}, stylesHiddenButScreenreadable, {\n    opacity: debug ? 1 : 0\n  }, a11yElStyle);\n\n  var _useState = useState({\n    hovered: false,\n    focused: false,\n    pressed: startPressed ? startPressed : false\n  }),\n      a11yState = _useState[0],\n      setA11yState = _useState[1];\n\n  var a11yScreenReader = useAnnounceStore(function (state) {\n    return state.a11yScreenReader;\n  });\n  var overHtml = useRef(false);\n  var overMesh = useRef(false);\n  var domElement = useThree(function (state) {\n    return state.gl.domElement;\n  }); // temporary fix to prevent error -> keep track of our component's mounted state\n\n  var componentIsMounted = useRef(true);\n  useEffect(function () {\n    return function () {\n      domElement.style.cursor = 'default';\n      componentIsMounted.current = false;\n    };\n  }, []); // Using an empty dependency array ensures this on\n\n  React__default.Children.only(children); // @ts-ignore\n\n  var handleOnPointerOver = function handleOnPointerOver(e) {\n    if (e.eventObject) {\n      overMesh.current = true;\n    } else {\n      overHtml.current = true;\n    }\n\n    if (overHtml.current || overMesh.current) {\n      if (role !== 'content' && role !== 'image' && !disabled) {\n        domElement.style.cursor = 'pointer';\n      }\n\n      setA11yState({\n        hovered: true,\n        focused: a11yState.focused,\n        pressed: a11yState.pressed\n      });\n    }\n  }; // @ts-ignore\n\n\n  var handleOnPointerOut = function handleOnPointerOut(e) {\n    if (e.eventObject) {\n      overMesh.current = false;\n    } else {\n      overHtml.current = false;\n    }\n\n    if (!overHtml.current && !overMesh.current) {\n      if (componentIsMounted.current) {\n        domElement.style.cursor = 'default';\n        setA11yState({\n          hovered: false,\n          focused: a11yState.focused,\n          pressed: a11yState.pressed\n        });\n      }\n    }\n  };\n\n  function handleBtnClick() {\n    //msg is the same need to be clean for it to trigger again in case of multiple press in a row\n    a11yScreenReader('');\n    window.setTimeout(function () {\n      if (typeof activationMsg === 'string') a11yScreenReader(activationMsg);\n    }, 100);\n    if (typeof actionCall === 'function') actionCall();\n  }\n\n  function handleToggleBtnClick() {\n    if (a11yState.pressed) {\n      if (typeof deactivationMsg === 'string') a11yScreenReader(deactivationMsg);\n    } else {\n      if (typeof activationMsg === 'string') a11yScreenReader(activationMsg);\n    }\n\n    setA11yState({\n      hovered: a11yState.hovered,\n      focused: a11yState.focused,\n      pressed: !a11yState.pressed\n    });\n    if (typeof actionCall === 'function') actionCall();\n  }\n\n  var returnHtmlA11yEl = function returnHtmlA11yEl() {\n    if (role === 'button' || role === 'togglebutton') {\n      var disabledBtnAttr = disabled ? {\n        disabled: true\n      } : null;\n\n      if (role === 'togglebutton') {\n        return React__default.createElement(\"button\", Object.assign({\n          \"r3f-a11y\": \"true\"\n        }, disabledBtnAttr, {\n          \"aria-pressed\": a11yState.pressed ? 'true' : 'false',\n          tabIndex: tabIndex ? tabIndex : 0,\n          style: Object.assign(constHiddenButScreenreadable, disabled ? {\n            cursor: 'default'\n          } : {\n            cursor: 'pointer'\n          }, hidden ? {\n            visibility: 'hidden'\n          } : {\n            visibility: 'visible'\n          }),\n          onPointerOver: handleOnPointerOver,\n          onPointerOut: handleOnPointerOut,\n          onClick: function onClick(e) {\n            e.stopPropagation();\n\n            if (disabled) {\n              return;\n            }\n\n            handleToggleBtnClick();\n          },\n          onFocus: function onFocus() {\n            if (typeof focusCall === 'function') focusCall();\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: true,\n              pressed: a11yState.pressed\n            });\n          },\n          onBlur: function onBlur() {\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: false,\n              pressed: a11yState.pressed\n            });\n          }\n        }), description);\n      } else {\n        //regular btn\n        return React__default.createElement(\"button\", Object.assign({\n          \"r3f-a11y\": \"true\"\n        }, disabledBtnAttr, {\n          tabIndex: tabIndex ? tabIndex : 0,\n          style: Object.assign(constHiddenButScreenreadable, disabled ? {\n            cursor: 'default'\n          } : {\n            cursor: 'pointer'\n          }, hidden ? {\n            visibility: 'hidden'\n          } : {\n            visibility: 'visible'\n          }),\n          onPointerOver: handleOnPointerOver,\n          onPointerOut: handleOnPointerOut,\n          onClick: function onClick(e) {\n            e.stopPropagation();\n\n            if (disabled) {\n              return;\n            }\n\n            handleBtnClick();\n          },\n          onFocus: function onFocus() {\n            if (typeof focusCall === 'function') focusCall();\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: true,\n              pressed: a11yState.pressed\n            });\n          },\n          onBlur: function onBlur() {\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: false,\n              pressed: a11yState.pressed\n            });\n          }\n        }), description);\n      }\n    } else if (role === 'link') {\n      return React__default.createElement(\"a\", {\n        \"r3f-a11y\": \"true\",\n        style: Object.assign(constHiddenButScreenreadable, hidden ? {\n          visibility: 'hidden'\n        } : {\n          visibility: 'visible'\n        }),\n        href: href,\n        onPointerOver: handleOnPointerOver,\n        onPointerOut: handleOnPointerOut,\n        onClick: function onClick(e) {\n          e.stopPropagation();\n          e.preventDefault();\n          if (typeof actionCall === 'function') actionCall();\n        },\n        onFocus: function onFocus() {\n          if (typeof focusCall === 'function') focusCall();\n          setA11yState({\n            hovered: a11yState.hovered,\n            focused: true,\n            pressed: a11yState.pressed\n          });\n        },\n        onBlur: function onBlur() {\n          setA11yState({\n            hovered: a11yState.hovered,\n            focused: false,\n            pressed: a11yState.pressed\n          });\n        }\n      }, description);\n    } else {\n      var tabIndexP = tabIndex ? {\n        tabIndex: tabIndex\n      } : null;\n\n      if (role === 'image') {\n        return React__default.createElement(\"img\", Object.assign({\n          \"r3f-a11y\": \"true\",\n          src: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'/%3E\",\n          alt: description\n        }, tabIndexP, {\n          style: Object.assign(constHiddenButScreenreadable, hidden ? {\n            visibility: 'hidden'\n          } : {\n            visibility: 'visible'\n          }),\n          onPointerOver: handleOnPointerOver,\n          onPointerOut: handleOnPointerOut,\n          onBlur: function onBlur() {\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: false,\n              pressed: a11yState.pressed\n            });\n          },\n          onFocus: function onFocus() {\n            if (typeof focusCall === 'function') focusCall();\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: true,\n              pressed: a11yState.pressed\n            });\n          }\n        }));\n      } else {\n        var Tag = tag;\n        return React__default.createElement(Tag, Object.assign({\n          \"r3f-a11y\": \"true\"\n        }, tabIndexP, {\n          style: Object.assign(constHiddenButScreenreadable, hidden ? {\n            visibility: 'hidden'\n          } : {\n            visibility: 'visible'\n          }),\n          onPointerOver: handleOnPointerOver,\n          onPointerOut: handleOnPointerOut,\n          onBlur: function onBlur() {\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: false,\n              pressed: a11yState.pressed\n            });\n          },\n          onFocus: function onFocus() {\n            if (typeof focusCall === 'function') focusCall();\n            setA11yState({\n              hovered: a11yState.hovered,\n              focused: true,\n              pressed: a11yState.pressed\n            });\n          }\n        }), description);\n      }\n    }\n  };\n\n  var HtmlAccessibleElement = React__default.useMemo(returnHtmlA11yEl, [description, a11yState, hidden, tabIndex, href, disabled, startPressed, tag, actionCall, focusCall]);\n  var AltText = null;\n\n  if (showAltText && a11yState.hovered) {\n    AltText = React__default.createElement(\"div\", {\n      \"aria-hidden\": true,\n      style: {\n        width: 'auto',\n        maxWidth: '300px',\n        display: 'block',\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        transform: 'translate(-50%,-50%)',\n        background: 'white',\n        borderRadius: '4px',\n        padding: '4px'\n      }\n    }, React__default.createElement(\"p\", {\n      \"aria-hidden\": true,\n      style: {\n        margin: '0px'\n      }\n    }, description));\n  }\n\n  var section = useA11ySectionContext();\n  var portal = {};\n\n  if (section.current instanceof HTMLElement) {\n    portal = {\n      portal: section\n    };\n  }\n\n  return React__default.createElement(A11yContext.Provider, {\n    value: {\n      hover: a11yState.hovered,\n      focus: a11yState.focused,\n      pressed: a11yState.pressed\n    }\n  }, React__default.createElement(\"group\", Object.assign({}, props, {\n    onClick: function onClick(e) {\n      e.stopPropagation();\n\n      if (disabled || dragThreshold && e.delta > dragThreshold) {\n        return;\n      }\n\n      if (role === 'button') {\n        handleBtnClick();\n      } else if (role === 'togglebutton') {\n        handleToggleBtnClick();\n      } else {\n        if (typeof actionCall === 'function') actionCall();\n      }\n    },\n    onPointerOver: handleOnPointerOver,\n    onPointerOut: handleOnPointerOut\n  }), children, React__default.createElement(Html, Object.assign({\n    style: {\n      width: '0px'\n    },\n    position: // @ts-ignore\n    children.props.position ? children.props.position : 0\n  }, portal), AltText, HtmlAccessibleElement)));\n};\n\nvar A11yUserPreferencesContext = /*#__PURE__*/React__default.createContext({\n  a11yPrefersState: {\n    prefersReducedMotion: false,\n    prefersDarkScheme: false\n  },\n  // tslint:disable:no-unused-variable\n  setA11yPrefersState: function setA11yPrefersState(_state) {}\n});\nA11yUserPreferencesContext.displayName = 'A11yUserPreferencesContext';\n\nvar useUserPreferences = function useUserPreferences() {\n  return useContext(A11yUserPreferencesContext);\n};\nvar A11yUserPreferences = function A11yUserPreferences(_ref) {\n  var children = _ref.children;\n\n  var _useState = useState({\n    prefersReducedMotion: false,\n    prefersDarkScheme: false\n  }),\n      a11yPrefersState = _useState[0],\n      setA11yPrefersState = _useState[1];\n\n  useEffect(function () {\n    var prefersReducedMotionMediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n    var prefersDarkSchemeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n    setA11yPrefersState({\n      prefersReducedMotion: prefersReducedMotionMediaQuery.matches,\n      prefersDarkScheme: prefersDarkSchemeMediaQuery.matches\n    });\n\n    var handleReducedMotionPrefChange = function handleReducedMotionPrefChange(e) {\n      setA11yPrefersState({\n        prefersReducedMotion: e.matches,\n        prefersDarkScheme: prefersDarkSchemeMediaQuery.matches\n      });\n    };\n\n    var handleDarkSchemePrefChange = function handleDarkSchemePrefChange(e) {\n      setA11yPrefersState({\n        prefersReducedMotion: prefersReducedMotionMediaQuery.matches,\n        prefersDarkScheme: e.matches\n      });\n    };\n\n    if (typeof prefersReducedMotionMediaQuery.addEventListener === 'function') {\n      prefersReducedMotionMediaQuery.addEventListener('change', handleReducedMotionPrefChange);\n    }\n\n    if (typeof prefersDarkSchemeMediaQuery.addEventListener === 'function') {\n      prefersDarkSchemeMediaQuery.addEventListener('change', handleDarkSchemePrefChange);\n    }\n\n    return function () {\n      if (typeof prefersReducedMotionMediaQuery.removeEventListener === 'function') {\n        prefersReducedMotionMediaQuery.removeEventListener('change', handleReducedMotionPrefChange);\n      }\n\n      if (typeof prefersDarkSchemeMediaQuery.removeEventListener === 'function') {\n        prefersDarkSchemeMediaQuery.removeEventListener('change', handleDarkSchemePrefChange);\n      }\n    };\n  }, []);\n  return React__default.createElement(A11yUserPreferencesContext.Provider, {\n    value: {\n      a11yPrefersState: {\n        prefersReducedMotion: a11yPrefersState.prefersReducedMotion,\n        prefersDarkScheme: a11yPrefersState.prefersDarkScheme\n      },\n      setA11yPrefersState: setA11yPrefersState\n    }\n  }, children);\n};\n\nvar offScreenStyle = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  whiteSpace: 'nowrap',\n  padding: 0,\n  width: '1px',\n  position: 'absolute'\n};\nvar A11yAnnouncer = function A11yAnnouncer() {\n  var message = useAnnounceStore(function (state) {\n    return state.message;\n  });\n  useEffect(function () {\n    var mouseClickListener = function mouseClickListener(e) {\n      var _window$document$acti;\n\n      if ((_window$document$acti = window.document.activeElement) != null && _window$document$acti.getAttribute('r3f-a11y') && e.detail !== 0) {\n        if (window.document.activeElement instanceof HTMLElement) {\n          window.document.activeElement.blur();\n        }\n      }\n    };\n\n    window.addEventListener('click', mouseClickListener);\n    return function () {\n      window.removeEventListener('click', mouseClickListener);\n    };\n  });\n  return React__default.createElement(\"div\", {\n    style: offScreenStyle,\n    \"aria-atomic\": \"true\",\n    \"aria-live\": \"polite\"\n  }, message);\n};\n\nvar A11yDebuger = function A11yDebuger(_ref) {\n  _objectDestructuringEmpty(_ref);\n\n  var _useState = useState(function () {\n    return document.createElement('div');\n  }),\n      el = _useState[0];\n\n  var root = React__default.useMemo(function () {\n    return ReactDOM.createRoot(el);\n  }, [el]);\n\n  var _useState2 = useState({}),\n      boundingStyle = _useState2[0],\n      setBoundingStyle = _useState2[1];\n\n  var _useState3 = useState({\n    prefersDarkScheme: false,\n    prefersReducedMotion: false\n  }),\n      debugState = _useState3[0],\n      setDebugState = _useState3[1];\n\n  var _useUserPreferences = useUserPreferences(),\n      a11yPrefersState = _useUserPreferences.a11yPrefersState,\n      setA11yPrefersState = _useUserPreferences.setA11yPrefersState;\n\n  var domStructureRef = useRef(null);\n  useEffect(function () {\n    el.style.cssText = 'position:fixed;top:0;left:0;';\n    el.setAttribute('aria-hidden', 'true');\n    document.body.appendChild(el);\n    setDebugState({\n      prefersDarkScheme: a11yPrefersState.prefersDarkScheme,\n      prefersReducedMotion: a11yPrefersState.prefersReducedMotion\n    });\n\n    var selectActiveEl = function selectActiveEl() {\n      var _document$activeEleme;\n\n      console.log('focused: ', document.activeElement);\n      var r3fa11ydebugidref = (_document$activeEleme = document.activeElement) == null ? void 0 : _document$activeEleme.getAttribute('r3f-a11y-debug-id');\n\n      if (r3fa11ydebugidref) {\n        document.querySelectorAll('[r3fa11ydebugidref]').forEach(function (node) {\n          //@ts-ignore\n          node.style.color = null;\n        });\n        var refEl = document.querySelector('[r3fa11ydebugidref=\"' + r3fa11ydebugidref + '\"]');\n\n        if (refEl) {\n          //@ts-ignore\n          refEl.style.color = 'red';\n        }\n      }\n    }; //@ts-ignore\n\n\n    var root = ReactDOM.createRoot(domStructureRef.current);\n    console.log('enregistre ev');\n    document.addEventListener('focus', selectActiveEl, true);\n    var superinterval = window.setInterval(function () {\n      var r3fPosId = 0; //@ts-ignore\n\n      var elements = [];\n      document.querySelectorAll('[r3f-a11y]').forEach(function (node) {\n        node.setAttribute('r3f-a11y-debug-id', '' + r3fPosId); // let li = document.createElement('li');\n        // li.innerHTML = node.tagName ;\n        // //@ts-ignore\n        // domStructureRef.current.appendChild(li);\n\n        elements.push( //@ts-ignore\n        React__default.createElement(\"li\", {\n          key: r3fPosId,\n          r3fa11ydebugidref: r3fPosId\n        }, node.tagName, React__default.createElement(\"button\", {\n          tabIndex: -1,\n          onClick: function onClick() {\n            console.log(node);\n            var clientRect = node.getBoundingClientRect();\n            setBoundingStyle({\n              width: clientRect.width,\n              height: clientRect.height,\n              top: clientRect.top,\n              left: clientRect.left\n            });\n          }\n        }, \"Show\")));\n        r3fPosId++;\n      }); //@ts-ignore\n\n      root.render(React__default.createElement(React__default.Fragment, null, elements));\n    }, 2000);\n    return function () {\n      clearInterval(superinterval);\n      root.unmount();\n      console.log('remove ev');\n      document.removeEventListener('focus', selectActiveEl, true);\n    };\n  }, [a11yPrefersState]); // @ts-ignore\n\n  var handleChange = function handleChange(e) {\n    // @ts-ignore\n    setA11yPrefersState({\n      prefersDarkScheme: e.target.name === 'prefersDarkScheme' ? e.target.checked : debugState.prefersDarkScheme,\n      prefersReducedMotion: e.target.name === 'prefersReducedMotion' ? e.target.checked : debugState.prefersReducedMotion\n    });\n  };\n\n  useLayoutEffect(function () {\n    return void root.render(React__default.createElement(React__default.Fragment, null, React__default.createElement(\"label\", null, \"Prefer dark mode\", React__default.createElement(\"input\", {\n      type: \"checkbox\",\n      name: \"prefersDarkScheme\",\n      checked: debugState.prefersDarkScheme,\n      onChange: handleChange\n    })), React__default.createElement(\"label\", null, \"Prefer reduced motion\", React__default.createElement(\"input\", {\n      type: \"checkbox\",\n      name: \"prefersReducedMotion\",\n      checked: debugState.prefersReducedMotion,\n      onChange: handleChange\n    })), React__default.createElement(\"h3\", null, \"R3F Dom order\"), React__default.createElement(\"ul\", {\n      ref: domStructureRef\n    }), React__default.createElement(\"div\", {\n      style: Object.assign({\n        position: 'absolute',\n        border: '1px solid white',\n        borderRadius: '50%',\n        background: 'linear-gradient( 45deg, rgb(70, 255, 60, 0.7), rgb(0, 64, 193, 0.7))',\n        pointerEvents: 'none',\n        transition: 'all 200ms ease'\n      }, boundingStyle)\n    })));\n  });\n  return React__default.createElement(React__default.Fragment, null);\n};\n\nexport { A11y, A11yAnnouncer, A11yDebuger, A11ySection, A11yUserPreferences, A11yUserPreferencesContext, useA11y, useUserPreferences };\n//# sourceMappingURL=a11y.esm.js.map\n","var e=\"colors\",t=\"sizes\",r=\"space\",n={gap:r,gridGap:r,columnGap:r,gridColumnGap:r,rowGap:r,gridRowGap:r,inset:r,insetBlock:r,insetBlockEnd:r,insetBlockStart:r,insetInline:r,insetInlineEnd:r,insetInlineStart:r,margin:r,marginTop:r,marginRight:r,marginBottom:r,marginLeft:r,marginBlock:r,marginBlockEnd:r,marginBlockStart:r,marginInline:r,marginInlineEnd:r,marginInlineStart:r,padding:r,paddingTop:r,paddingRight:r,paddingBottom:r,paddingLeft:r,paddingBlock:r,paddingBlockEnd:r,paddingBlockStart:r,paddingInline:r,paddingInlineEnd:r,paddingInlineStart:r,top:r,right:r,bottom:r,left:r,scrollMargin:r,scrollMarginTop:r,scrollMarginRight:r,scrollMarginBottom:r,scrollMarginLeft:r,scrollMarginX:r,scrollMarginY:r,scrollMarginBlock:r,scrollMarginBlockEnd:r,scrollMarginBlockStart:r,scrollMarginInline:r,scrollMarginInlineEnd:r,scrollMarginInlineStart:r,scrollPadding:r,scrollPaddingTop:r,scrollPaddingRight:r,scrollPaddingBottom:r,scrollPaddingLeft:r,scrollPaddingX:r,scrollPaddingY:r,scrollPaddingBlock:r,scrollPaddingBlockEnd:r,scrollPaddingBlockStart:r,scrollPaddingInline:r,scrollPaddingInlineEnd:r,scrollPaddingInlineStart:r,fontSize:\"fontSizes\",background:e,backgroundColor:e,backgroundImage:e,borderImage:e,border:e,borderBlock:e,borderBlockEnd:e,borderBlockStart:e,borderBottom:e,borderBottomColor:e,borderColor:e,borderInline:e,borderInlineEnd:e,borderInlineStart:e,borderLeft:e,borderLeftColor:e,borderRight:e,borderRightColor:e,borderTop:e,borderTopColor:e,caretColor:e,color:e,columnRuleColor:e,fill:e,outline:e,outlineColor:e,stroke:e,textDecorationColor:e,fontFamily:\"fonts\",fontWeight:\"fontWeights\",lineHeight:\"lineHeights\",letterSpacing:\"letterSpacings\",blockSize:t,minBlockSize:t,maxBlockSize:t,inlineSize:t,minInlineSize:t,maxInlineSize:t,width:t,minWidth:t,maxWidth:t,height:t,minHeight:t,maxHeight:t,flexBasis:t,gridTemplateColumns:t,gridTemplateRows:t,borderWidth:\"borderWidths\",borderTopWidth:\"borderWidths\",borderRightWidth:\"borderWidths\",borderBottomWidth:\"borderWidths\",borderLeftWidth:\"borderWidths\",borderStyle:\"borderStyles\",borderTopStyle:\"borderStyles\",borderRightStyle:\"borderStyles\",borderBottomStyle:\"borderStyles\",borderLeftStyle:\"borderStyles\",borderRadius:\"radii\",borderTopLeftRadius:\"radii\",borderTopRightRadius:\"radii\",borderBottomRightRadius:\"radii\",borderBottomLeftRadius:\"radii\",boxShadow:\"shadows\",textShadow:\"shadows\",transition:\"transitions\",zIndex:\"zIndices\"},i=(e,t)=>\"function\"==typeof t?{\"()\":Function.prototype.toString.call(t)}:t,o=()=>{const e=Object.create(null);return(t,r,...n)=>{const o=(e=>JSON.stringify(e,i))(t);return o in e?e[o]:e[o]=r(t,...n)}},l=Symbol.for(\"sxs.internal\"),s=(e,t)=>Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)),a=e=>{for(const t in e)return!0;return!1},{hasOwnProperty:c}=Object.prototype,d=e=>e.includes(\"-\")?e:e.replace(/[A-Z]/g,(e=>\"-\"+e.toLowerCase())),g=/\\s+(?![^()]*\\))/,p=e=>t=>e(...\"string\"==typeof t?String(t).split(g):[t]),u={appearance:e=>({WebkitAppearance:e,appearance:e}),backfaceVisibility:e=>({WebkitBackfaceVisibility:e,backfaceVisibility:e}),backdropFilter:e=>({WebkitBackdropFilter:e,backdropFilter:e}),backgroundClip:e=>({WebkitBackgroundClip:e,backgroundClip:e}),boxDecorationBreak:e=>({WebkitBoxDecorationBreak:e,boxDecorationBreak:e}),clipPath:e=>({WebkitClipPath:e,clipPath:e}),content:e=>({content:e.includes('\"')||e.includes(\"'\")||/^([A-Za-z]+\\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)$/.test(e)?e:`\"${e}\"`}),hyphens:e=>({WebkitHyphens:e,hyphens:e}),maskImage:e=>({WebkitMaskImage:e,maskImage:e}),maskSize:e=>({WebkitMaskSize:e,maskSize:e}),tabSize:e=>({MozTabSize:e,tabSize:e}),textSizeAdjust:e=>({WebkitTextSizeAdjust:e,textSizeAdjust:e}),userSelect:e=>({WebkitUserSelect:e,userSelect:e}),marginBlock:p(((e,t)=>({marginBlockStart:e,marginBlockEnd:t||e}))),marginInline:p(((e,t)=>({marginInlineStart:e,marginInlineEnd:t||e}))),maxSize:p(((e,t)=>({maxBlockSize:e,maxInlineSize:t||e}))),minSize:p(((e,t)=>({minBlockSize:e,minInlineSize:t||e}))),paddingBlock:p(((e,t)=>({paddingBlockStart:e,paddingBlockEnd:t||e}))),paddingInline:p(((e,t)=>({paddingInlineStart:e,paddingInlineEnd:t||e})))},h=/([\\d.]+)([^]*)/,f=(e,t)=>e.length?e.reduce(((e,r)=>(e.push(...t.map((e=>e.includes(\"&\")?e.replace(/&/g,/[ +>|~]/.test(r)&&/&.*&/.test(e)?`:is(${r})`:r):r+\" \"+e))),e)),[]):t,m=(e,t)=>e in b&&\"string\"==typeof t?t.replace(/^((?:[^]*[^\\w-])?)(fit-content|stretch)((?:[^\\w-][^]*)?)$/,((t,r,n,i)=>r+(\"stretch\"===n?`-moz-available${i};${d(e)}:${r}-webkit-fill-available`:`-moz-fit-content${i};${d(e)}:${r}fit-content`)+i)):String(t),b={blockSize:1,height:1,inlineSize:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,width:1},S=e=>e?e+\"-\":\"\",k=(e,t,r)=>e.replace(/([+-])?((?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][+-]?\\d+)?)?(\\$|--)([$\\w-]+)/g,((e,n,i,o,l)=>\"$\"==o==!!i?e:(n||\"--\"==o?\"calc(\":\"\")+\"var(--\"+(\"$\"===o?S(t)+(l.includes(\"$\")?\"\":S(r))+l.replace(/\\$/g,\"-\"):l)+\")\"+(n||\"--\"==o?\"*\"+(n||\"\")+(i||\"1\")+\")\":\"\"))),y=/\\s*,\\s*(?![^()]*\\))/,B=Object.prototype.toString,$=(e,t,r,n,i)=>{let o,l,s;const a=(e,t,r)=>{let c,g;const p=e=>{for(c in e){const R=64===c.charCodeAt(0),z=R&&Array.isArray(e[c])?e[c]:[e[c]];for(g of z){const e=/[A-Z]/.test($=c)?$:$.replace(/-[^]/g,(e=>e[1].toUpperCase())),z=\"object\"==typeof g&&g&&g.toString===B&&(!n.utils[e]||!t.length);if(e in n.utils&&!z){const t=n.utils[e];if(t!==l){l=t,p(t(g)),l=null;continue}}else if(e in u){const t=u[e];if(t!==s){s=t,p(t(g)),s=null;continue}}if(R&&(b=c.slice(1)in n.media?\"@media \"+n.media[c.slice(1)]:c,c=b.replace(/\\(\\s*([\\w-]+)\\s*(=|<|<=|>|>=)\\s*([\\w-]+)\\s*(?:(<|<=|>|>=)\\s*([\\w-]+)\\s*)?\\)/g,((e,t,r,n,i,o)=>{const l=h.test(t),s=.0625*(l?-1:1),[a,c]=l?[n,t]:[t,n];return\"(\"+(\"=\"===r[0]?\"\":\">\"===r[0]===l?\"max-\":\"min-\")+a+\":\"+(\"=\"!==r[0]&&1===r.length?c.replace(h,((e,t,n)=>Number(t)+s*(\">\"===r?1:-1)+n)):c)+(i?\") and (\"+(\">\"===i[0]?\"min-\":\"max-\")+a+\":\"+(1===i.length?o.replace(h,((e,t,r)=>Number(t)+s*(\">\"===i?-1:1)+r)):o):\"\")+\")\"}))),z){const e=R?r.concat(c):[...r],n=R?[...t]:f(t,c.split(y));void 0!==o&&i(x(...o)),o=void 0,a(g,n,e)}else void 0===o&&(o=[[],t,r]),c=R||36!==c.charCodeAt(0)?c:`--${S(n.prefix)}${c.slice(1).replace(/\\$/g,\"-\")}`,g=z?g:\"number\"==typeof g?g&&e in I?String(g)+\"px\":String(g):k(m(e,null==g?\"\":g),n.prefix,n.themeMap[e]),o[0].push(`${R?`${c} `:`${d(c)}:`}${g}`)}}var b,$};p(e),void 0!==o&&i(x(...o)),o=void 0};a(e,t,r)},x=(e,t,r)=>`${r.map((e=>`${e}{`)).join(\"\")}${t.length?`${t.join(\",\")}{`:\"\"}${e.join(\";\")}${t.length?\"}\":\"\"}${Array(r.length?r.length+1:0).join(\"}\")}`,I={animationDelay:1,animationDuration:1,backgroundSize:1,blockSize:1,border:1,borderBlock:1,borderBlockEnd:1,borderBlockEndWidth:1,borderBlockStart:1,borderBlockStartWidth:1,borderBlockWidth:1,borderBottom:1,borderBottomLeftRadius:1,borderBottomRightRadius:1,borderBottomWidth:1,borderEndEndRadius:1,borderEndStartRadius:1,borderInlineEnd:1,borderInlineEndWidth:1,borderInlineStart:1,borderInlineStartWidth:1,borderInlineWidth:1,borderLeft:1,borderLeftWidth:1,borderRadius:1,borderRight:1,borderRightWidth:1,borderSpacing:1,borderStartEndRadius:1,borderStartStartRadius:1,borderTop:1,borderTopLeftRadius:1,borderTopRightRadius:1,borderTopWidth:1,borderWidth:1,bottom:1,columnGap:1,columnRule:1,columnRuleWidth:1,columnWidth:1,containIntrinsicSize:1,flexBasis:1,fontSize:1,gap:1,gridAutoColumns:1,gridAutoRows:1,gridTemplateColumns:1,gridTemplateRows:1,height:1,inlineSize:1,inset:1,insetBlock:1,insetBlockEnd:1,insetBlockStart:1,insetInline:1,insetInlineEnd:1,insetInlineStart:1,left:1,letterSpacing:1,margin:1,marginBlock:1,marginBlockEnd:1,marginBlockStart:1,marginBottom:1,marginInline:1,marginInlineEnd:1,marginInlineStart:1,marginLeft:1,marginRight:1,marginTop:1,maxBlockSize:1,maxHeight:1,maxInlineSize:1,maxWidth:1,minBlockSize:1,minHeight:1,minInlineSize:1,minWidth:1,offsetDistance:1,offsetRotate:1,outline:1,outlineOffset:1,outlineWidth:1,overflowClipMargin:1,padding:1,paddingBlock:1,paddingBlockEnd:1,paddingBlockStart:1,paddingBottom:1,paddingInline:1,paddingInlineEnd:1,paddingInlineStart:1,paddingLeft:1,paddingRight:1,paddingTop:1,perspective:1,right:1,rowGap:1,scrollMargin:1,scrollMarginBlock:1,scrollMarginBlockEnd:1,scrollMarginBlockStart:1,scrollMarginBottom:1,scrollMarginInline:1,scrollMarginInlineEnd:1,scrollMarginInlineStart:1,scrollMarginLeft:1,scrollMarginRight:1,scrollMarginTop:1,scrollPadding:1,scrollPaddingBlock:1,scrollPaddingBlockEnd:1,scrollPaddingBlockStart:1,scrollPaddingBottom:1,scrollPaddingInline:1,scrollPaddingInlineEnd:1,scrollPaddingInlineStart:1,scrollPaddingLeft:1,scrollPaddingRight:1,scrollPaddingTop:1,shapeMargin:1,textDecoration:1,textDecorationThickness:1,textIndent:1,textUnderlineOffset:1,top:1,transitionDelay:1,transitionDuration:1,verticalAlign:1,width:1,wordSpacing:1},R=e=>String.fromCharCode(e+(e>25?39:97)),z=e=>(e=>{let t,r=\"\";for(t=Math.abs(e);t>52;t=t/52|0)r=R(t%52)+r;return R(t%52)+r})(((e,t)=>{let r=t.length;for(;r;)e=33*e^t.charCodeAt(--r);return e})(5381,JSON.stringify(e))>>>0),W=[\"themed\",\"global\",\"styled\",\"onevar\",\"resonevar\",\"allvar\",\"inline\"],j=e=>{if(e.href&&!e.href.startsWith(location.origin))return!1;try{return!!e.cssRules}catch(e){return!1}},E=e=>{let t;const r=()=>{const{cssRules:e}=t.sheet;return[].map.call(e,((r,n)=>{const{cssText:i}=r;let o=\"\";if(i.startsWith(\"--sxs\"))return\"\";if(e[n-1]&&(o=e[n-1].cssText).startsWith(\"--sxs\")){if(!r.cssRules.length)return\"\";for(const e in t.rules)if(t.rules[e].group===r)return`--sxs{--sxs:${[...t.rules[e].cache].join(\" \")}}${i}`;return r.cssRules.length?`${o}${i}`:\"\"}return i})).join(\"\")},n=()=>{if(t){const{rules:e,sheet:r}=t;if(!r.deleteRule){for(;3===Object(Object(r.cssRules)[0]).type;)r.cssRules.splice(0,1);r.cssRules=[]}for(const t in e)delete e[t]}const i=Object(e).styleSheets||[];for(const e of i)if(j(e)){for(let i=0,o=e.cssRules;o[i];++i){const l=Object(o[i]);if(1!==l.type)continue;const s=Object(o[i+1]);if(4!==s.type)continue;++i;const{cssText:a}=l;if(!a.startsWith(\"--sxs\"))continue;const c=a.slice(14,-3).trim().split(/\\s+/),d=W[c[0]];d&&(t||(t={sheet:e,reset:n,rules:{},toString:r}),t.rules[d]={group:s,index:i,cache:new Set(c)})}if(t)break}if(!t){const i=(e,t)=>({type:t,cssRules:[],insertRule(e,t){this.cssRules.splice(t,0,i(e,{import:3,undefined:1}[(e.toLowerCase().match(/^@([a-z]+)/)||[])[1]]||4))},get cssText(){return\"@media{}\"===e?`@media{${[].map.call(this.cssRules,(e=>e.cssText)).join(\"\")}}`:e}});t={sheet:e?(e.head||e).appendChild(document.createElement(\"style\")).sheet:i(\"\",\"text/css\"),rules:{},reset:n,toString:r}}const{sheet:o,rules:l}=t;for(let e=W.length-1;e>=0;--e){const t=W[e];if(!l[t]){const r=W[e+1],n=l[r]?l[r].index:o.cssRules.length;o.insertRule(\"@media{}\",n),o.insertRule(`--sxs{--sxs:${e}}`,n),l[t]={group:o.cssRules[n+1],index:n,cache:new Set([e])}}v(l[t])}};return n(),t},v=e=>{const t=e.group;let r=t.cssRules.length;e.apply=e=>{try{t.insertRule(e,r),++r}catch(e){}}},T=Symbol(),w=o(),M=(e,t)=>w(e,(()=>(...r)=>{let n={type:null,composers:new Set};for(const t of r)if(null!=t)if(t[l]){null==n.type&&(n.type=t[l].type);for(const e of t[l].composers)n.composers.add(e)}else t.constructor!==Object||t.$$typeof?null==n.type&&(n.type=t):n.composers.add(C(t,e));return null==n.type&&(n.type=\"span\"),n.composers.size||n.composers.add([\"PJLV\",{},[],[],{},[]]),P(e,n,t)})),C=({variants:e,compoundVariants:t,defaultVariants:r,...n},i)=>{const o=`${S(i.prefix)}c-${z(n)}`,l=[],s=[],d=Object.create(null),g=[];for(const e in r)d[e]=String(r[e]);if(\"object\"==typeof e&&e)for(const t in e){p=d,u=t,c.call(p,u)||(d[t]=\"undefined\");const r=e[t];for(const e in r){const n={[t]:String(e)};\"undefined\"===String(e)&&g.push(t);const i=r[e],o=[n,i,!a(i)];l.push(o)}}var p,u;if(\"object\"==typeof t&&t)for(const e of t){let{css:t,...r}=e;t=\"object\"==typeof t&&t||{};for(const e in r)r[e]=String(r[e]);const n=[r,t,!a(t)];s.push(n)}return[o,n,l,s,d,g]},P=(e,t,r)=>{const[n,i,o,a]=L(t.composers),c=\"function\"==typeof t.type||t.type.$$typeof?(e=>{function t(){for(let r=0;r<t[T].length;r++){const[n,i]=t[T][r];e.rules[n].apply(i)}return t[T]=[],null}return t[T]=[],t.rules={},W.forEach((e=>t.rules[e]={apply:r=>t[T].push([e,r])})),t})(r):null,d=(c||r).rules,g=`.${n}${i.length>1?`:where(.${i.slice(1).join(\".\")})`:\"\"}`,p=l=>{l=\"object\"==typeof l&&l||A;const{css:s,...p}=l,u={};for(const e in o)if(delete p[e],e in l){let t=l[e];\"object\"==typeof t&&t?u[e]={\"@initial\":o[e],...t}:(t=String(t),u[e]=\"undefined\"!==t||a.has(e)?t:o[e])}else u[e]=o[e];const h=new Set([...i]);for(const[n,i,o,l]of t.composers){r.rules.styled.cache.has(n)||(r.rules.styled.cache.add(n),$(i,[`.${n}`],[],e,(e=>{d.styled.apply(e)})));const t=O(o,u,e.media),s=O(l,u,e.media,!0);for(const i of t)if(void 0!==i)for(const[t,o,l]of i){const i=`${n}-${z(o)}-${t}`;h.add(i);const s=(l?r.rules.resonevar:r.rules.onevar).cache,a=l?d.resonevar:d.onevar;s.has(i)||(s.add(i),$(o,[`.${i}`],[],e,(e=>{a.apply(e)})))}for(const t of s)if(void 0!==t)for(const[i,o]of t){const t=`${n}-${z(o)}-${i}`;h.add(t),r.rules.allvar.cache.has(t)||(r.rules.allvar.cache.add(t),$(o,[`.${t}`],[],e,(e=>{d.allvar.apply(e)})))}}if(\"object\"==typeof s&&s){const t=`${n}-i${z(s)}-css`;h.add(t),r.rules.inline.cache.has(t)||(r.rules.inline.cache.add(t),$(s,[`.${t}`],[],e,(e=>{d.inline.apply(e)})))}for(const e of String(l.className||\"\").trim().split(/\\s+/))e&&h.add(e);const f=p.className=[...h].join(\" \");return{type:t.type,className:f,selector:g,props:p,toString:()=>f,deferredInjector:c}};return s(p,{className:n,selector:g,[l]:t,toString:()=>(r.rules.styled.cache.has(n)||p(),n)})},L=e=>{let t=\"\";const r=[],n={},i=[];for(const[o,,,,l,s]of e){\"\"===t&&(t=o),r.push(o),i.push(...s);for(const e in l){const t=l[e];(void 0===n[e]||\"undefined\"!==t||s.includes(t))&&(n[e]=t)}}return[t,r,n,new Set(i)]},O=(e,t,r,n)=>{const i=[];e:for(let[o,l,s]of e){if(s)continue;let e,a=0,c=!1;for(e in o){const n=o[e];let i=t[e];if(i!==n){if(\"object\"!=typeof i||!i)continue e;{let e,t,o=0;for(const l in i){if(n===String(i[l])){if(\"@initial\"!==l){const e=l.slice(1);(t=t||[]).push(e in r?r[e]:l.replace(/^@media ?/,\"\")),c=!0}a+=o,e=!0}++o}if(t&&t.length&&(l={[\"@media \"+t.join(\", \")]:l}),!e)continue e}}}(i[a]=i[a]||[]).push([n?\"cv\":`${e}-${o[e]}`,l,c])}return i},A={},N=o(),D=(e,t)=>N(e,(()=>(...r)=>{const n=()=>{for(let n of r){n=\"object\"==typeof n&&n||{};let r=z(n);if(!t.rules.global.cache.has(r)){if(t.rules.global.cache.add(r),\"@import\"in n){let e=[].indexOf.call(t.sheet.cssRules,t.rules.themed.group)-1;for(let r of[].concat(n[\"@import\"]))r=r.includes('\"')||r.includes(\"'\")?r:`\"${r}\"`,t.sheet.insertRule(`@import ${r};`,e++);delete n[\"@import\"]}$(n,[],[],e,(e=>{t.rules.global.apply(e)}))}}return\"\"};return s(n,{toString:n})})),H=o(),V=(e,t)=>H(e,(()=>r=>{const n=`${S(e.prefix)}k-${z(r)}`,i=()=>{if(!t.rules.global.cache.has(n)){t.rules.global.cache.add(n);const i=[];$(r,[],[],e,(e=>i.push(e)));const o=`@keyframes ${n}{${i.join(\"\")}}`;t.rules.global.apply(o)}return n};return s(i,{get name(){return i()},toString:i})})),G=class{constructor(e,t,r,n){this.token=null==e?\"\":String(e),this.value=null==t?\"\":String(t),this.scale=null==r?\"\":String(r),this.prefix=null==n?\"\":String(n)}get computedValue(){return\"var(\"+this.variable+\")\"}get variable(){return\"--\"+S(this.prefix)+S(this.scale)+this.token}toString(){return this.computedValue}},F=o(),J=(e,t)=>F(e,(()=>(r,n)=>{n=\"object\"==typeof r&&r||Object(n);const i=`.${r=(r=\"string\"==typeof r?r:\"\")||`${S(e.prefix)}t-${z(n)}`}`,o={},l=[];for(const t in n){o[t]={};for(const r in n[t]){const i=`--${S(e.prefix)}${t}-${r}`,s=k(String(n[t][r]),e.prefix,t);o[t][r]=new G(r,s,t,e.prefix),l.push(`${i}:${s}`)}}const s=()=>{if(l.length&&!t.rules.themed.cache.has(r)){t.rules.themed.cache.add(r);const i=`${n===e.theme?\":root,\":\"\"}.${r}{${l.join(\";\")}}`;t.rules.themed.apply(i)}return r};return{...o,get className(){return s()},selector:i,toString:s}})),U=o();import Z from\"react\";var X,Y=o(),q=e=>{const t=(e=>{let t=!1;const r=U(e,(e=>{t=!0;const r=\"prefix\"in(e=\"object\"==typeof e&&e||{})?String(e.prefix):\"\",i=\"object\"==typeof e.media&&e.media||{},o=\"object\"==typeof e.root?e.root||null:globalThis.document||null,l=\"object\"==typeof e.theme&&e.theme||{},s={prefix:r,media:i,theme:l,themeMap:\"object\"==typeof e.themeMap&&e.themeMap||{...n},utils:\"object\"==typeof e.utils&&e.utils||{}},a=E(o),c={css:M(s,a),globalCss:D(s,a),keyframes:V(s,a),createTheme:J(s,a),reset(){a.reset(),c.theme.toString()},theme:{},sheet:a,config:s,prefix:r,getCssText:a.toString,toString:a.toString};return String(c.theme=c.createTheme(l)),c}));return t||r.reset(),r})(e);return t.styled=(({config:e,sheet:t})=>Y(e,(()=>{const r=M(e,t);return(...e)=>{const t=r(...e),n=t[l].type,i=Z.forwardRef(((e,r)=>{const i=e&&e.as||n,{props:o,deferredInjector:l}=t(e);return delete o.as,o.ref=r,l?Z.createElement(Z.Fragment,null,Z.createElement(i,o),Z.createElement(l,null)):Z.createElement(i,o)}));return i.className=t.className,i.displayName=`Styled.${n.displayName||n.name||n}`,i.selector=t.selector,i.toString=()=>t.selector,i[l]=t[l],i}})))(t),t},K=()=>X||(X=q()),Q=(...e)=>K().createTheme(...e),_=(...e)=>K().globalCss(...e),ee=(...e)=>K().keyframes(...e),te=(...e)=>K().css(...e),re=(...e)=>K().styled(...e);export{q as createStitches,Q as createTheme,te as css,n as defaultThemeMap,_ as globalCss,ee as keyframes,re as styled};\n//# sourceMappingUrl=index.map","import { forwardRef, createElement } from 'react';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nvar _excluded = [\"color\"];\nvar AccessibilityIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877197 7.49984C0.877197 3.84216 3.84234 0.877014 7.50003 0.877014C11.1577 0.877014 14.1229 3.84216 14.1229 7.49984C14.1229 11.1575 11.1577 14.1227 7.50003 14.1227C3.84234 14.1227 0.877197 11.1575 0.877197 7.49984ZM7.50003 1.82701C4.36702 1.82701 1.8272 4.36683 1.8272 7.49984C1.8272 10.6328 4.36702 13.1727 7.50003 13.1727C10.633 13.1727 13.1729 10.6328 13.1729 7.49984C13.1729 4.36683 10.633 1.82701 7.50003 1.82701ZM7.12457 9.00001C7.06994 9.12735 6.33165 11.9592 6.33165 11.9592C6.26018 12.226 5.98601 12.3843 5.71928 12.3128C5.45255 12.2413 5.29425 11.9672 5.36573 11.7004C5.36573 11.7004 6.24661 8.87268 6.24661 8.27007V6.80099L4.28763 6.27608C4.0209 6.20461 3.86261 5.93045 3.93408 5.66371C4.00555 5.39698 4.27972 5.23869 4.54645 5.31016C4.54645 5.31016 6.20042 5.87268 6.84579 5.87268H8.15505C8.80042 5.87268 10.4534 5.31042 10.4534 5.31042C10.7202 5.23895 10.9943 5.39724 11.0658 5.66397C11.1373 5.93071 10.979 6.20487 10.7122 6.27635L8.74661 6.80303V8.27007C8.74661 8.87268 9.62663 11.6971 9.62663 11.6971C9.6981 11.9639 9.5398 12.238 9.27307 12.3095C9.00634 12.381 8.73217 12.2227 8.6607 11.956C8.6607 11.956 7.91994 9.12735 7.86866 9.00001C7.81994 8.87268 7.65006 8.87268 7.65006 8.87268H7.34317C7.34317 8.87268 7.16994 8.87268 7.12457 9.00001ZM7.50043 5.12007C8.12175 5.12007 8.62543 4.61639 8.62543 3.99507C8.62543 3.37375 8.12175 2.87007 7.50043 2.87007C6.87911 2.87007 6.37543 3.37375 6.37543 3.99507C6.37543 4.61639 6.87911 5.12007 7.50043 5.12007Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1 = [\"color\"];\nvar ActivityLogIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0 1.5C0 1.22386 0.223858 1 0.5 1H2.5C2.77614 1 3 1.22386 3 1.5C3 1.77614 2.77614 2 2.5 2H0.5C0.223858 2 0 1.77614 0 1.5ZM4 1.5C4 1.22386 4.22386 1 4.5 1H14.5C14.7761 1 15 1.22386 15 1.5C15 1.77614 14.7761 2 14.5 2H4.5C4.22386 2 4 1.77614 4 1.5ZM4 4.5C4 4.22386 4.22386 4 4.5 4H11.5C11.7761 4 12 4.22386 12 4.5C12 4.77614 11.7761 5 11.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM0 7.5C0 7.22386 0.223858 7 0.5 7H2.5C2.77614 7 3 7.22386 3 7.5C3 7.77614 2.77614 8 2.5 8H0.5C0.223858 8 0 7.77614 0 7.5ZM4 7.5C4 7.22386 4.22386 7 4.5 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H4.5C4.22386 8 4 7.77614 4 7.5ZM4 10.5C4 10.2239 4.22386 10 4.5 10H11.5C11.7761 10 12 10.2239 12 10.5C12 10.7761 11.7761 11 11.5 11H4.5C4.22386 11 4 10.7761 4 10.5ZM0 13.5C0 13.2239 0.223858 13 0.5 13H2.5C2.77614 13 3 13.2239 3 13.5C3 13.7761 2.77614 14 2.5 14H0.5C0.223858 14 0 13.7761 0 13.5ZM4 13.5C4 13.2239 4.22386 13 4.5 13H14.5C14.7761 13 15 13.2239 15 13.5C15 13.7761 14.7761 14 14.5 14H4.5C4.22386 14 4 13.7761 4 13.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2 = [\"color\"];\nvar AlignBaselineIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10.5 1.75003C10.7107 1.75003 10.8988 1.88217 10.9703 2.08042L13.9703 10.4C14.064 10.6598 13.9293 10.9463 13.6696 11.04C13.4098 11.1336 13.1233 10.999 13.0296 10.7392L12.0477 8.01606H8.95227L7.97031 10.7392C7.87664 10.999 7.59012 11.1336 7.33035 11.04C7.07058 10.9463 6.93593 10.6598 7.0296 10.4L10.0296 2.08042C10.1011 1.88217 10.2892 1.75003 10.5 1.75003ZM10.5 3.72402L11.7411 7.16606H9.25877L10.5 3.72402ZM2.49949 2.09997C2.7204 2.09997 2.89949 2.27906 2.89949 2.49997L2.89949 9.53428L4.21664 8.21713C4.37285 8.06092 4.62612 8.06092 4.78233 8.21713C4.93854 8.37334 4.93854 8.6266 4.78233 8.78281L2.78233 10.7828C2.70732 10.8578 2.60557 10.9 2.49949 10.9C2.3934 10.9 2.29166 10.8578 2.21664 10.7828L0.216645 8.78281C0.0604349 8.6266 0.0604349 8.37334 0.216645 8.21713C0.372854 8.06092 0.62612 8.06092 0.78233 8.21713L2.09949 9.53428L2.09949 2.49997C2.09949 2.27906 2.27857 2.09997 2.49949 2.09997ZM0.0999695 13.5001C0.0999695 13.2791 0.279056 13.1001 0.499969 13.1001H14.5C14.7209 13.1001 14.9 13.2791 14.9 13.5001C14.9 13.721 14.7209 13.9001 14.5 13.9001H0.499969C0.279056 13.9001 0.0999695 13.721 0.0999695 13.5001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3 = [\"color\"];\nvar AlignBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9 3C9 2.44772 8.55229 2 8 2H7C6.44772 2 6 2.44772 6 3L6 14H1.5C1.22386 14 1 14.2239 1 14.5C1 14.7761 1.22386 15 1.5 15L6 15H9H13.5C13.7761 15 14 14.7761 14 14.5C14 14.2239 13.7761 14 13.5 14H9V3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4 = [\"color\"];\nvar AlignCenterHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.99988 6C1.44759 6 0.999877 6.44772 0.999877 7L0.999877 8C0.999877 8.55228 1.44759 9 1.99988 9L6.99988 9L6.99988 13.5C6.99988 13.7761 7.22374 14 7.49988 14C7.77602 14 7.99988 13.7761 7.99988 13.5L7.99988 9L12.9999 9C13.5522 9 13.9999 8.55228 13.9999 8L13.9999 7C13.9999 6.44772 13.5522 6 12.9999 6L7.99988 6L7.99988 1.5C7.99988 1.22386 7.77602 1 7.49988 1C7.22373 1 6.99988 1.22386 6.99988 1.5L6.99988 6L1.99988 6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$5 = [\"color\"];\nvar AlignCenterVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$5);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.99988 1C6.44759 1 5.99988 1.44772 5.99988 2V7H1.49988C1.22374 7 0.999878 7.22386 0.999878 7.5C0.999878 7.77614 1.22374 8 1.49988 8H5.99988V13C5.99988 13.5523 6.44759 14 6.99988 14H7.99988C8.55216 14 8.99988 13.5523 8.99988 13V8H13.4999C13.776 8 13.9999 7.77614 13.9999 7.5C13.9999 7.22386 13.776 7 13.4999 7H8.99988V2C8.99988 1.44772 8.55216 1 7.99988 1L6.99988 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$6 = [\"color\"];\nvar AlignLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$6);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.499995 0.999995C0.223855 0.999995 -5.58458e-07 1.22385 -5.46388e-07 1.49999L-2.18554e-08 13.4999C-9.78492e-09 13.776 0.223855 13.9999 0.499995 13.9999C0.776136 13.9999 0.999991 13.776 0.999991 13.4999L0.999991 8.99993L12 8.99993C12.5523 8.99993 13 8.55222 13 7.99993L13 6.99994C13 6.44766 12.5523 5.99995 12 5.99995L0.999991 5.99995L0.999991 1.49999C0.999991 1.22385 0.776135 0.999995 0.499995 0.999995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$7 = [\"color\"];\nvar AlignRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$7);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14.4999 1C14.2237 1 13.9999 1.22386 13.9999 1.5L13.9999 6L2.99988 6C2.44759 6 1.99988 6.44772 1.99988 7L1.99988 8C1.99988 8.55228 2.44759 9 2.99988 9L13.9999 9L13.9999 13.5C13.9999 13.7761 14.2237 14 14.4999 14C14.776 14 14.9999 13.7761 14.9999 13.5L14.9999 9L14.9999 6L14.9999 1.5C14.9999 1.22386 14.776 1 14.4999 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$8 = [\"color\"];\nvar AlignTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$8);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.5 0C1.22386 0 1 0.223858 1 0.5C1 0.776142 1.22386 1 1.5 1H6V12C6 12.5523 6.44772 13 7 13H8C8.55228 13 9 12.5523 9 12V1H13.5C13.7761 1 14 0.776142 14 0.5C14 0.223858 13.7761 0 13.5 0H9H6H1.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$9 = [\"color\"];\nvar AllSidesIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$9);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 0.75L9.75 3H5.25L7.5 0.75ZM7.5 14.25L9.75 12H5.25L7.5 14.25ZM3 5.25L0.75 7.5L3 9.75V5.25ZM14.25 7.5L12 5.25V9.75L14.25 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$a = [\"color\"];\nvar AngleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$a);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.8914 2.1937C9.1158 2.35464 9.16725 2.66701 9.00631 2.89141L2.47388 12H13.5C13.7761 12 14 12.2239 14 12.5C14 12.7762 13.7761 13 13.5 13H1.5C1.31254 13 1.14082 12.8952 1.0552 12.7284C0.969578 12.5616 0.984438 12.361 1.09369 12.2086L8.19369 2.30862C8.35462 2.08422 8.667 2.03277 8.8914 2.1937ZM11.1 6.50001C11.1 6.22387 11.3238 6.00001 11.6 6.00001C11.8761 6.00001 12.1 6.22387 12.1 6.50001C12.1 6.77615 11.8761 7.00001 11.6 7.00001C11.3238 7.00001 11.1 6.77615 11.1 6.50001ZM10.4 4.00001C10.1239 4.00001 9.90003 4.22387 9.90003 4.50001C9.90003 4.77615 10.1239 5.00001 10.4 5.00001C10.6762 5.00001 10.9 4.77615 10.9 4.50001C10.9 4.22387 10.6762 4.00001 10.4 4.00001ZM12.1 8.50001C12.1 8.22387 12.3238 8.00001 12.6 8.00001C12.8761 8.00001 13.1 8.22387 13.1 8.50001C13.1 8.77615 12.8761 9.00001 12.6 9.00001C12.3238 9.00001 12.1 8.77615 12.1 8.50001ZM13.4 10C13.1239 10 12.9 10.2239 12.9 10.5C12.9 10.7761 13.1239 11 13.4 11C13.6762 11 13.9 10.7761 13.9 10.5C13.9 10.2239 13.6762 10 13.4 10Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$b = [\"color\"];\nvar ArchiveIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$b);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.30902 1C2.93025 1 2.58398 1.214 2.41459 1.55279L1.05279 4.27639C1.01807 4.34582 1 4.42238 1 4.5V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V4.5C14 4.42238 13.9819 4.34582 13.9472 4.27639L12.5854 1.55281C12.416 1.21403 12.0698 1.00003 11.691 1.00003L7.5 1.00001L3.30902 1ZM3.30902 2L7 2.00001V4H2.30902L3.30902 2ZM8 4V2.00002L11.691 2.00003L12.691 4H8ZM7.5 5H13V13H2V5H7.5ZM5.5 7C5.22386 7 5 7.22386 5 7.5C5 7.77614 5.22386 8 5.5 8H9.5C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7H5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$c = [\"color\"];\nvar ArrowBottomLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$c);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.3536 3.64644C11.5488 3.8417 11.5488 4.15828 11.3536 4.35354L4.70711 11L9 11C9.27614 11 9.5 11.2239 9.5 11.5C9.5 11.7761 9.27614 12 9 12L3.5 12C3.36739 12 3.24021 11.9473 3.14645 11.8536C3.05268 11.7598 3 11.6326 3 11.5L3 5.99999C3 5.72385 3.22386 5.49999 3.5 5.49999C3.77614 5.49999 4 5.72385 4 5.99999V10.2929L10.6464 3.64643C10.8417 3.45117 11.1583 3.45117 11.3536 3.64644Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$d = [\"color\"];\nvar ArrowBottomRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$d);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.64645 3.64644C3.45118 3.8417 3.45118 4.15828 3.64645 4.35354L10.2929 11L6 11C5.72386 11 5.5 11.2239 5.5 11.5C5.5 11.7761 5.72386 12 6 12L11.5 12C11.6326 12 11.7598 11.9473 11.8536 11.8536C11.9473 11.7598 12 11.6326 12 11.5L12 5.99999C12 5.72385 11.7761 5.49999 11.5 5.49999C11.2239 5.49999 11 5.72385 11 5.99999V10.2929L4.35355 3.64643C4.15829 3.45117 3.84171 3.45117 3.64645 3.64644Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$e = [\"color\"];\nvar ArrowDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$e);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 2C7.77614 2 8 2.22386 8 2.5L8 11.2929L11.1464 8.14645C11.3417 7.95118 11.6583 7.95118 11.8536 8.14645C12.0488 8.34171 12.0488 8.65829 11.8536 8.85355L7.85355 12.8536C7.75979 12.9473 7.63261 13 7.5 13C7.36739 13 7.24021 12.9473 7.14645 12.8536L3.14645 8.85355C2.95118 8.65829 2.95118 8.34171 3.14645 8.14645C3.34171 7.95118 3.65829 7.95118 3.85355 8.14645L7 11.2929L7 2.5C7 2.22386 7.22386 2 7.5 2Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$f = [\"color\"];\nvar ArrowLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$f);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$g = [\"color\"];\nvar ArrowRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$g);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.14645 3.14645C8.34171 2.95118 8.65829 2.95118 8.85355 3.14645L12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L8.85355 11.8536C8.65829 12.0488 8.34171 12.0488 8.14645 11.8536C7.95118 11.6583 7.95118 11.3417 8.14645 11.1464L11.2929 8H2.5C2.22386 8 2 7.77614 2 7.5C2 7.22386 2.22386 7 2.5 7H11.2929L8.14645 3.85355C7.95118 3.65829 7.95118 3.34171 8.14645 3.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$h = [\"color\"];\nvar ArrowTopLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$h);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.3536 11.3536C11.5488 11.1583 11.5488 10.8417 11.3536 10.6465L4.70711 4L9 4C9.27614 4 9.5 3.77614 9.5 3.5C9.5 3.22386 9.27614 3 9 3L3.5 3C3.36739 3 3.24021 3.05268 3.14645 3.14645C3.05268 3.24022 3 3.36739 3 3.5L3 9.00001C3 9.27615 3.22386 9.50001 3.5 9.50001C3.77614 9.50001 4 9.27615 4 9.00001V4.70711L10.6464 11.3536C10.8417 11.5488 11.1583 11.5488 11.3536 11.3536Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$i = [\"color\"];\nvar ArrowTopRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$i);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.64645 11.3536C3.45118 11.1583 3.45118 10.8417 3.64645 10.6465L10.2929 4L6 4C5.72386 4 5.5 3.77614 5.5 3.5C5.5 3.22386 5.72386 3 6 3L11.5 3C11.6326 3 11.7598 3.05268 11.8536 3.14645C11.9473 3.24022 12 3.36739 12 3.5L12 9.00001C12 9.27615 11.7761 9.50001 11.5 9.50001C11.2239 9.50001 11 9.27615 11 9.00001V4.70711L4.35355 11.3536C4.15829 11.5488 3.84171 11.5488 3.64645 11.3536Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$j = [\"color\"];\nvar ArrowUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$j);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.14645 2.14645C7.34171 1.95118 7.65829 1.95118 7.85355 2.14645L11.8536 6.14645C12.0488 6.34171 12.0488 6.65829 11.8536 6.85355C11.6583 7.04882 11.3417 7.04882 11.1464 6.85355L8 3.70711L8 12.5C8 12.7761 7.77614 13 7.5 13C7.22386 13 7 12.7761 7 12.5L7 3.70711L3.85355 6.85355C3.65829 7.04882 3.34171 7.04882 3.14645 6.85355C2.95118 6.65829 2.95118 6.34171 3.14645 6.14645L7.14645 2.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$k = [\"color\"];\nvar AspectRatioIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$k);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.5 2H12.5C12.7761 2 13 2.22386 13 2.5V12.5C13 12.7761 12.7761 13 12.5 13H2.5C2.22386 13 2 12.7761 2 12.5V2.5C2 2.22386 2.22386 2 2.5 2ZM1 2.5C1 1.67157 1.67157 1 2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5ZM7.5 4C7.77614 4 8 3.77614 8 3.5C8 3.22386 7.77614 3 7.5 3C7.22386 3 7 3.22386 7 3.5C7 3.77614 7.22386 4 7.5 4ZM8 5.5C8 5.77614 7.77614 6 7.5 6C7.22386 6 7 5.77614 7 5.5C7 5.22386 7.22386 5 7.5 5C7.77614 5 8 5.22386 8 5.5ZM7.5 8C7.77614 8 8 7.77614 8 7.5C8 7.22386 7.77614 7 7.5 7C7.22386 7 7 7.22386 7 7.5C7 7.77614 7.22386 8 7.5 8ZM10 7.5C10 7.77614 9.77614 8 9.5 8C9.22386 8 9 7.77614 9 7.5C9 7.22386 9.22386 7 9.5 7C9.77614 7 10 7.22386 10 7.5ZM11.5 8C11.7761 8 12 7.77614 12 7.5C12 7.22386 11.7761 7 11.5 7C11.2239 7 11 7.22386 11 7.5C11 7.77614 11.2239 8 11.5 8Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$l = [\"color\"];\nvar AvatarIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$l);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$m = [\"color\"];\nvar BackpackIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$m);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 1C5 0.447715 5.44772 0 6 0H9C9.55228 0 10 0.447715 10 1V2H14C14.5523 2 15 2.44772 15 3V6C15 6.8888 14.6131 7.68734 14 8.23608V11.5C14 12.3284 13.3284 13 12.5 13H2.5C1.67157 13 1 12.3284 1 11.5V8.2359C0.38697 7.68721 0 6.88883 0 6V3C0 2.44772 0.447716 2 1 2H5V1ZM9 1V2H6V1H9ZM1 3H5H5.5H9.5H10H14V6C14 6.654 13.6866 7.23467 13.1997 7.6004C12.8655 7.85144 12.4508 8 12 8H8V7.5C8 7.22386 7.77614 7 7.5 7C7.22386 7 7 7.22386 7 7.5V8H3C2.5493 8 2.1346 7.85133 1.80029 7.60022C1.31335 7.23446 1 6.65396 1 6V3ZM7 9H3C2.64961 9 2.31292 8.93972 2 8.82905V11.5C2 11.7761 2.22386 12 2.5 12H12.5C12.7761 12 13 11.7761 13 11.5V8.82915C12.6871 8.93978 12.3504 9 12 9H8V9.5C8 9.77614 7.77614 10 7.5 10C7.22386 10 7 9.77614 7 9.5V9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$n = [\"color\"];\nvar BadgeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$n);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.5 6H11.5C12.3284 6 13 6.67157 13 7.5C13 8.32843 12.3284 9 11.5 9H3.5C2.67157 9 2 8.32843 2 7.5C2 6.67157 2.67157 6 3.5 6ZM1 7.5C1 6.11929 2.11929 5 3.5 5H11.5C12.8807 5 14 6.11929 14 7.5C14 8.88071 12.8807 10 11.5 10H3.5C2.11929 10 1 8.88071 1 7.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$o = [\"color\"];\nvar BarChartIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$o);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.5 1C11.7761 1 12 1.22386 12 1.5V13.5C12 13.7761 11.7761 14 11.5 14C11.2239 14 11 13.7761 11 13.5V1.5C11 1.22386 11.2239 1 11.5 1ZM9.5 3C9.77614 3 10 3.22386 10 3.5V13.5C10 13.7761 9.77614 14 9.5 14C9.22386 14 9 13.7761 9 13.5V3.5C9 3.22386 9.22386 3 9.5 3ZM13.5 3C13.7761 3 14 3.22386 14 3.5V13.5C14 13.7761 13.7761 14 13.5 14C13.2239 14 13 13.7761 13 13.5V3.5C13 3.22386 13.2239 3 13.5 3ZM5.5 4C5.77614 4 6 4.22386 6 4.5V13.5C6 13.7761 5.77614 14 5.5 14C5.22386 14 5 13.7761 5 13.5V4.5C5 4.22386 5.22386 4 5.5 4ZM1.5 5C1.77614 5 2 5.22386 2 5.5V13.5C2 13.7761 1.77614 14 1.5 14C1.22386 14 1 13.7761 1 13.5V5.5C1 5.22386 1.22386 5 1.5 5ZM7.5 5C7.77614 5 8 5.22386 8 5.5V13.5C8 13.7761 7.77614 14 7.5 14C7.22386 14 7 13.7761 7 13.5V5.5C7 5.22386 7.22386 5 7.5 5ZM3.5 7C3.77614 7 4 7.22386 4 7.5V13.5C4 13.7761 3.77614 14 3.5 14C3.22386 14 3 13.7761 3 13.5V7.5C3 7.22386 3.22386 7 3.5 7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$p = [\"color\"];\nvar BellIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$p);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.60124 1.25086C8.60124 1.75459 8.26278 2.17927 7.80087 2.30989C10.1459 2.4647 12 4.41582 12 6.79999V10.25C12 11.0563 12.0329 11.7074 12.7236 12.0528C12.931 12.1565 13.0399 12.3892 12.9866 12.6149C12.9333 12.8406 12.7319 13 12.5 13H8.16144C8.36904 13.1832 8.49997 13.4513 8.49997 13.75C8.49997 14.3023 8.05226 14.75 7.49997 14.75C6.94769 14.75 6.49997 14.3023 6.49997 13.75C6.49997 13.4513 6.63091 13.1832 6.83851 13H2.49999C2.2681 13 2.06664 12.8406 2.01336 12.6149C1.96009 12.3892 2.06897 12.1565 2.27638 12.0528C2.96708 11.7074 2.99999 11.0563 2.99999 10.25V6.79999C2.99999 4.41537 4.85481 2.46396 7.20042 2.3098C6.73867 2.17908 6.40036 1.75448 6.40036 1.25086C6.40036 0.643104 6.89304 0.150421 7.5008 0.150421C8.10855 0.150421 8.60124 0.643104 8.60124 1.25086ZM7.49999 3.29999C5.56699 3.29999 3.99999 4.86699 3.99999 6.79999V10.25L4.00002 10.3009C4.0005 10.7463 4.00121 11.4084 3.69929 12H11.3007C10.9988 11.4084 10.9995 10.7463 11 10.3009L11 10.25V6.79999C11 4.86699 9.43299 3.29999 7.49999 3.29999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$q = [\"color\"];\nvar BlendingModeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 9C3 6.5 4.5 4.25 7.5 1.5C10.5 4.25 12 6.5 12 9C12 11.4853 9.98528 13.5 7.5 13.5C5.01472 13.5 3 11.4853 3 9ZM10.9524 8.30307C9.67347 7.82121 8.2879 8.46208 6.98956 9.06259C5.9327 9.55142 4.93365 10.0135 4.09695 9.82153C4.03357 9.55804 4 9.28294 4 9C4 7.11203 5.02686 5.27195 7.5 2.87357C9.66837 4.97639 10.725 6.65004 10.9524 8.30307Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$r = [\"color\"];\nvar BookmarkIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$r);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H11.5C11.7761 2 12 2.22386 12 2.5V13.5C12 13.6818 11.9014 13.8492 11.7424 13.9373C11.5834 14.0254 11.3891 14.0203 11.235 13.924L7.5 11.5896L3.765 13.924C3.61087 14.0203 3.41659 14.0254 3.25762 13.9373C3.09864 13.8492 3 13.6818 3 13.5V2.5ZM4 3V12.5979L6.97 10.7416C7.29427 10.539 7.70573 10.539 8.03 10.7416L11 12.5979V3H4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$s = [\"color\"];\nvar BookmarkFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$s);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V13.5C3 13.6818 3.09864 13.8492 3.25762 13.9373C3.41659 14.0254 3.61087 14.0203 3.765 13.924L7.5 11.5896L11.235 13.924C11.3891 14.0203 11.5834 14.0254 11.7424 13.9373C11.9014 13.8492 12 13.6818 12 13.5V2.5C12 2.22386 11.7761 2 11.5 2H3.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$t = [\"color\"];\nvar BorderAllIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$t);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.25 1C0.25 0.585786 0.585786 0.25 1 0.25H14C14.4142 0.25 14.75 0.585786 14.75 1V14C14.75 14.4142 14.4142 14.75 14 14.75H1C0.585786 14.75 0.25 14.4142 0.25 14V1ZM1.75 1.75V13.25H13.25V1.75H1.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }));\n});\n\nvar _excluded$u = [\"color\"];\nvar BorderBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$u);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 13.25L14 13.25V14.75L1 14.75V13.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }));\n});\n\nvar _excluded$v = [\"color\"];\nvar BorderDashedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$v);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0 7.5C0 7.22386 0.223858 7 0.5 7H3C3.27614 7 3.5 7.22386 3.5 7.5C3.5 7.77614 3.27614 8 3 8H0.5C0.223858 8 0 7.77614 0 7.5ZM5.75 7.5C5.75 7.22386 5.97386 7 6.25 7H8.75C9.02614 7 9.25 7.22386 9.25 7.5C9.25 7.77614 9.02614 8 8.75 8H6.25C5.97386 8 5.75 7.77614 5.75 7.5ZM12 7C11.7239 7 11.5 7.22386 11.5 7.5C11.5 7.77614 11.7239 8 12 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$w = [\"color\"];\nvar BorderDottedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$w);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.5 6.625C1.01675 6.625 0.625 7.01675 0.625 7.5C0.625 7.98325 1.01675 8.375 1.5 8.375C1.98325 8.375 2.375 7.98325 2.375 7.5C2.375 7.01675 1.98325 6.625 1.5 6.625ZM5.5 6.625C5.01675 6.625 4.625 7.01675 4.625 7.5C4.625 7.98325 5.01675 8.375 5.5 8.375C5.98325 8.375 6.375 7.98325 6.375 7.5C6.375 7.01675 5.98325 6.625 5.5 6.625ZM9.5 6.625C9.01675 6.625 8.625 7.01675 8.625 7.5C8.625 7.98325 9.01675 8.375 9.5 8.375C9.98325 8.375 10.375 7.98325 10.375 7.5C10.375 7.01675 9.98325 6.625 9.5 6.625ZM12.625 7.5C12.625 7.01675 13.0168 6.625 13.5 6.625C13.9832 6.625 14.375 7.01675 14.375 7.5C14.375 7.98325 13.9832 8.375 13.5 8.375C13.0168 8.375 12.625 7.98325 12.625 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$x = [\"color\"];\nvar BorderLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$x);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.75 1L1.75 14L0.249999 14L0.25 1L1.75 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"rect\", {\n    x: \"10\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 10 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"10\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 10 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"12\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 12 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"12\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 12 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 5)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 5)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 3)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 3)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 9)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 9)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 11)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 11)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"6\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 6 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"6\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 6 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"4\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 4 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"4\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 4 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"10\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 10 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"12\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 12 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"6\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 6 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"4\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 4 1)\",\n    fill: color\n  }));\n});\n\nvar _excluded$y = [\"color\"];\nvar BorderNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }));\n});\n\nvar _excluded$z = [\"color\"];\nvar BorderRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.25 1L13.25 14L14.75 14L14.75 1L13.25 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 5 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 5 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 3 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 3 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 5)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 5)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 3)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 3)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 9)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 9)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 11)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 11)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 9 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 9 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 11 7)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 11 13)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 5 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 3 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 9 1)\",\n    fill: color\n  }), createElement(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 11 1)\",\n    fill: color\n  }));\n});\n\nvar _excluded$A = [\"color\"];\nvar BorderSolidIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$A);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.25 7.5C1.25 7.22386 1.47386 7 1.75 7H13.25C13.5261 7 13.75 7.22386 13.75 7.5C13.75 7.77614 13.5261 8 13.25 8H1.75C1.47386 8 1.25 7.77614 1.25 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$B = [\"color\"];\nvar BorderSplitIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$B);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"13\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"5\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"3\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"9\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"11\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"7\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"1\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), createElement(\"path\", {\n    d: \"M1 1.49994C1 1.2238 1.22386 0.999939 1.5 0.999939H6V1.99994H2V5.99994H1V1.49994ZM13 1.99994H9V0.999939H13.5C13.7761 0.999939 14 1.2238 14 1.49994V5.99994H13V1.99994ZM1 13.4999V8.99994H2V12.9999H6V13.9999H1.5C1.22386 13.9999 1 13.7761 1 13.4999ZM13 12.9999V8.99994H14V13.4999C14 13.7761 13.7761 13.9999 13.5 13.9999H9.5V12.9999H13Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$C = [\"color\"];\nvar BorderStyleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$C);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H3.5C3.77614 7 4 7.22386 4 7.5C4 7.77614 3.77614 8 3.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11C1.77614 11 2 11.2239 2 11.5C2 11.7761 1.77614 12 1.5 12C1.22386 12 1 11.7761 1 11.5ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11ZM11 11.5C11 11.2239 11.2239 11 11.5 11C11.7761 11 12 11.2239 12 11.5C12 11.7761 11.7761 12 11.5 12C11.2239 12 11 11.7761 11 11.5ZM13.5 11C13.2239 11 13 11.2239 13 11.5C13 11.7761 13.2239 12 13.5 12C13.7761 12 14 11.7761 14 11.5C14 11.2239 13.7761 11 13.5 11ZM6.5 7C6.22386 7 6 7.22386 6 7.5C6 7.77614 6.22386 8 6.5 8H8.5C8.77614 8 9 7.77614 9 7.5C9 7.22386 8.77614 7 8.5 7H6.5ZM11 7.5C11 7.22386 11.2239 7 11.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H11.5C11.2239 8 11 7.77614 11 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$D = [\"color\"];\nvar BorderTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$D);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14 1.75L1 1.75L1 0.249999L14 0.25L14 1.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"10\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 10)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"2\",\n    y: \"10\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 10)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"12\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 12)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"2\",\n    y: \"12\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 12)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"2\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"2\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"10\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 10 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"10\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 10 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"12\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 12 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"12\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 12 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"6\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 6 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"6\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 6 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"4\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 4 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"4\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 4 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"6\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 6)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"2\",\n    y: \"6\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 6)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"8\",\n    y: \"4\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 4)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"2\",\n    y: \"4\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 4)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"10\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 10)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"12\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 12)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 8)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 14)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"6\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 6)\",\n    fill: color\n  }), createElement(\"rect\", {\n    x: \"14\",\n    y: \"4\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 4)\",\n    fill: color\n  }));\n});\n\nvar _excluded$E = [\"color\"];\nvar BorderWidthIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$E);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 3H14V4H1V3ZM1 6H14V8H1V6ZM14 10.25H1V12.75H14V10.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$F = [\"color\"];\nvar BoxIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$F);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.5 2H2.5C2.22386 2 2 2.22386 2 2.5V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$G = [\"color\"];\nvar BoxModelIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$G);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.99998 0.999976C1.44769 0.999976 0.999976 1.44769 0.999976 1.99998V13C0.999976 13.5523 1.44769 14 1.99998 14H13C13.5523 14 14 13.5523 14 13V1.99998C14 1.44769 13.5523 0.999976 13 0.999976H1.99998ZM1.99998 1.99998L13 1.99998V13H1.99998V1.99998ZM4.49996 3.99996C4.22382 3.99996 3.99996 4.22382 3.99996 4.49996V10.5C3.99996 10.7761 4.22382 11 4.49996 11H10.5C10.7761 11 11 10.7761 11 10.5V4.49996C11 4.22382 10.7761 3.99996 10.5 3.99996H4.49996ZM4.99996 9.99996V4.99996H9.99996V9.99996H4.99996Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$H = [\"color\"];\nvar ButtonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$H);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 5H13C13.5523 5 14 5.44772 14 6V9C14 9.55228 13.5523 10 13 10H2C1.44772 10 1 9.55228 1 9V6C1 5.44772 1.44772 5 2 5ZM0 6C0 4.89543 0.895431 4 2 4H13C14.1046 4 15 4.89543 15 6V9C15 10.1046 14.1046 11 13 11H2C0.89543 11 0 10.1046 0 9V6ZM4.5 6.75C4.08579 6.75 3.75 7.08579 3.75 7.5C3.75 7.91421 4.08579 8.25 4.5 8.25C4.91421 8.25 5.25 7.91421 5.25 7.5C5.25 7.08579 4.91421 6.75 4.5 6.75ZM6.75 7.5C6.75 7.08579 7.08579 6.75 7.5 6.75C7.91421 6.75 8.25 7.08579 8.25 7.5C8.25 7.91421 7.91421 8.25 7.5 8.25C7.08579 8.25 6.75 7.91421 6.75 7.5ZM10.5 6.75C10.0858 6.75 9.75 7.08579 9.75 7.5C9.75 7.91421 10.0858 8.25 10.5 8.25C10.9142 8.25 11.25 7.91421 11.25 7.5C11.25 7.08579 10.9142 6.75 10.5 6.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$I = [\"color\"];\nvar CalendarIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$I);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.5 1C4.77614 1 5 1.22386 5 1.5V2H10V1.5C10 1.22386 10.2239 1 10.5 1C10.7761 1 11 1.22386 11 1.5V2H12.5C13.3284 2 14 2.67157 14 3.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V3.5C1 2.67157 1.67157 2 2.5 2H4V1.5C4 1.22386 4.22386 1 4.5 1ZM10 3V3.5C10 3.77614 10.2239 4 10.5 4C10.7761 4 11 3.77614 11 3.5V3H12.5C12.7761 3 13 3.22386 13 3.5V5H2V3.5C2 3.22386 2.22386 3 2.5 3H4V3.5C4 3.77614 4.22386 4 4.5 4C4.77614 4 5 3.77614 5 3.5V3H10ZM2 6V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V6H2ZM7 7.5C7 7.22386 7.22386 7 7.5 7C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8C7.22386 8 7 7.77614 7 7.5ZM9.5 7C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7ZM11 7.5C11 7.22386 11.2239 7 11.5 7C11.7761 7 12 7.22386 12 7.5C12 7.77614 11.7761 8 11.5 8C11.2239 8 11 7.77614 11 7.5ZM11.5 9C11.2239 9 11 9.22386 11 9.5C11 9.77614 11.2239 10 11.5 10C11.7761 10 12 9.77614 12 9.5C12 9.22386 11.7761 9 11.5 9ZM9 9.5C9 9.22386 9.22386 9 9.5 9C9.77614 9 10 9.22386 10 9.5C10 9.77614 9.77614 10 9.5 10C9.22386 10 9 9.77614 9 9.5ZM7.5 9C7.22386 9 7 9.22386 7 9.5C7 9.77614 7.22386 10 7.5 10C7.77614 10 8 9.77614 8 9.5C8 9.22386 7.77614 9 7.5 9ZM5 9.5C5 9.22386 5.22386 9 5.5 9C5.77614 9 6 9.22386 6 9.5C6 9.77614 5.77614 10 5.5 10C5.22386 10 5 9.77614 5 9.5ZM3.5 9C3.22386 9 3 9.22386 3 9.5C3 9.77614 3.22386 10 3.5 10C3.77614 10 4 9.77614 4 9.5C4 9.22386 3.77614 9 3.5 9ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$J = [\"color\"];\nvar CameraIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$J);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 3C1.44772 3 1 3.44772 1 4V11C1 11.5523 1.44772 12 2 12H13C13.5523 12 14 11.5523 14 11V4C14 3.44772 13.5523 3 13 3H2ZM0 4C0 2.89543 0.895431 2 2 2H13C14.1046 2 15 2.89543 15 4V11C15 12.1046 14.1046 13 13 13H2C0.895431 13 0 12.1046 0 11V4ZM2 4.25C2 4.11193 2.11193 4 2.25 4H4.75C4.88807 4 5 4.11193 5 4.25V5.75454C5 5.89261 4.88807 6.00454 4.75 6.00454H2.25C2.11193 6.00454 2 5.89261 2 5.75454V4.25ZM12.101 7.58421C12.101 9.02073 10.9365 10.1853 9.49998 10.1853C8.06346 10.1853 6.89893 9.02073 6.89893 7.58421C6.89893 6.14769 8.06346 4.98315 9.49998 4.98315C10.9365 4.98315 12.101 6.14769 12.101 7.58421ZM13.101 7.58421C13.101 9.57302 11.4888 11.1853 9.49998 11.1853C7.51117 11.1853 5.89893 9.57302 5.89893 7.58421C5.89893 5.5954 7.51117 3.98315 9.49998 3.98315C11.4888 3.98315 13.101 5.5954 13.101 7.58421Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$K = [\"color\"];\nvar CardStackIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$K);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 3.5C2 3.22386 2.22386 3 2.5 3H12.5C12.7761 3 13 3.22386 13 3.5V9.5C13 9.77614 12.7761 10 12.5 10H2.5C2.22386 10 2 9.77614 2 9.5V3.5ZM2 10.9146C1.4174 10.7087 1 10.1531 1 9.5V3.5C1 2.67157 1.67157 2 2.5 2H12.5C13.3284 2 14 2.67157 14 3.5V9.5C14 10.1531 13.5826 10.7087 13 10.9146V11.5C13 12.3284 12.3284 13 11.5 13H3.5C2.67157 13 2 12.3284 2 11.5V10.9146ZM12 11V11.5C12 11.7761 11.7761 12 11.5 12H3.5C3.22386 12 3 11.7761 3 11.5V11H12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$L = [\"color\"];\nvar CardStackMinusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$L);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.5 3C2.22386 3 2 3.22386 2 3.5V9.5C2 9.77614 2.22386 10 2.5 10H12.5C12.7761 10 13 9.77614 13 9.5V3.5C13 3.22386 12.7761 3 12.5 3H2.5ZM1 9.5C1 10.1531 1.4174 10.7087 2 10.9146V11.5C2 12.3284 2.67157 13 3.5 13H11.5C12.3284 13 13 12.3284 13 11.5V10.9146C13.5826 10.7087 14 10.1531 14 9.5V3.5C14 2.67157 13.3284 2 12.5 2H2.5C1.67157 2 1 2.67157 1 3.5V9.5ZM12 11.5V11H3V11.5C3 11.7761 3.22386 12 3.5 12H11.5C11.7761 12 12 11.7761 12 11.5ZM5.5 6C5.22386 6 5 6.22386 5 6.5C5 6.77614 5.22386 7 5.5 7H9.5C9.77614 7 10 6.77614 10 6.5C10 6.22386 9.77614 6 9.5 6H5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$M = [\"color\"];\nvar CardStackPlusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$M);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 3.5C2 3.22386 2.22386 3 2.5 3H12.5C12.7761 3 13 3.22386 13 3.5V9.5C13 9.77614 12.7761 10 12.5 10H2.5C2.22386 10 2 9.77614 2 9.5V3.5ZM2 10.9146C1.4174 10.7087 1 10.1531 1 9.5V3.5C1 2.67157 1.67157 2 2.5 2H12.5C13.3284 2 14 2.67157 14 3.5V9.5C14 10.1531 13.5826 10.7087 13 10.9146V11.5C13 12.3284 12.3284 13 11.5 13H3.5C2.67157 13 2 12.3284 2 11.5V10.9146ZM12 11V11.5C12 11.7761 11.7761 12 11.5 12H3.5C3.22386 12 3 11.7761 3 11.5V11H12ZM5 6.5C5 6.22386 5.22386 6 5.5 6H7V4.5C7 4.22386 7.22386 4 7.5 4C7.77614 4 8 4.22386 8 4.5V6H9.5C9.77614 6 10 6.22386 10 6.5C10 6.77614 9.77614 7 9.5 7H8V8.5C8 8.77614 7.77614 9 7.5 9C7.22386 9 7 8.77614 7 8.5V7H5.5C5.22386 7 5 6.77614 5 6.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$N = [\"color\"];\nvar CaretDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$N);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.18179 6.18181C4.35753 6.00608 4.64245 6.00608 4.81819 6.18181L7.49999 8.86362L10.1818 6.18181C10.3575 6.00608 10.6424 6.00608 10.8182 6.18181C10.9939 6.35755 10.9939 6.64247 10.8182 6.81821L7.81819 9.81821C7.73379 9.9026 7.61934 9.95001 7.49999 9.95001C7.38064 9.95001 7.26618 9.9026 7.18179 9.81821L4.18179 6.81821C4.00605 6.64247 4.00605 6.35755 4.18179 6.18181Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$O = [\"color\"];\nvar CaretLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$O);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.81809 4.18179C8.99383 4.35753 8.99383 4.64245 8.81809 4.81819L6.13629 7.49999L8.81809 10.1818C8.99383 10.3575 8.99383 10.6424 8.81809 10.8182C8.64236 10.9939 8.35743 10.9939 8.1817 10.8182L5.1817 7.81819C5.09731 7.73379 5.0499 7.61933 5.0499 7.49999C5.0499 7.38064 5.09731 7.26618 5.1817 7.18179L8.1817 4.18179C8.35743 4.00605 8.64236 4.00605 8.81809 4.18179Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$P = [\"color\"];\nvar CaretRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$P);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.18194 4.18185C6.35767 4.00611 6.6426 4.00611 6.81833 4.18185L9.81833 7.18185C9.90272 7.26624 9.95013 7.3807 9.95013 7.50005C9.95013 7.6194 9.90272 7.73386 9.81833 7.81825L6.81833 10.8182C6.6426 10.994 6.35767 10.994 6.18194 10.8182C6.0062 10.6425 6.0062 10.3576 6.18194 10.1819L8.86374 7.50005L6.18194 4.81825C6.0062 4.64251 6.0062 4.35759 6.18194 4.18185Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$Q = [\"color\"];\nvar CaretSortIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$Q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$R = [\"color\"];\nvar CaretUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$R);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.18179 8.81819C4.00605 8.64245 4.00605 8.35753 4.18179 8.18179L7.18179 5.18179C7.26618 5.0974 7.38064 5.04999 7.49999 5.04999C7.61933 5.04999 7.73379 5.0974 7.81819 5.18179L10.8182 8.18179C10.9939 8.35753 10.9939 8.64245 10.8182 8.81819C10.6424 8.99392 10.3575 8.99392 10.1818 8.81819L7.49999 6.13638L4.81819 8.81819C4.64245 8.99392 4.35753 8.99392 4.18179 8.81819Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$S = [\"color\"];\nvar ChatBubbleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$S);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.5 3L2.5 3.00002C1.67157 3.00002 1 3.6716 1 4.50002V9.50003C1 10.3285 1.67157 11 2.5 11H7.50003C7.63264 11 7.75982 11.0527 7.85358 11.1465L10 13.2929V11.5C10 11.2239 10.2239 11 10.5 11H12.5C13.3284 11 14 10.3285 14 9.50003V4.5C14 3.67157 13.3284 3 12.5 3ZM2.49999 2.00002L12.5 2C13.8807 2 15 3.11929 15 4.5V9.50003C15 10.8807 13.8807 12 12.5 12H11V14.5C11 14.7022 10.8782 14.8845 10.6913 14.9619C10.5045 15.0393 10.2894 14.9965 10.1464 14.8536L7.29292 12H2.5C1.11929 12 0 10.8807 0 9.50003V4.50002C0 3.11931 1.11928 2.00003 2.49999 2.00002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$T = [\"color\"];\nvar CheckIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$T);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$U = [\"color\"];\nvar CheckCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$U);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.877045C3.84222 0.877045 0.877075 3.84219 0.877075 7.49988C0.877075 11.1575 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1576 0.877045 7.49991 0.877045ZM1.82708 7.49988C1.82708 4.36686 4.36689 1.82704 7.49991 1.82704C10.6329 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6329 13.1727 7.49991 13.1727C4.36689 13.1727 1.82708 10.6329 1.82708 7.49988ZM10.1589 5.53774C10.3178 5.31191 10.2636 5.00001 10.0378 4.84109C9.81194 4.68217 9.50004 4.73642 9.34112 4.96225L6.51977 8.97154L5.35681 7.78706C5.16334 7.59002 4.84677 7.58711 4.64973 7.78058C4.45268 7.97404 4.44978 8.29061 4.64325 8.48765L6.22658 10.1003C6.33054 10.2062 6.47617 10.2604 6.62407 10.2483C6.77197 10.2363 6.90686 10.1591 6.99226 10.0377L10.1589 5.53774Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$V = [\"color\"];\nvar CheckboxIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$V);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 3H12V12H3L3 3ZM2 3C2 2.44771 2.44772 2 3 2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H3C2.44771 13 2 12.5523 2 12V3ZM10.3498 5.51105C10.506 5.28337 10.4481 4.97212 10.2204 4.81587C9.99275 4.65961 9.6815 4.71751 9.52525 4.94519L6.64048 9.14857L5.19733 7.40889C5.02102 7.19635 4.7058 7.16699 4.49327 7.34329C4.28073 7.5196 4.25137 7.83482 4.42767 8.04735L6.2934 10.2964C6.39348 10.4171 6.54437 10.4838 6.70097 10.4767C6.85757 10.4695 7.00177 10.3894 7.09047 10.2601L10.3498 5.51105Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$W = [\"color\"];\nvar ChevronDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$W);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$X = [\"color\"];\nvar ChevronLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$X);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.84182 3.13514C9.04327 3.32401 9.05348 3.64042 8.86462 3.84188L5.43521 7.49991L8.86462 11.1579C9.05348 11.3594 9.04327 11.6758 8.84182 11.8647C8.64036 12.0535 8.32394 12.0433 8.13508 11.8419L4.38508 7.84188C4.20477 7.64955 4.20477 7.35027 4.38508 7.15794L8.13508 3.15794C8.32394 2.95648 8.64036 2.94628 8.84182 3.13514Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$Y = [\"color\"];\nvar ChevronRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$Y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$Z = [\"color\"];\nvar ChevronUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$Z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$_ = [\"color\"];\nvar CircleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$_);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49991C0.877075 3.84222 3.84222 0.877075 7.49991 0.877075C11.1576 0.877075 14.1227 3.84222 14.1227 7.49991C14.1227 11.1576 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1576 0.877075 7.49991ZM7.49991 1.82708C4.36689 1.82708 1.82708 4.36689 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49991C13.1727 4.36689 10.6329 1.82708 7.49991 1.82708Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$$ = [\"color\"];\nvar CircleBackslashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$$);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM3.85768 3.15057C4.84311 2.32448 6.11342 1.82708 7.49991 1.82708C10.6329 1.82708 13.1727 4.36689 13.1727 7.49991C13.1727 8.88638 12.6753 10.1567 11.8492 11.1421L3.85768 3.15057ZM3.15057 3.85768C2.32448 4.84311 1.82708 6.11342 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C8.88638 13.1727 10.1567 12.6753 11.1421 11.8492L3.15057 3.85768Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$10 = [\"color\"];\nvar ClipboardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$10);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$11 = [\"color\"];\nvar ClipboardCopyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$11);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H7V13H3.5C3.22386 13 3 12.7761 3 12.5V2.5C3 2.22386 3.22386 2 3.5 2H4V2.25C4 2.66421 4.33579 3 4.75 3H10.25C10.6642 3 11 2.66421 11 2.25V2H11.5C11.7761 2 12 2.22386 12 2.5V7H13V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM9 8.5C9 8.77614 8.77614 9 8.5 9C8.22386 9 8 8.77614 8 8.5C8 8.22386 8.22386 8 8.5 8C8.77614 8 9 8.22386 9 8.5ZM10.5 9C10.7761 9 11 8.77614 11 8.5C11 8.22386 10.7761 8 10.5 8C10.2239 8 10 8.22386 10 8.5C10 8.77614 10.2239 9 10.5 9ZM13 8.5C13 8.77614 12.7761 9 12.5 9C12.2239 9 12 8.77614 12 8.5C12 8.22386 12.2239 8 12.5 8C12.7761 8 13 8.22386 13 8.5ZM14.5 9C14.7761 9 15 8.77614 15 8.5C15 8.22386 14.7761 8 14.5 8C14.2239 8 14 8.22386 14 8.5C14 8.77614 14.2239 9 14.5 9ZM15 10.5C15 10.7761 14.7761 11 14.5 11C14.2239 11 14 10.7761 14 10.5C14 10.2239 14.2239 10 14.5 10C14.7761 10 15 10.2239 15 10.5ZM14.5 13C14.7761 13 15 12.7761 15 12.5C15 12.2239 14.7761 12 14.5 12C14.2239 12 14 12.2239 14 12.5C14 12.7761 14.2239 13 14.5 13ZM14.5 15C14.7761 15 15 14.7761 15 14.5C15 14.2239 14.7761 14 14.5 14C14.2239 14 14 14.2239 14 14.5C14 14.7761 14.2239 15 14.5 15ZM8.5 11C8.77614 11 9 10.7761 9 10.5C9 10.2239 8.77614 10 8.5 10C8.22386 10 8 10.2239 8 10.5C8 10.7761 8.22386 11 8.5 11ZM9 12.5C9 12.7761 8.77614 13 8.5 13C8.22386 13 8 12.7761 8 12.5C8 12.2239 8.22386 12 8.5 12C8.77614 12 9 12.2239 9 12.5ZM8.5 15C8.77614 15 9 14.7761 9 14.5C9 14.2239 8.77614 14 8.5 14C8.22386 14 8 14.2239 8 14.5C8 14.7761 8.22386 15 8.5 15ZM11 14.5C11 14.7761 10.7761 15 10.5 15C10.2239 15 10 14.7761 10 14.5C10 14.2239 10.2239 14 10.5 14C10.7761 14 11 14.2239 11 14.5ZM12.5 15C12.7761 15 13 14.7761 13 14.5C13 14.2239 12.7761 14 12.5 14C12.2239 14 12 14.2239 12 14.5C12 14.7761 12.2239 15 12.5 15Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$12 = [\"color\"];\nvar ClockIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$12);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.50009 0.877014C3.84241 0.877014 0.877258 3.84216 0.877258 7.49984C0.877258 11.1575 3.8424 14.1227 7.50009 14.1227C11.1578 14.1227 14.1229 11.1575 14.1229 7.49984C14.1229 3.84216 11.1577 0.877014 7.50009 0.877014ZM1.82726 7.49984C1.82726 4.36683 4.36708 1.82701 7.50009 1.82701C10.6331 1.82701 13.1729 4.36683 13.1729 7.49984C13.1729 10.6328 10.6331 13.1727 7.50009 13.1727C4.36708 13.1727 1.82726 10.6328 1.82726 7.49984ZM8 4.50001C8 4.22387 7.77614 4.00001 7.5 4.00001C7.22386 4.00001 7 4.22387 7 4.50001V7.50001C7 7.63262 7.05268 7.7598 7.14645 7.85357L9.14645 9.85357C9.34171 10.0488 9.65829 10.0488 9.85355 9.85357C10.0488 9.65831 10.0488 9.34172 9.85355 9.14646L8 7.29291V4.50001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$13 = [\"color\"];\nvar CodeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$13);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.96424 2.68571C10.0668 2.42931 9.94209 2.13833 9.6857 2.03577C9.4293 1.93322 9.13832 2.05792 9.03576 2.31432L5.03576 12.3143C4.9332 12.5707 5.05791 12.8617 5.3143 12.9642C5.5707 13.0668 5.86168 12.9421 5.96424 12.6857L9.96424 2.68571ZM3.85355 5.14646C4.04882 5.34172 4.04882 5.6583 3.85355 5.85356L2.20711 7.50001L3.85355 9.14646C4.04882 9.34172 4.04882 9.6583 3.85355 9.85356C3.65829 10.0488 3.34171 10.0488 3.14645 9.85356L1.14645 7.85356C0.951184 7.6583 0.951184 7.34172 1.14645 7.14646L3.14645 5.14646C3.34171 4.9512 3.65829 4.9512 3.85355 5.14646ZM11.1464 5.14646C11.3417 4.9512 11.6583 4.9512 11.8536 5.14646L13.8536 7.14646C14.0488 7.34172 14.0488 7.6583 13.8536 7.85356L11.8536 9.85356C11.6583 10.0488 11.3417 10.0488 11.1464 9.85356C10.9512 9.6583 10.9512 9.34172 11.1464 9.14646L12.7929 7.50001L11.1464 5.85356C10.9512 5.6583 10.9512 5.34172 11.1464 5.14646Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$14 = [\"color\"];\nvar CodeSandboxLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$14);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.71144 0.796902C7.57741 0.734357 7.42257 0.734357 7.28855 0.796902L1.28855 3.5969C1.11251 3.67905 0.999993 3.85573 0.999993 4.04999V10.95C0.999993 11.1443 1.11251 11.3209 1.28855 11.4031L7.28855 14.2031C7.42257 14.2656 7.57741 14.2656 7.71144 14.2031L13.7114 11.4031C13.8875 11.3209 14 11.1443 14 10.95V4.04999C14 3.85573 13.8875 3.67905 13.7114 3.5969L7.71144 0.796902ZM7.49999 3.15674L5.98039 2.51091L7.49999 1.80176L9.01959 2.51091L7.49999 3.15674ZM7.69556 4.16018L10.2382 3.07958L12.2719 4.02865L7.49999 6.05671L2.72808 4.02865L4.76181 3.07958L7.30442 4.16018C7.42939 4.2133 7.57059 4.2133 7.69556 4.16018ZM7.99999 6.93078L13 4.80578V7.92966L11.0821 8.8119C10.7273 8.97509 10.5 9.32988 10.5 9.72039V11.7982L7.99999 12.9649V6.93078ZM11.5 11.3316L13 10.6316V9.03039L11.5 9.72039V11.3316ZM6.99999 6.93078V12.9649L4.50231 11.7993V9.72036C4.50231 9.32985 4.27499 8.97506 3.92022 8.81187L1.99999 7.92856V4.80578L6.99999 6.93078ZM1.99999 10.6316L3.50231 11.3326L3.50231 9.72036L1.99999 9.02929V10.6316Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$15 = [\"color\"];\nvar ColorWheelIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$15);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49985C0.877075 3.84216 3.84222 0.877014 7.49991 0.877014C11.1576 0.877014 14.1227 3.84216 14.1227 7.49985C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49985ZM3.78135 3.21565C4.68298 2.43239 5.83429 1.92904 7.09998 1.84089V6.53429L3.78135 3.21565ZM3.21567 3.78134C2.43242 4.68298 1.92909 5.83428 1.84095 7.09997H6.5343L3.21567 3.78134ZM6.5343 7.89997H1.84097C1.92916 9.16562 2.43253 10.3169 3.21579 11.2185L6.5343 7.89997ZM3.78149 11.7842C4.6831 12.5673 5.83435 13.0707 7.09998 13.1588V8.46566L3.78149 11.7842ZM7.89998 8.46566V13.1588C9.16559 13.0706 10.3168 12.5673 11.2184 11.7841L7.89998 8.46566ZM11.7841 11.2184C12.5673 10.3168 13.0707 9.16558 13.1588 7.89997H8.46567L11.7841 11.2184ZM8.46567 7.09997H13.1589C13.0707 5.83432 12.5674 4.68305 11.7842 3.78143L8.46567 7.09997ZM11.2185 3.21573C10.3169 2.43246 9.16565 1.92909 7.89998 1.8409V6.53429L11.2185 3.21573Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$16 = [\"color\"];\nvar ColumnSpacingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$16);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.00012 1.5C8.00012 1.22386 7.77626 1 7.50012 1C7.22398 1 7.00012 1.22386 7.00012 1.5V13.5C7.00012 13.7761 7.22398 14 7.50012 14C7.77626 14 8.00012 13.7761 8.00012 13.5V1.5ZM3.31812 5.818C3.49386 5.64227 3.49386 5.35734 3.31812 5.18161C3.14239 5.00587 2.85746 5.00587 2.68173 5.18161L0.681729 7.18161C0.505993 7.35734 0.505993 7.64227 0.681729 7.818L2.68173 9.818C2.85746 9.99374 3.14239 9.99374 3.31812 9.818C3.49386 9.64227 3.49386 9.35734 3.31812 9.18161L2.08632 7.9498H5.50017C5.7487 7.9498 5.95017 7.74833 5.95017 7.4998C5.95017 7.25128 5.7487 7.0498 5.50017 7.0498H2.08632L3.31812 5.818ZM12.3181 5.18161C12.1424 5.00587 11.8575 5.00587 11.6817 5.18161C11.506 5.35734 11.506 5.64227 11.6817 5.818L12.9135 7.0498H9.50017C9.25164 7.0498 9.05017 7.25128 9.05017 7.4998C9.05017 7.74833 9.25164 7.9498 9.50017 7.9498H12.9135L11.6817 9.18161C11.506 9.35734 11.506 9.64227 11.6817 9.818C11.8575 9.99374 12.1424 9.99374 12.3181 9.818L14.3181 7.818C14.4939 7.64227 14.4939 7.35734 14.3181 7.18161L12.3181 5.18161Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$17 = [\"color\"];\nvar ColumnsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$17);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.14998 14V1H0.849976V14H2.14998ZM6.14998 14V1H4.84998V14H6.14998ZM10.15 1V14H8.84998V1H10.15ZM14.15 14V1H12.85V14H14.15Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$18 = [\"color\"];\nvar CommitIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$18);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.94969 7.49989C9.94969 8.85288 8.85288 9.94969 7.49989 9.94969C6.14691 9.94969 5.0501 8.85288 5.0501 7.49989C5.0501 6.14691 6.14691 5.0501 7.49989 5.0501C8.85288 5.0501 9.94969 6.14691 9.94969 7.49989ZM10.8632 8C10.6213 9.64055 9.20764 10.8997 7.49989 10.8997C5.79214 10.8997 4.37847 9.64055 4.13662 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H4.13659C4.37835 5.35935 5.79206 4.1001 7.49989 4.1001C9.20772 4.1001 10.6214 5.35935 10.8632 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H10.8632Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$19 = [\"color\"];\nvar Component1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$19);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.67129 3.14634C4.47603 3.34161 4.47603 3.65819 4.67129 3.85345L7.14616 6.32833C7.34142 6.52359 7.65801 6.52359 7.85327 6.32833L10.3281 3.85345C10.5234 3.65819 10.5234 3.34161 10.3281 3.14634L7.85327 0.671471C7.65801 0.476209 7.34142 0.476209 7.14616 0.671471L4.67129 3.14634ZM7.49971 5.26766L5.73195 3.4999L7.49971 1.73213L9.26748 3.4999L7.49971 5.26766ZM8.67129 7.14634C8.47603 7.34161 8.47603 7.65819 8.67129 7.85345L11.1462 10.3283C11.3414 10.5236 11.658 10.5236 11.8533 10.3283L14.3281 7.85345C14.5234 7.65819 14.5234 7.34161 14.3281 7.14634L11.8533 4.67147C11.658 4.47621 11.3414 4.47621 11.1462 4.67147L8.67129 7.14634ZM11.4997 9.26766L9.73195 7.4999L11.4997 5.73213L13.2675 7.4999L11.4997 9.26766ZM4.67129 11.8535C4.47603 11.6582 4.47603 11.3416 4.67129 11.1463L7.14616 8.67147C7.34142 8.47621 7.65801 8.47621 7.85327 8.67147L10.3281 11.1463C10.5234 11.3416 10.5234 11.6582 10.3281 11.8535L7.85327 14.3283C7.65801 14.5236 7.34142 14.5236 7.14616 14.3283L4.67129 11.8535ZM5.73195 11.4999L7.49971 13.2677L9.26748 11.4999L7.49971 9.73213L5.73195 11.4999ZM0.671288 7.14649C0.476026 7.34175 0.476026 7.65834 0.671288 7.8536L3.14616 10.3285C3.34142 10.5237 3.65801 10.5237 3.85327 10.3285L6.32814 7.8536C6.5234 7.65834 6.5234 7.34175 6.32814 7.14649L3.85327 4.67162C3.65801 4.47636 3.34142 4.47636 3.14616 4.67162L0.671288 7.14649ZM3.49972 9.26781L1.73195 7.50005L3.49972 5.73228L5.26748 7.50005L3.49972 9.26781Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1a = [\"color\"];\nvar Component2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1a);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.87935 1H3.9H11.1H11.1207C11.5231 0.999994 11.8553 0.999989 12.1259 1.0221C12.407 1.04506 12.6653 1.09434 12.908 1.21799C13.2843 1.40973 13.5903 1.7157 13.782 2.09202C13.9057 2.33469 13.9549 2.59304 13.9779 2.87409C14 3.14468 14 3.47686 14 3.87934V3.9V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H3.9H3.87934C3.47686 14 3.14468 14 2.87409 13.9779C2.59304 13.9549 2.33469 13.9057 2.09202 13.782C1.7157 13.5903 1.40973 13.2843 1.21799 12.908C1.09434 12.6653 1.04506 12.407 1.0221 12.1259C0.999989 11.8553 0.999994 11.5231 1 11.1207V11.1207V11.1V3.9V3.87935V3.87934C0.999994 3.47686 0.999989 3.14468 1.0221 2.87409C1.04506 2.59304 1.09434 2.33469 1.21799 2.09202C1.40973 1.7157 1.7157 1.40973 2.09202 1.21799C2.33469 1.09434 2.59304 1.04506 2.87409 1.0221C3.14469 0.999989 3.47687 0.999994 3.87935 1ZM2.95552 2.01878C2.73631 2.03669 2.62421 2.06915 2.54601 2.10899C2.35785 2.20487 2.20487 2.35785 2.10899 2.54601C2.06915 2.62421 2.03669 2.73631 2.01878 2.95552C2.00039 3.18056 2 3.47171 2 3.9V7H7V2H3.9C3.47171 2 3.18056 2.00039 2.95552 2.01878ZM7 8H2V11.1C2 11.5283 2.00039 11.8194 2.01878 12.0445C2.03669 12.2637 2.06915 12.3758 2.10899 12.454C2.20487 12.6422 2.35785 12.7951 2.54601 12.891C2.62421 12.9309 2.73631 12.9633 2.95552 12.9812C3.18056 12.9996 3.47171 13 3.9 13H7V8ZM8 8H13V11.1C13 11.5283 12.9996 11.8194 12.9812 12.0445C12.9633 12.2637 12.9309 12.3758 12.891 12.454C12.7951 12.6422 12.6422 12.7951 12.454 12.891C12.3758 12.9309 12.2637 12.9633 12.0445 12.9812C11.8194 12.9996 11.5283 13 11.1 13H8V8ZM13 7H8V2H11.1C11.5283 2 11.8194 2.00039 12.0445 2.01878C12.2637 2.03669 12.3758 2.06915 12.454 2.10899C12.6422 2.20487 12.7951 2.35785 12.891 2.54601C12.9309 2.62421 12.9633 2.73631 12.9812 2.95552C12.9996 3.18056 13 3.47171 13 3.9V7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1b = [\"color\"];\nvar ComponentBooleanIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1b);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.85367 1.48956C7.65841 1.29429 7.34182 1.29429 7.14656 1.48956L1.48971 7.14641C1.29445 7.34167 1.29445 7.65825 1.48971 7.85352L7.14656 13.5104C7.34182 13.7056 7.65841 13.7056 7.85367 13.5104L13.5105 7.85352C13.7058 7.65825 13.7058 7.34167 13.5105 7.14641L7.85367 1.48956ZM7.5 2.55033L2.55037 7.49996L7.5 12.4496V2.55033Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1c = [\"color\"];\nvar ComponentInstanceIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1c);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.1465 1.48959C7.34176 1.29432 7.65835 1.29432 7.85361 1.48959L13.5105 7.14644C13.7057 7.3417 13.7057 7.65829 13.5105 7.85355L7.85361 13.5104C7.65835 13.7057 7.34176 13.7057 7.1465 13.5104L1.48965 7.85355C1.29439 7.65829 1.29439 7.3417 1.48965 7.14644L7.1465 1.48959ZM7.50005 2.55025L2.55031 7.49999L7.50005 12.4497L12.4498 7.49999L7.50005 2.55025Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1d = [\"color\"];\nvar ComponentNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1d);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.85361 1.48959C7.65835 1.29432 7.34176 1.29432 7.1465 1.48959L1.48965 7.14644C1.29439 7.3417 1.29439 7.65829 1.48965 7.85355L3.9645 10.3284L1.64644 12.6464C1.45118 12.8417 1.45118 13.1583 1.64644 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L4.6716 11.0355L7.1465 13.5104C7.34176 13.7057 7.65835 13.7057 7.85361 13.5104L13.5105 7.85355C13.7057 7.65829 13.7057 7.3417 13.5105 7.14644L11.0356 4.67154L13.3535 2.35355C13.5488 2.15829 13.5488 1.84171 13.3535 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L10.3285 3.96443L7.85361 1.48959ZM9.62135 4.67154L7.50005 2.55025L2.55031 7.49999L4.6716 9.62129L9.62135 4.67154ZM5.37871 10.3284L7.50005 12.4497L12.4498 7.49999L10.3285 5.37865L5.37871 10.3284Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1e = [\"color\"];\nvar ComponentPlaceholderIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1e);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.8034 7.14644C12.9986 6.95118 13.3152 6.95118 13.5105 7.14644C13.7057 7.3417 13.7057 7.65829 13.5105 7.85355C13.3152 8.04881 12.9986 8.04881 12.8034 7.85355C12.6081 7.65828 12.6081 7.3417 12.8034 7.14644ZM12.0962 8.56065C12.2915 8.75592 12.2915 9.0725 12.0962 9.26776C11.901 9.46302 11.5844 9.46302 11.3891 9.26776C11.1939 9.0725 11.1939 8.75592 11.3891 8.56065C11.5844 8.36539 11.901 8.36539 12.0962 8.56065ZM10.682 9.97487C10.8773 10.1701 10.8773 10.4867 10.682 10.682C10.4868 10.8772 10.1702 10.8772 9.97493 10.682C9.77967 10.4867 9.77967 10.1701 9.97493 9.97487C10.1702 9.7796 10.4868 9.7796 10.682 9.97487ZM9.26782 11.3891C9.46308 11.5843 9.46308 11.9009 9.26782 12.0962C9.07256 12.2915 8.75598 12.2915 8.56071 12.0962C8.36545 11.9009 8.36545 11.5843 8.56072 11.3891C8.75598 11.1938 9.07256 11.1938 9.26782 11.3891ZM7.1465 13.5104C6.95124 13.3151 6.95124 12.9986 7.1465 12.8033C7.17091 12.7789 7.19721 12.7575 7.22494 12.7392C7.41901 12.6111 7.68275 12.6324 7.85361 12.8033C8.04887 12.9986 8.04887 13.3151 7.85361 13.5104C7.65835 13.7057 7.34176 13.7057 7.1465 13.5104Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M2.90386 8.56065C2.7086 8.75592 2.7086 9.0725 2.90386 9.26776 3.09912 9.46302 3.41571 9.46302 3.61097 9.26776 3.80623 9.0725 3.80623 8.75592 3.61097 8.56065 3.41571 8.36539 3.09912 8.36539 2.90386 8.56065zM4.31807 9.97487C4.12281 10.1701 4.12281 10.4867 4.31807 10.682 4.51334 10.8772 4.82992 10.8772 5.02518 10.682 5.22044 10.4867 5.22044 10.1701 5.02518 9.97487 4.82992 9.7796 4.51334 9.7796 4.31807 9.97487zM5.73229 11.3891C5.53703 11.5843 5.53703 11.9009 5.73229 12.0962 5.92755 12.2914 6.24413 12.2915 6.43939 12.0962 6.63466 11.9009 6.63466 11.5843 6.43939 11.3891 6.24413 11.1938 5.92755 11.1938 5.73229 11.3891zM2.19675 7.85355C2.36761 7.68269 2.38897 7.41895 2.26082 7.22488 2.09046 6.96684 1.71063 6.92546 1.48965 7.14644 1.29439 7.3417 1.29439 7.65829 1.48965 7.85355 1.68491 8.04881 2.00149 8.04881 2.19675 7.85355zM3.61097 5.73223C3.41571 5.53696 3.09912 5.53696 2.90386 5.73223 2.7086 5.92749 2.7086 6.24407 2.90386 6.43933 3.09912 6.6346 3.41571 6.6346 3.61097 6.43933 3.80623 6.24407 3.80623 5.92749 3.61097 5.73223zM5.02518 4.31801C4.82992 4.12275 4.51334 4.12275 4.31807 4.31801 4.12281 4.51328 4.12281 4.82986 4.31807 5.02512 4.51334 5.22038 4.82992 5.22038 5.02518 5.02512 5.22044 4.82986 5.22044 4.51328 5.02518 4.31801zM6.43939 2.9038C6.24413 2.70854 5.92755 2.70854 5.73229 2.9038 5.53703 3.09906 5.53703 3.41564 5.73229 3.61091 5.92755 3.80617 6.24413 3.80617 6.43939 3.61091 6.63466 3.41564 6.63466 3.09906 6.43939 2.9038zM7.85361 1.48959C7.65835 1.29432 7.34176 1.29432 7.1465 1.48959 6.95124 1.68485 6.95124 2.00143 7.1465 2.19669 7.34176 2.39196 7.65835 2.39196 7.85361 2.19669 8.04887 2.00143 8.04887 1.68485 7.85361 1.48959zM9.26782 2.9038C9.07256 2.70854 8.75598 2.70854 8.56071 2.9038 8.36545 3.09906 8.36545 3.41564 8.56071 3.61091 8.75598 3.80617 9.07256 3.80617 9.26782 3.61091 9.46308 3.41564 9.46308 3.09906 9.26782 2.9038zM10.682 4.31801C10.4868 4.12275 10.1702 4.12275 9.97493 4.31801 9.77967 4.51328 9.77967 4.82986 9.97493 5.02512 10.1702 5.22038 10.4868 5.22038 10.682 5.02512 10.8773 4.82986 10.8773 4.51328 10.682 4.31801zM12.0962 5.73223C11.901 5.53696 11.5844 5.53696 11.3891 5.73223 11.1939 5.92749 11.1939 6.24407 11.3891 6.43933 11.5844 6.6346 11.901 6.6346 12.0962 6.43933 12.2915 6.24407 12.2915 5.92749 12.0962 5.73223z\",\n    fill: color\n  }));\n});\n\nvar _excluded$1f = [\"color\"];\nvar ContainerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1f);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM5 13H10V2L5 2L5 13ZM4 13C4 13.5523 4.44772 14 5 14H10C10.5523 14 11 13.5523 11 13V2C11 1.44772 10.5523 1 10 1H5C4.44772 1 4 1.44771 4 2V13ZM13.5 2C13.7761 2 14 1.77614 14 1.5C14 1.22386 13.7761 1 13.5 1C13.2239 1 13 1.22386 13 1.5C13 1.77614 13.2239 2 13.5 2ZM2 3.5C2 3.77614 1.77614 4 1.5 4C1.22386 4 1 3.77614 1 3.5C1 3.22386 1.22386 3 1.5 3C1.77614 3 2 3.22386 2 3.5ZM13.5 4C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3C13.2239 3 13 3.22386 13 3.5C13 3.77614 13.2239 4 13.5 4ZM2 5.5C2 5.77614 1.77614 6 1.5 6C1.22386 6 1 5.77614 1 5.5C1 5.22386 1.22386 5 1.5 5C1.77614 5 2 5.22386 2 5.5ZM13.5 6C13.7761 6 14 5.77614 14 5.5C14 5.22386 13.7761 5 13.5 5C13.2239 5 13 5.22386 13 5.5C13 5.77614 13.2239 6 13.5 6ZM2 7.5C2 7.77614 1.77614 8 1.5 8C1.22386 8 1 7.77614 1 7.5C1 7.22386 1.22386 7 1.5 7C1.77614 7 2 7.22386 2 7.5ZM13.5 8C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7C13.2239 7 13 7.22386 13 7.5C13 7.77614 13.2239 8 13.5 8ZM2 9.5C2 9.77614 1.77614 10 1.5 10C1.22386 10 1 9.77614 1 9.5C1 9.22386 1.22386 9 1.5 9C1.77614 9 2 9.22386 2 9.5ZM13.5 10C13.7761 10 14 9.77614 14 9.5C14 9.22386 13.7761 9 13.5 9C13.2239 9 13 9.22386 13 9.5C13 9.77614 13.2239 10 13.5 10ZM2 11.5C2 11.7761 1.77614 12 1.5 12C1.22386 12 1 11.7761 1 11.5C1 11.2239 1.22386 11 1.5 11C1.77614 11 2 11.2239 2 11.5ZM13.5 12C13.7761 12 14 11.7761 14 11.5C14 11.2239 13.7761 11 13.5 11C13.2239 11 13 11.2239 13 11.5C13 11.7761 13.2239 12 13.5 12ZM2 13.5C2 13.7761 1.77614 14 1.5 14C1.22386 14 1 13.7761 1 13.5C1 13.2239 1.22386 13 1.5 13C1.77614 13 2 13.2239 2 13.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1g = [\"color\"];\nvar CookieIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1g);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.0697 1.76746C12.4807 1.21947 11.4605 0.454311 11.0495 1.0023C10.6385 1.55028 11.6588 2.31544 12.0697 1.76746ZM8.39263 1.07811C7.15585 0.950602 5.7823 1.16348 4.58433 1.70937C3.38552 2.25563 2.32735 3.15309 1.78844 4.41832C1.37574 5.38724 1.01715 6.28113 1.00088 7.44354C0.984724 8.59844 1.30522 9.96898 2.13174 11.928C2.61142 13.0649 4.03963 13.5446 5.13895 13.8079C6.40836 14.1119 7.80857 14.1914 8.6644 14.0742C9.36515 13.9782 10.1448 13.8284 10.7987 13.297C11.8977 12.4039 12.9009 11.3955 13.4994 10.3393C14.104 9.27221 14.3256 8.09207 13.7216 6.95324C13.5628 6.65373 13.316 6.57734 13.0412 6.4923C12.9374 6.46016 12.8295 6.42678 12.7209 6.37966C11.6211 5.90234 10.9646 5.34963 10.9135 5.02876C10.8656 4.72808 10.9221 4.51463 10.9811 4.29181C11.0129 4.17199 11.0453 4.04947 11.0626 3.90922C11.0838 3.73737 11.0814 3.33319 10.6996 3.12761C10.4048 2.96888 10.2164 2.65843 10.0407 2.36904C9.99742 2.29775 9.95492 2.22773 9.9118 2.16158C9.62634 1.72367 9.20769 1.16213 8.39263 1.07811ZM4.99899 2.61935C3.96483 3.09058 3.12554 3.83097 2.70846 4.81018C2.29808 5.77368 2.01406 6.50873 2.00079 7.45753C1.98741 8.41385 2.25043 9.6368 3.0531 11.5393C3.39181 12.3421 4.62167 12.6557 5.37186 12.8354C6.5493 13.1174 7.822 13.1802 8.52868 13.0834C9.21271 12.9897 9.74568 12.8642 10.1681 12.5209C11.229 11.6587 12.121 10.7435 12.6293 9.84635C12.9349 9.30709 13.5141 7.7028 12.6292 7.3873C10.7539 6.71875 10.262 6.06669 9.99011 5.41268C9.80915 4.97744 9.82868 4.52282 9.95741 4.07885L9.95741 4.07884C9.97662 4.0126 9.99538 3.94791 10.0334 3.88882C9.81857 3.73676 9.6515 3.55195 9.51464 3.3715C9.42876 3.25828 9.3469 3.12099 9.26197 2.97856C9.01866 2.57052 8.75018 2.12027 8.29008 2.07283C7.22889 1.96343 6.03398 2.14772 4.99899 2.61935ZM13.2081 3.77471C13.441 3.22671 12.4547 2.63606 12.0822 3.10163C11.5817 3.72732 12.9029 4.49281 13.2081 3.77471ZM14.3672 2.26031C14.9668 2.27493 15.1551 1.11603 14.5718 0.949371C13.8076 0.731026 13.5918 2.24139 14.3672 2.26031ZM14.2857 5.09098C14.8644 5.10004 15.0462 4.38222 14.4832 4.27899C13.7455 4.14375 13.5373 5.07927 14.2857 5.09098ZM6.9075 4.28672C6.46898 4.66754 6.0522 4.15185 5.97983 3.7365C5.86848 3.09744 6.33696 2.56856 6.94823 2.91156C7.43344 3.18382 7.26678 3.97471 6.9075 4.28672ZM4.94455 5.88184C5.40885 5.41754 4.59567 4.57013 4.11425 5.05154C3.83338 5.33242 4.00936 5.65376 4.23744 5.88184C4.43271 6.0771 4.74929 6.0771 4.94455 5.88184ZM6.97716 6.71984C7.31181 7.38914 8.48804 6.79159 7.99413 6.14788C7.86519 5.97983 7.68657 5.9494 7.62145 5.94207C7.21217 5.89601 6.76349 6.2925 6.97716 6.71984ZM6.98798 8.72461C7.14066 9.1188 7.51122 9.3187 7.91915 9.1633C8.27434 9.02799 8.33186 8.39689 8.17175 8.07427C8.02331 7.77514 7.63956 7.67793 7.33747 7.79417C6.98512 7.92976 6.85672 8.38708 6.98576 8.71889L6.98798 8.72461ZM10.3885 8.84081C10.7575 8.6566 11.4617 8.82771 11.4617 9.31199C11.4617 9.71286 10.9587 10.2165 10.5634 10.2826C10.1813 10.3465 9.70515 9.97581 9.76648 9.57718C9.81445 9.26539 10.1217 8.97401 10.3885 8.84081ZM7.56704 10.8432C7.33461 10.7502 7.14353 10.8601 7.11437 10.8769L7.11279 10.8778C6.90782 10.9949 6.71383 11.2439 6.6747 11.4842C6.59018 12.0034 7.13199 12.1239 7.52661 12.0987C8.2074 12.0553 8.06547 11.0426 7.56704 10.8432ZM4.8805 10.8932C5.0674 10.7723 5.15658 10.5363 5.08293 10.3153C4.93046 9.79687 4.3246 9.71252 3.96561 10.1297C3.79336 10.3299 3.80749 10.6274 3.99214 10.8105L3.99495 10.814L3.9979 10.8176C4.22025 11.0942 4.63624 11.1857 4.8805 10.8932ZM3.04695 7.81318C3.33147 8.0977 3.60077 8.15067 3.98443 8.05859C4.60826 7.90887 4.13814 6.24299 3.047 6.87296C2.70939 7.06788 2.86716 7.63339 3.04695 7.81318Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1h = [\"color\"];\nvar CopyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1h);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 9.50006C1 10.3285 1.67157 11.0001 2.5 11.0001H4L4 10.0001H2.5C2.22386 10.0001 2 9.7762 2 9.50006L2 2.50006C2 2.22392 2.22386 2.00006 2.5 2.00006L9.5 2.00006C9.77614 2.00006 10 2.22392 10 2.50006V4.00002H5.5C4.67158 4.00002 4 4.67159 4 5.50002V12.5C4 13.3284 4.67158 14 5.5 14H12.5C13.3284 14 14 13.3284 14 12.5V5.50002C14 4.67159 13.3284 4.00002 12.5 4.00002H11V2.50006C11 1.67163 10.3284 1.00006 9.5 1.00006H2.5C1.67157 1.00006 1 1.67163 1 2.50006V9.50006ZM5 5.50002C5 5.22388 5.22386 5.00002 5.5 5.00002H12.5C12.7761 5.00002 13 5.22388 13 5.50002V12.5C13 12.7762 12.7761 13 12.5 13H5.5C5.22386 13 5 12.7762 5 12.5V5.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1i = [\"color\"];\nvar CornerBottomLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1i);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.87737 12H9.9H11.5C11.7761 12 12 11.7761 12 11.5C12 11.2239 11.7761 11 11.5 11H9.9C8.77164 11 7.95545 10.9996 7.31352 10.9472C6.67744 10.8952 6.25662 10.7946 5.91103 10.6185C5.25247 10.283 4.71703 9.74753 4.38148 9.08897C4.20539 8.74338 4.10481 8.32256 4.05284 7.68648C4.00039 7.04455 4 6.22836 4 5.1V3.5C4 3.22386 3.77614 3 3.5 3C3.22386 3 3 3.22386 3 3.5V5.1V5.12263C3 6.22359 3 7.08052 3.05616 7.76791C3.11318 8.46584 3.23058 9.0329 3.49047 9.54296C3.9219 10.3897 4.61031 11.0781 5.45704 11.5095C5.9671 11.7694 6.53416 11.8868 7.23209 11.9438C7.91948 12 8.77641 12 9.87737 12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1j = [\"color\"];\nvar CornerBottomRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1j);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.12263 12H5.1H3.5C3.22386 12 3 11.7761 3 11.5C3 11.2239 3.22386 11 3.5 11H5.1C6.22836 11 7.04455 10.9996 7.68648 10.9472C8.32256 10.8952 8.74338 10.7946 9.08897 10.6185C9.74753 10.283 10.283 9.74753 10.6185 9.08897C10.7946 8.74338 10.8952 8.32256 10.9472 7.68648C10.9996 7.04455 11 6.22836 11 5.1V3.5C11 3.22386 11.2239 3 11.5 3C11.7761 3 12 3.22386 12 3.5V5.1V5.12263C12 6.22359 12 7.08052 11.9438 7.76791C11.8868 8.46584 11.7694 9.0329 11.5095 9.54296C11.0781 10.3897 10.3897 11.0781 9.54296 11.5095C9.0329 11.7694 8.46584 11.8868 7.76791 11.9438C7.08052 12 6.22359 12 5.12263 12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1k = [\"color\"];\nvar CornerTopLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1k);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.87737 3H9.9H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H9.9C8.77164 4 7.95545 4.00039 7.31352 4.05284C6.67744 4.10481 6.25662 4.20539 5.91103 4.38148C5.25247 4.71703 4.71703 5.25247 4.38148 5.91103C4.20539 6.25662 4.10481 6.67744 4.05284 7.31352C4.00039 7.95545 4 8.77164 4 9.9V11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5V9.9V9.87737C3 8.77641 3 7.91948 3.05616 7.23209C3.11318 6.53416 3.23058 5.9671 3.49047 5.45704C3.9219 4.61031 4.61031 3.9219 5.45704 3.49047C5.9671 3.23058 6.53416 3.11318 7.23209 3.05616C7.91948 3 8.77641 3 9.87737 3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1l = [\"color\"];\nvar CornerTopRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1l);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.12263 3H5.1H3.5C3.22386 3 3 3.22386 3 3.5C3 3.77614 3.22386 4 3.5 4H5.1C6.22836 4 7.04455 4.00039 7.68648 4.05284C8.32256 4.10481 8.74338 4.20539 9.08897 4.38148C9.74753 4.71703 10.283 5.25247 10.6185 5.91103C10.7946 6.25662 10.8952 6.67744 10.9472 7.31352C10.9996 7.95545 11 8.77164 11 9.9V11.5C11 11.7761 11.2239 12 11.5 12C11.7761 12 12 11.7761 12 11.5V9.9V9.87737C12 8.77641 12 7.91948 11.9438 7.23209C11.8868 6.53416 11.7694 5.9671 11.5095 5.45704C11.0781 4.61031 10.3897 3.9219 9.54296 3.49047C9.0329 3.23058 8.46584 3.11318 7.76791 3.05616C7.08052 3 6.22359 3 5.12263 3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1m = [\"color\"];\nvar CornersIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1m);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.5 2L4.87935 2C4.47687 1.99999 4.14469 1.99999 3.87409 2.0221C3.59304 2.04506 3.33469 2.09434 3.09202 2.21799C2.7157 2.40973 2.40973 2.7157 2.21799 3.09202C2.09434 3.33469 2.04506 3.59304 2.0221 3.87409C1.99999 4.14468 1.99999 4.47686 2 4.87933V4.87935V5.5C2 5.77614 2.22386 6 2.5 6C2.77614 6 3 5.77614 3 5.5V4.9C3 4.47171 3.00039 4.18056 3.01878 3.95552C3.03669 3.73631 3.06915 3.62421 3.10899 3.54601C3.20487 3.35785 3.35785 3.20487 3.54601 3.10899C3.62421 3.06915 3.73631 3.03669 3.95552 3.01878C4.18056 3.00039 4.47171 3 4.9 3H5.5C5.77614 3 6 2.77614 6 2.5C6 2.22386 5.77614 2 5.5 2ZM13 9.5C13 9.22386 12.7761 9 12.5 9C12.2239 9 12 9.22386 12 9.5V10.1C12 10.5283 11.9996 10.8194 11.9812 11.0445C11.9633 11.2637 11.9309 11.3758 11.891 11.454C11.7951 11.6422 11.6422 11.7951 11.454 11.891C11.3758 11.9309 11.2637 11.9633 11.0445 11.9812C10.8194 11.9996 10.5283 12 10.1 12H9.5C9.22386 12 9 12.2239 9 12.5C9 12.7761 9.22386 13 9.5 13H10.1206C10.5231 13 10.8553 13 11.1259 12.9779C11.407 12.9549 11.6653 12.9057 11.908 12.782C12.2843 12.5903 12.5903 12.2843 12.782 11.908C12.9057 11.6653 12.9549 11.407 12.9779 11.1259C13 10.8553 13 10.5232 13 10.1207V10.1207V10.1207V10.1206V9.5ZM2.5 9C2.77614 9 3 9.22386 3 9.5V10.1C3 10.5283 3.00039 10.8194 3.01878 11.0445C3.03669 11.2637 3.06915 11.3758 3.10899 11.454C3.20487 11.6422 3.35785 11.7951 3.54601 11.891C3.62421 11.9309 3.73631 11.9633 3.95552 11.9812C4.18056 11.9996 4.47171 12 4.9 12H5.5C5.77614 12 6 12.2239 6 12.5C6 12.7761 5.77614 13 5.5 13H4.87935C4.47687 13 4.14469 13 3.87409 12.9779C3.59304 12.9549 3.33469 12.9057 3.09202 12.782C2.7157 12.5903 2.40973 12.2843 2.21799 11.908C2.09434 11.6653 2.04506 11.407 2.0221 11.1259C1.99999 10.8553 1.99999 10.5231 2 10.1207V10.1206V10.1V9.5C2 9.22386 2.22386 9 2.5 9ZM10.1 3C10.5283 3 10.8194 3.00039 11.0445 3.01878C11.2637 3.03669 11.3758 3.06915 11.454 3.10899C11.6422 3.20487 11.7951 3.35785 11.891 3.54601C11.9309 3.62421 11.9633 3.73631 11.9812 3.95552C11.9996 4.18056 12 4.47171 12 4.9V5.5C12 5.77614 12.2239 6 12.5 6C12.7761 6 13 5.77614 13 5.5V4.87935V4.87934C13 4.47686 13 4.14468 12.9779 3.87409C12.9549 3.59304 12.9057 3.33469 12.782 3.09202C12.5903 2.7157 12.2843 2.40973 11.908 2.21799C11.6653 2.09434 11.407 2.04506 11.1259 2.0221C10.8553 1.99999 10.5231 1.99999 10.1206 2L10.1 2H9.5C9.22386 2 9 2.22386 9 2.5C9 2.77614 9.22386 3 9.5 3H10.1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1n = [\"color\"];\nvar CountdownTimerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1n);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.15 7.49998C13.15 4.66458 10.9402 1.84998 7.50002 1.84998C4.7217 1.84998 3.34851 3.90636 2.76336 4.99997H4.5C4.77614 4.99997 5 5.22383 5 5.49997C5 5.77611 4.77614 5.99997 4.5 5.99997H1.5C1.22386 5.99997 1 5.77611 1 5.49997V2.49997C1 2.22383 1.22386 1.99997 1.5 1.99997C1.77614 1.99997 2 2.22383 2 2.49997V4.31318C2.70453 3.07126 4.33406 0.849976 7.50002 0.849976C11.5628 0.849976 14.15 4.18537 14.15 7.49998C14.15 10.8146 11.5628 14.15 7.50002 14.15C5.55618 14.15 3.93778 13.3808 2.78548 12.2084C2.16852 11.5806 1.68668 10.839 1.35816 10.0407C1.25306 9.78536 1.37488 9.49315 1.63024 9.38806C1.8856 9.28296 2.17781 9.40478 2.2829 9.66014C2.56374 10.3425 2.97495 10.9745 3.4987 11.5074C4.47052 12.4963 5.83496 13.15 7.50002 13.15C10.9402 13.15 13.15 10.3354 13.15 7.49998ZM7 10V5.00001H8V10H7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1o = [\"color\"];\nvar CounterClockwiseClockIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1o);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.15 7.49998C13.15 4.66458 10.9402 1.84998 7.50002 1.84998C4.72167 1.84998 3.34849 3.9064 2.76335 5H4.5C4.77614 5 5 5.22386 5 5.5C5 5.77614 4.77614 6 4.5 6H1.5C1.22386 6 1 5.77614 1 5.5V2.5C1 2.22386 1.22386 2 1.5 2C1.77614 2 2 2.22386 2 2.5V4.31318C2.70453 3.07126 4.33406 0.849976 7.50002 0.849976C11.5628 0.849976 14.15 4.18537 14.15 7.49998C14.15 10.8146 11.5628 14.15 7.50002 14.15C5.55618 14.15 3.93778 13.3808 2.78548 12.2084C2.16852 11.5806 1.68668 10.839 1.35816 10.0407C1.25306 9.78536 1.37488 9.49315 1.63024 9.38806C1.8856 9.28296 2.17781 9.40478 2.2829 9.66014C2.56374 10.3425 2.97495 10.9745 3.4987 11.5074C4.47052 12.4963 5.83496 13.15 7.50002 13.15C10.9402 13.15 13.15 10.3354 13.15 7.49998ZM7.5 4.00001C7.77614 4.00001 8 4.22387 8 4.50001V7.29291L9.85355 9.14646C10.0488 9.34172 10.0488 9.65831 9.85355 9.85357C9.65829 10.0488 9.34171 10.0488 9.14645 9.85357L7.14645 7.85357C7.05268 7.7598 7 7.63262 7 7.50001V4.50001C7 4.22387 7.22386 4.00001 7.5 4.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1p = [\"color\"];\nvar CropIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1p);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.5 8.00684e-07C3.77614 7.88614e-07 4 0.223859 4 0.500001L4 3.00006L11.5 3.00006C11.7761 3.00006 12 3.22392 12 3.50006L12 11.0001L14.5 11C14.7761 11 15 11.2238 15 11.5C15 11.7761 14.7762 12 14.5 12L12 12.0001L12 14.5C12 14.7761 11.7761 15 11.5 15C11.2239 15 11 14.7761 11 14.5L11 12.0001L3.5 12.0001C3.22386 12.0001 3 11.7762 3 11.5001L3 4.00005L0.499989 4C0.223847 4 -6.10541e-06 3.77613 -5.02576e-07 3.49999C5.13006e-06 3.22385 0.223867 3 0.50001 3L3 3.00005L3 0.500001C3 0.223859 3.22386 8.12755e-07 3.5 8.00684e-07ZM4 4.00006L4 11.0001L11 11.0001L11 4.00006L4 4.00006Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1q = [\"color\"];\nvar Cross1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1r = [\"color\"];\nvar Cross2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1r);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1s = [\"color\"];\nvar CrossCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1s);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704ZM9.85358 5.14644C10.0488 5.3417 10.0488 5.65829 9.85358 5.85355L8.20713 7.49999L9.85358 9.14644C10.0488 9.3417 10.0488 9.65829 9.85358 9.85355C9.65832 10.0488 9.34173 10.0488 9.14647 9.85355L7.50002 8.2071L5.85358 9.85355C5.65832 10.0488 5.34173 10.0488 5.14647 9.85355C4.95121 9.65829 4.95121 9.3417 5.14647 9.14644L6.79292 7.49999L5.14647 5.85355C4.95121 5.65829 4.95121 5.3417 5.14647 5.14644C5.34173 4.95118 5.65832 4.95118 5.85358 5.14644L7.50002 6.79289L9.14647 5.14644C9.34173 4.95118 9.65832 4.95118 9.85358 5.14644Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1t = [\"color\"];\nvar Crosshair1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1t);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.50207C0.877075 3.84319 3.84319 0.877075 7.50208 0.877075C11.1609 0.877075 14.1271 3.84319 14.1271 7.50207C14.1271 11.1609 11.1609 14.1271 7.50208 14.1271C3.84319 14.1271 0.877075 11.1609 0.877075 7.50207ZM1.84898 7.00003C2.0886 4.26639 4.26639 2.0886 7.00003 1.84898V4.50003C7.00003 4.77617 7.22388 5.00003 7.50003 5.00003C7.77617 5.00003 8.00003 4.77617 8.00003 4.50003V1.84862C10.7356 2.08643 12.9154 4.26502 13.1552 7.00003H10.5C10.2239 7.00003 10 7.22388 10 7.50003C10 7.77617 10.2239 8.00003 10.5 8.00003H13.1555C12.9176 10.7369 10.7369 12.9176 8.00003 13.1555V10.5C8.00003 10.2239 7.77617 10 7.50003 10C7.22388 10 7.00003 10.2239 7.00003 10.5V13.1552C4.26502 12.9154 2.08643 10.7356 1.84862 8.00003H4.50003C4.77617 8.00003 5.00003 7.77617 5.00003 7.50003C5.00003 7.22388 4.77617 7.00003 4.50003 7.00003H1.84898Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1u = [\"color\"];\nvar Crosshair2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1u);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 0C7.77614 0 8 0.223858 8 0.5V1.80687C10.6922 2.0935 12.8167 4.28012 13.0068 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H12.9888C12.7094 10.6244 10.6244 12.7094 8 12.9888V14.5C8 14.7761 7.77614 15 7.5 15C7.22386 15 7 14.7761 7 14.5V13.0068C4.28012 12.8167 2.0935 10.6922 1.80687 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H1.78886C1.98376 4.21166 4.21166 1.98376 7 1.78886V0.5C7 0.223858 7.22386 0 7.5 0ZM8 12.0322V9.5C8 9.22386 7.77614 9 7.5 9C7.22386 9 7 9.22386 7 9.5V12.054C4.80517 11.8689 3.04222 10.1668 2.76344 8H5.5C5.77614 8 6 7.77614 6 7.5C6 7.22386 5.77614 7 5.5 7H2.7417C2.93252 4.73662 4.73662 2.93252 7 2.7417V5.5C7 5.77614 7.22386 6 7.5 6C7.77614 6 8 5.77614 8 5.5V2.76344C10.1668 3.04222 11.8689 4.80517 12.054 7H9.5C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8H12.0322C11.7621 10.0991 10.0991 11.7621 8 12.0322Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1v = [\"color\"];\nvar CrumpledPaperIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1v);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.60913 0.0634287C4.39082 0.0088505 4.16575 0.12393 4.08218 0.332867L3.1538 2.6538L0.832866 3.58218C0.702884 3.63417 0.604504 3.7437 0.566705 3.87849C0.528906 4.01329 0.555994 4.158 0.639992 4.26999L2.01148 6.09864L1.06343 9.89085C1.00944 10.1068 1.12145 10.3298 1.32691 10.4154L4.20115 11.613L5.62557 13.7496C5.73412 13.9124 5.93545 13.9864 6.12362 13.9327L9.62362 12.9327C9.62988 12.9309 9.63611 12.929 9.64229 12.9269L12.6423 11.9269C12.7923 11.8769 12.905 11.7519 12.9393 11.5976L13.9393 7.09761C13.9776 6.92506 13.9114 6.74605 13.77 6.63999L11.95 5.27499V2.99999C11.95 2.82955 11.8537 2.67373 11.7012 2.5975L8.70124 1.0975C8.67187 1.08282 8.64098 1.07139 8.60913 1.06343L4.60913 0.0634287ZM11.4323 6.01173L12.7748 7.01858L10.2119 9.15429C10.1476 9.20786 10.0995 9.2783 10.0731 9.35769L9.25382 11.8155L7.73849 10.8684C7.52774 10.7367 7.25011 10.8007 7.11839 11.0115C6.98667 11.2222 7.05074 11.4999 7.26149 11.6316L8.40341 12.3453L6.19221 12.9771L4.87441 11.0004C4.82513 10.9265 4.75508 10.8688 4.67307 10.8346L2.03046 9.73352L2.85134 6.44999H4.99999C5.24852 6.44999 5.44999 6.24852 5.44999 5.99999C5.44999 5.75146 5.24852 5.54999 4.99999 5.54999H2.72499L1.7123 4.19974L3.51407 3.47903L6.35769 4.4269C6.53655 4.48652 6.73361 4.42832 6.85138 4.28111L8.62413 2.06518L11.05 3.27811V5.19533L8.83287 6.08218C8.70996 6.13134 8.61494 6.23212 8.57308 6.35769L8.07308 7.85769C7.99449 8.09346 8.12191 8.34831 8.35769 8.4269C8.59346 8.50549 8.84831 8.37807 8.9269 8.14229L9.3609 6.84029L11.4323 6.01173ZM7.71052 1.76648L6.34462 3.47386L4.09505 2.724L4.77192 1.03183L7.71052 1.76648ZM10.2115 11.7885L12.116 11.1537L12.7745 8.19034L10.8864 9.76374L10.2115 11.7885Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1w = [\"color\"];\nvar CubeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1w);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.28856 0.796908C7.42258 0.734364 7.57742 0.734364 7.71144 0.796908L13.7114 3.59691C13.8875 3.67906 14 3.85574 14 4.05V10.95C14 11.1443 13.8875 11.3209 13.7114 11.4031L7.71144 14.2031C7.57742 14.2656 7.42258 14.2656 7.28856 14.2031L1.28856 11.4031C1.11252 11.3209 1 11.1443 1 10.95V4.05C1 3.85574 1.11252 3.67906 1.28856 3.59691L7.28856 0.796908ZM2 4.80578L7 6.93078V12.9649L2 10.6316V4.80578ZM8 12.9649L13 10.6316V4.80578L8 6.93078V12.9649ZM7.5 6.05672L12.2719 4.02866L7.5 1.80176L2.72809 4.02866L7.5 6.05672Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1x = [\"color\"];\nvar CursorArrowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1x);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.29227 0.048984C3.47033 -0.032338 3.67946 -0.00228214 3.8274 0.125891L12.8587 7.95026C13.0134 8.08432 13.0708 8.29916 13.0035 8.49251C12.9362 8.68586 12.7578 8.81866 12.5533 8.82768L9.21887 8.97474L11.1504 13.2187C11.2648 13.47 11.1538 13.7664 10.9026 13.8808L8.75024 14.8613C8.499 14.9758 8.20255 14.8649 8.08802 14.6137L6.15339 10.3703L3.86279 12.7855C3.72196 12.934 3.50487 12.9817 3.31479 12.9059C3.1247 12.8301 3 12.6461 3 12.4414V0.503792C3 0.308048 3.11422 0.130306 3.29227 0.048984ZM4 1.59852V11.1877L5.93799 9.14425C6.05238 9.02363 6.21924 8.96776 6.38319 8.99516C6.54715 9.02256 6.68677 9.12965 6.75573 9.2809L8.79056 13.7441L10.0332 13.178L8.00195 8.71497C7.93313 8.56376 7.94391 8.38824 8.03072 8.24659C8.11753 8.10494 8.26903 8.01566 8.435 8.00834L11.2549 7.88397L4 1.59852Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1y = [\"color\"];\nvar CursorTextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.5 1C4.22386 1 4 1.22386 4 1.5C4 1.77614 4.22386 2 4.5 2C5.42215 2 6.0399 2.23054 6.42075 2.56379C6.79286 2.88939 7 3.36626 7 4V7H5.75C5.47386 7 5.25 7.22386 5.25 7.5C5.25 7.77614 5.47386 8 5.75 8H7V11C7 11.6337 6.79286 12.1106 6.42075 12.4362C6.0399 12.7695 5.42215 13 4.5 13C4.22386 13 4 13.2239 4 13.5C4 13.7761 4.22386 14 4.5 14C5.57785 14 6.4601 13.7305 7.07925 13.1888C7.24168 13.0467 7.38169 12.8896 7.5 12.7198C7.61832 12.8896 7.75832 13.0467 7.92075 13.1888C8.5399 13.7305 9.42215 14 10.5 14C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13C9.57785 13 8.9601 12.7695 8.57925 12.4362C8.20714 12.1106 8 11.6337 8 11V8H9.25C9.52614 8 9.75 7.77614 9.75 7.5C9.75 7.22386 9.52614 7 9.25 7H8V4C8 3.36626 8.20714 2.88939 8.57925 2.56379C8.9601 2.23054 9.57785 2 10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1C9.42215 1 8.5399 1.26946 7.92075 1.81121C7.75832 1.95333 7.61832 2.11043 7.5 2.28023C7.38168 2.11043 7.24168 1.95333 7.07925 1.81121C6.4601 1.26946 5.57785 1 4.5 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1z = [\"color\"];\nvar DashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 7.5C5 7.22386 5.22386 7 5.5 7H9.5C9.77614 7 10 7.22386 10 7.5C10 7.77614 9.77614 8 9.5 8H5.5C5.22386 8 5 7.77614 5 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1A = [\"color\"];\nvar DashboardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1A);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.8 1L2.74967 0.99997C2.52122 0.999752 2.32429 0.999564 2.14983 1.04145C1.60136 1.17312 1.17312 1.60136 1.04145 2.14983C0.999564 2.32429 0.999752 2.52122 0.99997 2.74967L1 2.8V5.2L0.99997 5.25033C0.999752 5.47878 0.999564 5.67572 1.04145 5.85017C1.17312 6.39864 1.60136 6.82688 2.14983 6.95856C2.32429 7.00044 2.52122 7.00025 2.74967 7.00003L2.8 7H5.2L5.25033 7.00003C5.47878 7.00025 5.67572 7.00044 5.85017 6.95856C6.39864 6.82688 6.82688 6.39864 6.95856 5.85017C7.00044 5.67572 7.00025 5.47878 7.00003 5.25033L7 5.2V2.8L7.00003 2.74967C7.00025 2.52122 7.00044 2.32429 6.95856 2.14983C6.82688 1.60136 6.39864 1.17312 5.85017 1.04145C5.67572 0.999564 5.47878 0.999752 5.25033 0.99997L5.2 1H2.8ZM2.38328 2.01382C2.42632 2.00348 2.49222 2 2.8 2H5.2C5.50779 2 5.57369 2.00348 5.61672 2.01382C5.79955 2.05771 5.94229 2.20045 5.98619 2.38328C5.99652 2.42632 6 2.49222 6 2.8V5.2C6 5.50779 5.99652 5.57369 5.98619 5.61672C5.94229 5.79955 5.79955 5.94229 5.61672 5.98619C5.57369 5.99652 5.50779 6 5.2 6H2.8C2.49222 6 2.42632 5.99652 2.38328 5.98619C2.20045 5.94229 2.05771 5.79955 2.01382 5.61672C2.00348 5.57369 2 5.50779 2 5.2V2.8C2 2.49222 2.00348 2.42632 2.01382 2.38328C2.05771 2.20045 2.20045 2.05771 2.38328 2.01382ZM9.8 1L9.74967 0.99997C9.52122 0.999752 9.32429 0.999564 9.14983 1.04145C8.60136 1.17312 8.17312 1.60136 8.04145 2.14983C7.99956 2.32429 7.99975 2.52122 7.99997 2.74967L8 2.8V5.2L7.99997 5.25033C7.99975 5.47878 7.99956 5.67572 8.04145 5.85017C8.17312 6.39864 8.60136 6.82688 9.14983 6.95856C9.32429 7.00044 9.52122 7.00025 9.74967 7.00003L9.8 7H12.2L12.2503 7.00003C12.4788 7.00025 12.6757 7.00044 12.8502 6.95856C13.3986 6.82688 13.8269 6.39864 13.9586 5.85017C14.0004 5.67572 14.0003 5.47878 14 5.25033L14 5.2V2.8L14 2.74967C14.0003 2.52122 14.0004 2.32429 13.9586 2.14983C13.8269 1.60136 13.3986 1.17312 12.8502 1.04145C12.6757 0.999564 12.4788 0.999752 12.2503 0.99997L12.2 1H9.8ZM9.38328 2.01382C9.42632 2.00348 9.49222 2 9.8 2H12.2C12.5078 2 12.5737 2.00348 12.6167 2.01382C12.7995 2.05771 12.9423 2.20045 12.9862 2.38328C12.9965 2.42632 13 2.49222 13 2.8V5.2C13 5.50779 12.9965 5.57369 12.9862 5.61672C12.9423 5.79955 12.7995 5.94229 12.6167 5.98619C12.5737 5.99652 12.5078 6 12.2 6H9.8C9.49222 6 9.42632 5.99652 9.38328 5.98619C9.20045 5.94229 9.05771 5.79955 9.01382 5.61672C9.00348 5.57369 9 5.50779 9 5.2V2.8C9 2.49222 9.00348 2.42632 9.01382 2.38328C9.05771 2.20045 9.20045 2.05771 9.38328 2.01382ZM2.74967 7.99997L2.8 8H5.2L5.25033 7.99997C5.47878 7.99975 5.67572 7.99956 5.85017 8.04145C6.39864 8.17312 6.82688 8.60136 6.95856 9.14983C7.00044 9.32429 7.00025 9.52122 7.00003 9.74967L7 9.8V12.2L7.00003 12.2503C7.00025 12.4788 7.00044 12.6757 6.95856 12.8502C6.82688 13.3986 6.39864 13.8269 5.85017 13.9586C5.67572 14.0004 5.47878 14.0003 5.25033 14L5.2 14H2.8L2.74967 14C2.52122 14.0003 2.32429 14.0004 2.14983 13.9586C1.60136 13.8269 1.17312 13.3986 1.04145 12.8502C0.999564 12.6757 0.999752 12.4788 0.99997 12.2503L1 12.2V9.8L0.99997 9.74967C0.999752 9.52122 0.999564 9.32429 1.04145 9.14983C1.17312 8.60136 1.60136 8.17312 2.14983 8.04145C2.32429 7.99956 2.52122 7.99975 2.74967 7.99997ZM2.8 9C2.49222 9 2.42632 9.00348 2.38328 9.01382C2.20045 9.05771 2.05771 9.20045 2.01382 9.38328C2.00348 9.42632 2 9.49222 2 9.8V12.2C2 12.5078 2.00348 12.5737 2.01382 12.6167C2.05771 12.7995 2.20045 12.9423 2.38328 12.9862C2.42632 12.9965 2.49222 13 2.8 13H5.2C5.50779 13 5.57369 12.9965 5.61672 12.9862C5.79955 12.9423 5.94229 12.7995 5.98619 12.6167C5.99652 12.5737 6 12.5078 6 12.2V9.8C6 9.49222 5.99652 9.42632 5.98619 9.38328C5.94229 9.20045 5.79955 9.05771 5.61672 9.01382C5.57369 9.00348 5.50779 9 5.2 9H2.8ZM9.8 8L9.74967 7.99997C9.52122 7.99975 9.32429 7.99956 9.14983 8.04145C8.60136 8.17312 8.17312 8.60136 8.04145 9.14983C7.99956 9.32429 7.99975 9.52122 7.99997 9.74967L8 9.8V12.2L7.99997 12.2503C7.99975 12.4788 7.99956 12.6757 8.04145 12.8502C8.17312 13.3986 8.60136 13.8269 9.14983 13.9586C9.32429 14.0004 9.52122 14.0003 9.74967 14L9.8 14H12.2L12.2503 14C12.4788 14.0003 12.6757 14.0004 12.8502 13.9586C13.3986 13.8269 13.8269 13.3986 13.9586 12.8502C14.0004 12.6757 14.0003 12.4788 14 12.2503L14 12.2V9.8L14 9.74967C14.0003 9.52122 14.0004 9.32429 13.9586 9.14983C13.8269 8.60136 13.3986 8.17312 12.8502 8.04145C12.6757 7.99956 12.4788 7.99975 12.2503 7.99997L12.2 8H9.8ZM9.38328 9.01382C9.42632 9.00348 9.49222 9 9.8 9H12.2C12.5078 9 12.5737 9.00348 12.6167 9.01382C12.7995 9.05771 12.9423 9.20045 12.9862 9.38328C12.9965 9.42632 13 9.49222 13 9.8V12.2C13 12.5078 12.9965 12.5737 12.9862 12.6167C12.9423 12.7995 12.7995 12.9423 12.6167 12.9862C12.5737 12.9965 12.5078 13 12.2 13H9.8C9.49222 13 9.42632 12.9965 9.38328 12.9862C9.20045 12.9423 9.05771 12.7995 9.01382 12.6167C9.00348 12.5737 9 12.5078 9 12.2V9.8C9 9.49222 9.00348 9.42632 9.01382 9.38328C9.05771 9.20045 9.20045 9.05771 9.38328 9.01382Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1B = [\"color\"];\nvar DesktopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1B);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 3.25C1 3.11193 1.11193 3 1.25 3H13.75C13.8881 3 14 3.11193 14 3.25V10.75C14 10.8881 13.8881 11 13.75 11H1.25C1.11193 11 1 10.8881 1 10.75V3.25ZM1.25 2C0.559643 2 0 2.55964 0 3.25V10.75C0 11.4404 0.559644 12 1.25 12H5.07341L4.82991 13.2986C4.76645 13.6371 5.02612 13.95 5.37049 13.95H9.62951C9.97389 13.95 10.2336 13.6371 10.1701 13.2986L9.92659 12H13.75C14.4404 12 15 11.4404 15 10.75V3.25C15 2.55964 14.4404 2 13.75 2H1.25ZM9.01091 12H5.98909L5.79222 13.05H9.20778L9.01091 12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1C = [\"color\"];\nvar DimensionsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1C);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.00014 2.73895C3.00014 2.94698 2.76087 3.06401 2.59666 2.93628L1.00386 1.69744C0.875177 1.59735 0.875177 1.40286 1.00386 1.30277L2.59666 0.063928C2.76087 -0.0637944 3.00014 0.0532293 3.00014 0.261266V1.00012H9.00009V0.261296C9.00009 0.0532591 9.23936 -0.0637646 9.40358 0.0639578L10.9964 1.3028C11.1251 1.40289 11.1251 1.59738 10.9964 1.69747L9.40358 2.93631C9.23936 3.06404 9.00009 2.94701 9.00009 2.73898V2.00012H3.00014V2.73895ZM9.50002 4.99998H2.50002C2.22388 4.99998 2.00002 5.22384 2.00002 5.49998V12.5C2.00002 12.7761 2.22388 13 2.50002 13H9.50002C9.77616 13 10 12.7761 10 12.5V5.49998C10 5.22384 9.77616 4.99998 9.50002 4.99998ZM2.50002 3.99998C1.67159 3.99998 1.00002 4.67156 1.00002 5.49998V12.5C1.00002 13.3284 1.67159 14 2.50002 14H9.50002C10.3284 14 11 13.3284 11 12.5V5.49998C11 4.67156 10.3284 3.99998 9.50002 3.99998H2.50002ZM14.7389 6.00001H14V12H14.7389C14.9469 12 15.064 12.2393 14.9362 12.4035L13.6974 13.9963C13.5973 14.125 13.4028 14.125 13.3027 13.9963L12.0639 12.4035C11.9362 12.2393 12.0532 12 12.2612 12H13V6.00001H12.2612C12.0532 6.00001 11.9361 5.76074 12.0639 5.59653L13.3027 4.00373C13.4028 3.87505 13.5973 3.87505 13.6974 4.00374L14.9362 5.59653C15.0639 5.76074 14.9469 6.00001 14.7389 6.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1D = [\"color\"];\nvar DiscIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1D);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM1.82708 7.49991C1.82708 4.36689 4.36689 1.82707 7.49991 1.82707C10.6329 1.82707 13.1727 4.36689 13.1727 7.49991C13.1727 10.6329 10.6329 13.1727 7.49991 13.1727C4.36689 13.1727 1.82708 10.6329 1.82708 7.49991ZM8.37287 7.50006C8.37287 7.98196 7.98221 8.37263 7.5003 8.37263C7.01839 8.37263 6.62773 7.98196 6.62773 7.50006C6.62773 7.01815 7.01839 6.62748 7.5003 6.62748C7.98221 6.62748 8.37287 7.01815 8.37287 7.50006ZM9.32287 7.50006C9.32287 8.50664 8.50688 9.32263 7.5003 9.32263C6.49372 9.32263 5.67773 8.50664 5.67773 7.50006C5.67773 6.49348 6.49372 5.67748 7.5003 5.67748C8.50688 5.67748 9.32287 6.49348 9.32287 7.50006Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1E = [\"color\"];\nvar DiscordLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1E);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M5.07451 1.82584C5.03267 1.81926 4.99014 1.81825 4.94803 1.82284C4.10683 1.91446 2.82673 2.36828 2.07115 2.77808C2.02106 2.80525 1.97621 2.84112 1.93869 2.88402C1.62502 3.24266 1.34046 3.82836 1.11706 4.38186C0.887447 4.95076 0.697293 5.55032 0.588937 5.98354C0.236232 7.39369 0.042502 9.08728 0.0174948 10.6925C0.0162429 10.7729 0.0351883 10.8523 0.0725931 10.9234C0.373679 11.496 1.02015 12.027 1.66809 12.4152C2.32332 12.8078 3.08732 13.1182 3.70385 13.1778C3.85335 13.1922 4.00098 13.1358 4.10282 13.0255C4.2572 12.8581 4.5193 12.4676 4.71745 12.1643C4.80739 12.0267 4.89157 11.8953 4.95845 11.7901C5.62023 11.9106 6.45043 11.9801 7.50002 11.9801C8.54844 11.9801 9.37796 11.9107 10.0394 11.7905C10.1062 11.8957 10.1903 12.0269 10.2801 12.1643C10.4783 12.4676 10.7404 12.8581 10.8947 13.0255C10.9966 13.1358 11.1442 13.1922 11.2937 13.1778C11.9102 13.1182 12.6742 12.8078 13.3295 12.4152C13.9774 12.027 14.6239 11.496 14.925 10.9234C14.9624 10.8523 14.9813 10.7729 14.9801 10.6925C14.9551 9.08728 14.7613 7.39369 14.4086 5.98354C14.3003 5.55032 14.1101 4.95076 13.8805 4.38186C13.6571 3.82836 13.3725 3.24266 13.0589 2.88402C13.0214 2.84112 12.9765 2.80525 12.9264 2.77808C12.1708 2.36828 10.8907 1.91446 10.0495 1.82284C10.0074 1.81825 9.96489 1.81926 9.92305 1.82584C9.71676 1.85825 9.5391 1.96458 9.40809 2.06355C9.26977 2.16804 9.1413 2.29668 9.0304 2.42682C8.86968 2.61544 8.71437 2.84488 8.61428 3.06225C8.27237 3.03501 7.90138 3.02 7.5 3.02C7.0977 3.02 6.72593 3.03508 6.38337 3.06244C6.28328 2.84501 6.12792 2.61549 5.96716 2.42682C5.85626 2.29668 5.72778 2.16804 5.58947 2.06355C5.45846 1.96458 5.2808 1.85825 5.07451 1.82584ZM11.0181 11.5382C11.0395 11.5713 11.0615 11.6051 11.0838 11.6392C11.2169 11.843 11.3487 12.0385 11.4508 12.1809C11.8475 12.0916 12.352 11.8818 12.8361 11.5917C13.3795 11.2661 13.8098 10.8918 14.0177 10.5739C13.9852 9.06758 13.7993 7.50369 13.4773 6.21648C13.38 5.82759 13.2038 5.27021 12.9903 4.74117C12.7893 4.24326 12.5753 3.82162 12.388 3.5792C11.7376 3.24219 10.7129 2.88582 10.0454 2.78987C10.0308 2.79839 10.0113 2.81102 9.98675 2.82955C9.91863 2.881 9.84018 2.95666 9.76111 3.04945C9.71959 3.09817 9.68166 3.1471 9.64768 3.19449C9.953 3.25031 10.2253 3.3171 10.4662 3.39123C11.1499 3.6016 11.6428 3.89039 11.884 4.212C12.0431 4.42408 12.0001 4.72494 11.788 4.884C11.5759 5.04306 11.2751 5.00008 11.116 4.788C11.0572 4.70961 10.8001 4.4984 10.1838 4.30877C9.58933 4.12585 8.71356 3.98 7.5 3.98C6.28644 3.98 5.41067 4.12585 4.81616 4.30877C4.19988 4.4984 3.94279 4.70961 3.884 4.788C3.72494 5.00008 3.42408 5.04306 3.212 4.884C2.99992 4.72494 2.95694 4.42408 3.116 4.212C3.35721 3.89039 3.85011 3.6016 4.53383 3.39123C4.77418 3.31727 5.04571 3.25062 5.35016 3.19488C5.31611 3.14738 5.27808 3.09831 5.23645 3.04945C5.15738 2.95666 5.07893 2.881 5.01081 2.82955C4.98628 2.81102 4.96674 2.79839 4.95217 2.78987C4.28464 2.88582 3.25999 3.24219 2.60954 3.5792C2.42226 3.82162 2.20825 4.24326 2.00729 4.74117C1.79376 5.27021 1.61752 5.82759 1.52025 6.21648C1.19829 7.50369 1.01236 9.06758 0.97986 10.5739C1.18772 10.8918 1.61807 11.2661 2.16148 11.5917C2.64557 11.8818 3.15003 12.0916 3.5468 12.1809C3.64885 12.0385 3.78065 11.843 3.9138 11.6392C3.93626 11.6048 3.95838 11.5708 3.97996 11.5375C3.19521 11.2591 2.77361 10.8758 2.50064 10.4664C2.35359 10.2458 2.4132 9.94778 2.63377 9.80074C2.85435 9.65369 3.15236 9.71329 3.29941 9.93387C3.56077 10.3259 4.24355 11.0201 7.50002 11.0201C10.7565 11.0201 11.4392 10.326 11.7006 9.93386C11.8477 9.71329 12.1457 9.65369 12.3663 9.80074C12.5869 9.94779 12.6465 10.2458 12.4994 10.4664C12.2262 10.8762 11.8041 11.2598 11.0181 11.5382ZM4.08049 7.01221C4.32412 6.74984 4.65476 6.60162 5.00007 6.59998C5.34538 6.60162 5.67603 6.74984 5.91966 7.01221C6.16329 7.27459 6.30007 7.62974 6.30007 7.99998C6.30007 8.37021 6.16329 8.72536 5.91966 8.98774C5.67603 9.25011 5.34538 9.39833 5.00007 9.39998C4.65476 9.39833 4.32412 9.25011 4.08049 8.98774C3.83685 8.72536 3.70007 8.37021 3.70007 7.99998C3.70007 7.62974 3.83685 7.27459 4.08049 7.01221ZM9.99885 6.59998C9.65354 6.60162 9.3229 6.74984 9.07926 7.01221C8.83563 7.27459 8.69885 7.62974 8.69885 7.99998C8.69885 8.37021 8.83563 8.72536 9.07926 8.98774C9.3229 9.25011 9.65354 9.39833 9.99885 9.39998C10.3442 9.39833 10.6748 9.25011 10.9184 8.98774C11.1621 8.72536 11.2989 8.37021 11.2989 7.99998C11.2989 7.62974 11.1621 7.27459 10.9184 7.01221C10.6748 6.74984 10.3442 6.60162 9.99885 6.59998Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$1F = [\"color\"];\nvar DividerHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1F);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 7.5C2 7.22386 2.22386 7 2.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H2.5C2.22386 8 2 7.77614 2 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1G = [\"color\"];\nvar DividerVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1G);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 2C7.77614 2 8 2.22386 8 2.5L8 12.5C8 12.7761 7.77614 13 7.5 13C7.22386 13 7 12.7761 7 12.5L7 2.5C7 2.22386 7.22386 2 7.5 2Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1H = [\"color\"];\nvar DotIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1H);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 9.125C8.39746 9.125 9.125 8.39746 9.125 7.5C9.125 6.60254 8.39746 5.875 7.5 5.875C6.60254 5.875 5.875 6.60254 5.875 7.5C5.875 8.39746 6.60254 9.125 7.5 9.125ZM7.5 10.125C8.94975 10.125 10.125 8.94975 10.125 7.5C10.125 6.05025 8.94975 4.875 7.5 4.875C6.05025 4.875 4.875 6.05025 4.875 7.5C4.875 8.94975 6.05025 10.125 7.5 10.125Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1I = [\"color\"];\nvar DotFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1I);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.875 7.5C9.875 8.81168 8.81168 9.875 7.5 9.875C6.18832 9.875 5.125 8.81168 5.125 7.5C5.125 6.18832 6.18832 5.125 7.5 5.125C8.81168 5.125 9.875 6.18832 9.875 7.5Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$1J = [\"color\"];\nvar DotsHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1J);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.625 7.5C3.625 8.12132 3.12132 8.625 2.5 8.625C1.87868 8.625 1.375 8.12132 1.375 7.5C1.375 6.87868 1.87868 6.375 2.5 6.375C3.12132 6.375 3.625 6.87868 3.625 7.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM12.5 8.625C13.1213 8.625 13.625 8.12132 13.625 7.5C13.625 6.87868 13.1213 6.375 12.5 6.375C11.8787 6.375 11.375 6.87868 11.375 7.5C11.375 8.12132 11.8787 8.625 12.5 8.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1K = [\"color\"];\nvar DotsVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1K);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.625 2.5C8.625 3.12132 8.12132 3.625 7.5 3.625C6.87868 3.625 6.375 3.12132 6.375 2.5C6.375 1.87868 6.87868 1.375 7.5 1.375C8.12132 1.375 8.625 1.87868 8.625 2.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM7.5 13.625C8.12132 13.625 8.625 13.1213 8.625 12.5C8.625 11.8787 8.12132 11.375 7.5 11.375C6.87868 11.375 6.375 11.8787 6.375 12.5C6.375 13.1213 6.87868 13.625 7.5 13.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1L = [\"color\"];\nvar DoubleArrowDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1L);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.85355 2.14645C3.65829 1.95118 3.34171 1.95118 3.14645 2.14645C2.95118 2.34171 2.95118 2.65829 3.14645 2.85355L7.14645 6.85355C7.34171 7.04882 7.65829 7.04882 7.85355 6.85355L11.8536 2.85355C12.0488 2.65829 12.0488 2.34171 11.8536 2.14645C11.6583 1.95118 11.3417 1.95118 11.1464 2.14645L7.5 5.79289L3.85355 2.14645ZM3.85355 8.14645C3.65829 7.95118 3.34171 7.95118 3.14645 8.14645C2.95118 8.34171 2.95118 8.65829 3.14645 8.85355L7.14645 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L11.8536 8.85355C12.0488 8.65829 12.0488 8.34171 11.8536 8.14645C11.6583 7.95118 11.3417 7.95118 11.1464 8.14645L7.5 11.7929L3.85355 8.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1M = [\"color\"];\nvar DoubleArrowLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1M);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645C6.65829 2.95118 6.34171 2.95118 6.14645 3.14645L2.14645 7.14645C1.95118 7.34171 1.95118 7.65829 2.14645 7.85355L6.14645 11.8536C6.34171 12.0488 6.65829 12.0488 6.85355 11.8536C7.04882 11.6583 7.04882 11.3417 6.85355 11.1464L3.20711 7.5L6.85355 3.85355ZM12.8536 3.85355C13.0488 3.65829 13.0488 3.34171 12.8536 3.14645C12.6583 2.95118 12.3417 2.95118 12.1464 3.14645L8.14645 7.14645C7.95118 7.34171 7.95118 7.65829 8.14645 7.85355L12.1464 11.8536C12.3417 12.0488 12.6583 12.0488 12.8536 11.8536C13.0488 11.6583 13.0488 11.3417 12.8536 11.1464L9.20711 7.5L12.8536 3.85355Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1N = [\"color\"];\nvar DoubleArrowRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1N);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1O = [\"color\"];\nvar DoubleArrowUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1O);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.1464 6.85355C11.3417 7.04882 11.6583 7.04882 11.8536 6.85355C12.0488 6.65829 12.0488 6.34171 11.8536 6.14645L7.85355 2.14645C7.65829 1.95118 7.34171 1.95118 7.14645 2.14645L3.14645 6.14645C2.95118 6.34171 2.95118 6.65829 3.14645 6.85355C3.34171 7.04882 3.65829 7.04882 3.85355 6.85355L7.5 3.20711L11.1464 6.85355ZM11.1464 12.8536C11.3417 13.0488 11.6583 13.0488 11.8536 12.8536C12.0488 12.6583 12.0488 12.3417 11.8536 12.1464L7.85355 8.14645C7.65829 7.95118 7.34171 7.95118 7.14645 8.14645L3.14645 12.1464C2.95118 12.3417 2.95118 12.6583 3.14645 12.8536C3.34171 13.0488 3.65829 13.0488 3.85355 12.8536L7.5 9.20711L11.1464 12.8536Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1P = [\"color\"];\nvar DownloadIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1P);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.50005 1.04999C7.74858 1.04999 7.95005 1.25146 7.95005 1.49999V8.41359L10.1819 6.18179C10.3576 6.00605 10.6425 6.00605 10.8182 6.18179C10.994 6.35753 10.994 6.64245 10.8182 6.81819L7.81825 9.81819C7.64251 9.99392 7.35759 9.99392 7.18185 9.81819L4.18185 6.81819C4.00611 6.64245 4.00611 6.35753 4.18185 6.18179C4.35759 6.00605 4.64251 6.00605 4.81825 6.18179L7.05005 8.41359V1.49999C7.05005 1.25146 7.25152 1.04999 7.50005 1.04999ZM2.5 10C2.77614 10 3 10.2239 3 10.5V12C3 12.5539 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2239 12.2239 10 12.5 10C12.7761 10 13 10.2239 13 10.5V12C13 13.1041 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2239 2.22386 10 2.5 10Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1Q = [\"color\"];\nvar DragHandleDots1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1Q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"circle\", {\n    cx: \"4.5\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"4.5\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"4.5\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"4.5\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"4.5\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"4.5\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"6.5\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"6.5\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"6.5\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"6.5\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"6.5\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"6.5\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"8.499\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"8.499\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"8.499\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"8.499\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"8.499\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"8.499\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"10.499\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"10.499\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"10.499\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"10.499\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"10.499\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), createElement(\"circle\", {\n    cx: \"10.499\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }));\n});\n\nvar _excluded$1R = [\"color\"];\nvar DragHandleDots2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1R);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.5 4.625C6.12132 4.625 6.625 4.12132 6.625 3.5C6.625 2.87868 6.12132 2.375 5.5 2.375C4.87868 2.375 4.375 2.87868 4.375 3.5C4.375 4.12132 4.87868 4.625 5.5 4.625ZM9.5 4.625C10.1213 4.625 10.625 4.12132 10.625 3.5C10.625 2.87868 10.1213 2.375 9.5 2.375C8.87868 2.375 8.375 2.87868 8.375 3.5C8.375 4.12132 8.87868 4.625 9.5 4.625ZM10.625 7.5C10.625 8.12132 10.1213 8.625 9.5 8.625C8.87868 8.625 8.375 8.12132 8.375 7.5C8.375 6.87868 8.87868 6.375 9.5 6.375C10.1213 6.375 10.625 6.87868 10.625 7.5ZM5.5 8.625C6.12132 8.625 6.625 8.12132 6.625 7.5C6.625 6.87868 6.12132 6.375 5.5 6.375C4.87868 6.375 4.375 6.87868 4.375 7.5C4.375 8.12132 4.87868 8.625 5.5 8.625ZM10.625 11.5C10.625 12.1213 10.1213 12.625 9.5 12.625C8.87868 12.625 8.375 12.1213 8.375 11.5C8.375 10.8787 8.87868 10.375 9.5 10.375C10.1213 10.375 10.625 10.8787 10.625 11.5ZM5.5 12.625C6.12132 12.625 6.625 12.1213 6.625 11.5C6.625 10.8787 6.12132 10.375 5.5 10.375C4.87868 10.375 4.375 10.8787 4.375 11.5C4.375 12.1213 4.87868 12.625 5.5 12.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1S = [\"color\"];\nvar DragHandleHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1S);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.49998 4.09998C2.27906 4.09998 2.09998 4.27906 2.09998 4.49998C2.09998 4.72089 2.27906 4.89998 2.49998 4.89998H12.5C12.7209 4.89998 12.9 4.72089 12.9 4.49998C12.9 4.27906 12.7209 4.09998 12.5 4.09998H2.49998ZM2.49998 6.09998C2.27906 6.09998 2.09998 6.27906 2.09998 6.49998C2.09998 6.72089 2.27906 6.89998 2.49998 6.89998H12.5C12.7209 6.89998 12.9 6.72089 12.9 6.49998C12.9 6.27906 12.7209 6.09998 12.5 6.09998H2.49998ZM2.09998 8.49998C2.09998 8.27906 2.27906 8.09998 2.49998 8.09998H12.5C12.7209 8.09998 12.9 8.27906 12.9 8.49998C12.9 8.72089 12.7209 8.89998 12.5 8.89998H2.49998C2.27906 8.89998 2.09998 8.72089 2.09998 8.49998ZM2.49998 10.1C2.27906 10.1 2.09998 10.2791 2.09998 10.5C2.09998 10.7209 2.27906 10.9 2.49998 10.9H12.5C12.7209 10.9 12.9 10.7209 12.9 10.5C12.9 10.2791 12.7209 10.1 12.5 10.1H2.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1T = [\"color\"];\nvar DragHandleVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1T);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.09998 12.5C4.09998 12.7209 4.27906 12.9 4.49998 12.9C4.72089 12.9 4.89998 12.7209 4.89998 12.5L4.89998 2.50002C4.89998 2.27911 4.72089 2.10003 4.49998 2.10003C4.27906 2.10003 4.09998 2.27911 4.09998 2.50002L4.09998 12.5ZM6.09998 12.5C6.09998 12.7209 6.27906 12.9 6.49998 12.9C6.72089 12.9 6.89998 12.7209 6.89998 12.5L6.89998 2.50002C6.89998 2.27911 6.72089 2.10003 6.49998 2.10003C6.27906 2.10003 6.09998 2.27911 6.09998 2.50002L6.09998 12.5ZM8.49998 12.9C8.27906 12.9 8.09998 12.7209 8.09998 12.5L8.09998 2.50002C8.09998 2.27911 8.27906 2.10002 8.49998 2.10002C8.72089 2.10002 8.89998 2.27911 8.89998 2.50002L8.89998 12.5C8.89998 12.7209 8.72089 12.9 8.49998 12.9ZM10.1 12.5C10.1 12.7209 10.2791 12.9 10.5 12.9C10.7209 12.9 10.9 12.7209 10.9 12.5L10.9 2.50002C10.9 2.27911 10.7209 2.10002 10.5 2.10002C10.2791 2.10002 10.1 2.27911 10.1 2.50002L10.1 12.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1U = [\"color\"];\nvar DrawingPinIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1U);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10.3285 1.13607C10.1332 0.940809 9.81662 0.940808 9.62136 1.13607C9.42609 1.33133 9.42609 1.64792 9.62136 1.84318L10.2744 2.49619L5.42563 6.13274L4.31805 5.02516C4.12279 4.8299 3.80621 4.8299 3.61095 5.02516C3.41569 5.22042 3.41569 5.537 3.61095 5.73226L5.02516 7.14648L6.08582 8.20714L2.81545 11.4775C2.62019 11.6728 2.62019 11.9894 2.81545 12.1846C3.01072 12.3799 3.3273 12.3799 3.52256 12.1846L6.79293 8.91425L7.85359 9.97491L9.2678 11.3891C9.46306 11.5844 9.77965 11.5844 9.97491 11.3891C10.1702 11.1939 10.1702 10.8773 9.97491 10.682L8.86733 9.57443L12.5039 4.7257L13.1569 5.37871C13.3522 5.57397 13.6687 5.57397 13.864 5.37871C14.0593 5.18345 14.0593 4.86687 13.864 4.6716L12.8033 3.61094L11.3891 2.19673L10.3285 1.13607ZM6.13992 6.84702L10.9887 3.21047L11.7896 4.01142L8.15305 8.86015L6.13992 6.84702Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1V = [\"color\"];\nvar DrawingPinFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1V);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.62129 1.13607C9.81656 0.940808 10.1331 0.940809 10.3284 1.13607L11.3891 2.19673L12.8033 3.61094L13.8639 4.6716C14.0592 4.86687 14.0592 5.18345 13.8639 5.37871C13.6687 5.57397 13.3521 5.57397 13.1568 5.37871L12.5038 4.7257L8.86727 9.57443L9.97485 10.682C10.1701 10.8773 10.1701 11.1939 9.97485 11.3891C9.77959 11.5844 9.463 11.5844 9.26774 11.3891L7.85353 9.97491L6.79287 8.91425L3.5225 12.1846C3.32724 12.3799 3.01065 12.3799 2.81539 12.1846C2.62013 11.9894 2.62013 11.6728 2.81539 11.4775L6.08576 8.20714L5.0251 7.14648L3.61089 5.73226C3.41563 5.537 3.41562 5.22042 3.61089 5.02516C3.80615 4.8299 4.12273 4.8299 4.31799 5.02516L5.42557 6.13274L10.2743 2.49619L9.62129 1.84318C9.42603 1.64792 9.42603 1.33133 9.62129 1.13607Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M9.62129 1.13607C9.81656 0.940808 10.1331 0.940809 10.3284 1.13607L11.3891 2.19673L12.8033 3.61094L13.8639 4.6716C14.0592 4.86687 14.0592 5.18345 13.8639 5.37871C13.6687 5.57397 13.3521 5.57397 13.1568 5.37871L12.5038 4.7257L8.86727 9.57443L9.97485 10.682C10.1701 10.8773 10.1701 11.1939 9.97485 11.3891C9.77959 11.5844 9.463 11.5844 9.26774 11.3891L7.85353 9.97491L6.79287 8.91425L3.5225 12.1846C3.32724 12.3799 3.01065 12.3799 2.81539 12.1846C2.62013 11.9894 2.62013 11.6728 2.81539 11.4775L6.08576 8.20714L5.0251 7.14648L3.61089 5.73226C3.41563 5.537 3.41562 5.22042 3.61089 5.02516C3.80615 4.8299 4.12273 4.8299 4.31799 5.02516L5.42557 6.13274L10.2743 2.49619L9.62129 1.84318C9.42603 1.64792 9.42603 1.33133 9.62129 1.13607Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1W = [\"color\"];\nvar DropdownMenuIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1W);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49999 3.09998C7.27907 3.09998 7.09999 3.27906 7.09999 3.49998C7.09999 3.72089 7.27907 3.89998 7.49999 3.89998H14.5C14.7209 3.89998 14.9 3.72089 14.9 3.49998C14.9 3.27906 14.7209 3.09998 14.5 3.09998H7.49999ZM7.49998 5.1C7.27907 5.1 7.09998 5.27908 7.09998 5.5C7.09998 5.72091 7.27907 5.9 7.49998 5.9H14.5C14.7209 5.9 14.9 5.72091 14.9 5.5C14.9 5.27908 14.7209 5.1 14.5 5.1H7.49998ZM7.1 7.5C7.1 7.27908 7.27909 7.1 7.5 7.1H14.5C14.7209 7.1 14.9 7.27908 14.9 7.5C14.9 7.72091 14.7209 7.9 14.5 7.9H7.5C7.27909 7.9 7.1 7.72091 7.1 7.5ZM7.49998 9.1C7.27907 9.1 7.09998 9.27908 7.09998 9.5C7.09998 9.72091 7.27907 9.9 7.49998 9.9H14.5C14.7209 9.9 14.9 9.72091 14.9 9.5C14.9 9.27908 14.7209 9.1 14.5 9.1H7.49998ZM7.09998 11.5C7.09998 11.2791 7.27907 11.1 7.49998 11.1H14.5C14.7209 11.1 14.9 11.2791 14.9 11.5C14.9 11.7209 14.7209 11.9 14.5 11.9H7.49998C7.27907 11.9 7.09998 11.7209 7.09998 11.5ZM2.5 9.25003L5 6.00003H0L2.5 9.25003Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1X = [\"color\"];\nvar EnterIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1X);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.5 1C4.22386 1 4 1.22386 4 1.5C4 1.77614 4.22386 2 4.5 2H12V13H4.5C4.22386 13 4 13.2239 4 13.5C4 13.7761 4.22386 14 4.5 14H12C12.5523 14 13 13.5523 13 13V2C13 1.44772 12.5523 1 12 1H4.5ZM6.60355 4.89645C6.40829 4.70118 6.09171 4.70118 5.89645 4.89645C5.70118 5.09171 5.70118 5.40829 5.89645 5.60355L7.29289 7H0.5C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H7.29289L5.89645 9.39645C5.70118 9.59171 5.70118 9.90829 5.89645 10.1036C6.09171 10.2988 6.40829 10.2988 6.60355 10.1036L8.85355 7.85355C9.04882 7.65829 9.04882 7.34171 8.85355 7.14645L6.60355 4.89645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1Y = [\"color\"];\nvar EnterFullScreenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1Y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 2.5C2 2.22386 2.22386 2 2.5 2H5.5C5.77614 2 6 2.22386 6 2.5C6 2.77614 5.77614 3 5.5 3H3V5.5C3 5.77614 2.77614 6 2.5 6C2.22386 6 2 5.77614 2 5.5V2.5ZM9 2.5C9 2.22386 9.22386 2 9.5 2H12.5C12.7761 2 13 2.22386 13 2.5V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3H9.5C9.22386 3 9 2.77614 9 2.5ZM2.5 9C2.77614 9 3 9.22386 3 9.5V12H5.5C5.77614 12 6 12.2239 6 12.5C6 12.7761 5.77614 13 5.5 13H2.5C2.22386 13 2 12.7761 2 12.5V9.5C2 9.22386 2.22386 9 2.5 9ZM12.5 9C12.7761 9 13 9.22386 13 9.5V12.5C13 12.7761 12.7761 13 12.5 13H9.5C9.22386 13 9 12.7761 9 12.5C9 12.2239 9.22386 12 9.5 12H12V9.5C12 9.22386 12.2239 9 12.5 9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1Z = [\"color\"];\nvar EnvelopeClosedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1Z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 2C0.447715 2 0 2.44772 0 3V12C0 12.5523 0.447715 13 1 13H14C14.5523 13 15 12.5523 15 12V3C15 2.44772 14.5523 2 14 2H1ZM1 3L14 3V3.92494C13.9174 3.92486 13.8338 3.94751 13.7589 3.99505L7.5 7.96703L1.24112 3.99505C1.16621 3.94751 1.0826 3.92486 1 3.92494V3ZM1 4.90797V12H14V4.90797L7.74112 8.87995C7.59394 8.97335 7.40606 8.97335 7.25888 8.87995L1 4.90797Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1_ = [\"color\"];\nvar EnvelopeOpenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1_);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.94721 0.164594C7.66569 0.0238299 7.33431 0.0238302 7.05279 0.164594L0.552786 3.41459C0.214002 3.58399 0 3.93025 0 4.30902V12C0 12.5523 0.447715 13 1 13H14C14.5523 13 15 12.5523 15 12V4.30902C15 3.93025 14.786 3.58399 14.4472 3.41459L7.94721 0.164594ZM13.5689 4.09349L7.5 1.05902L1.43105 4.09349L7.5 7.29136L13.5689 4.09349ZM1 4.88366V12H14V4.88366L7.70977 8.19813C7.57848 8.26731 7.42152 8.26731 7.29023 8.19813L1 4.88366Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$1$ = [\"color\"];\nvar EraserIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1$);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.36052 0.72921C8.55578 0.533948 8.87236 0.533948 9.06763 0.72921L14.2708 5.93235C14.466 6.12761 14.466 6.4442 14.2708 6.63946L8.95513 11.9551L7.3466 13.5636C6.76081 14.1494 5.81106 14.1494 5.22528 13.5636L1.43635 9.7747C0.850563 9.18891 0.850563 8.23917 1.43635 7.65338L3.04488 6.04485L8.36052 0.72921ZM8.71407 1.78987L4.10554 6.3984L8.60157 10.8944L13.2101 6.28591L8.71407 1.78987ZM7.89447 11.6015L3.39843 7.10551L2.14346 8.36049C1.94819 8.55575 1.94819 8.87233 2.14346 9.06759L5.93238 12.8565C6.12765 13.0518 6.44423 13.0518 6.63949 12.8565L7.89447 11.6015Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$20 = [\"color\"];\nvar ExclamationTriangleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$20);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.4449 0.608765C8.0183 -0.107015 6.9817 -0.107015 6.55509 0.608766L0.161178 11.3368C-0.275824 12.07 0.252503 13 1.10608 13H13.8939C14.7475 13 15.2758 12.07 14.8388 11.3368L8.4449 0.608765ZM7.4141 1.12073C7.45288 1.05566 7.54712 1.05566 7.5859 1.12073L13.9798 11.8488C14.0196 11.9154 13.9715 12 13.8939 12H1.10608C1.02849 12 0.980454 11.9154 1.02018 11.8488L7.4141 1.12073ZM6.8269 4.48611C6.81221 4.10423 7.11783 3.78663 7.5 3.78663C7.88217 3.78663 8.18778 4.10423 8.1731 4.48612L8.01921 8.48701C8.00848 8.766 7.7792 8.98664 7.5 8.98664C7.2208 8.98664 6.99151 8.766 6.98078 8.48701L6.8269 4.48611ZM8.24989 10.476C8.24989 10.8902 7.9141 11.226 7.49989 11.226C7.08567 11.226 6.74989 10.8902 6.74989 10.476C6.74989 10.0618 7.08567 9.72599 7.49989 9.72599C7.9141 9.72599 8.24989 10.0618 8.24989 10.476Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$21 = [\"color\"];\nvar ExitIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$21);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 1C2.44771 1 2 1.44772 2 2V13C2 13.5523 2.44772 14 3 14H10.5C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13H3V2L10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1H3ZM12.6036 4.89645C12.4083 4.70118 12.0917 4.70118 11.8964 4.89645C11.7012 5.09171 11.7012 5.40829 11.8964 5.60355L13.2929 7H6.5C6.22386 7 6 7.22386 6 7.5C6 7.77614 6.22386 8 6.5 8H13.2929L11.8964 9.39645C11.7012 9.59171 11.7012 9.90829 11.8964 10.1036C12.0917 10.2988 12.4083 10.2988 12.6036 10.1036L14.8536 7.85355C15.0488 7.65829 15.0488 7.34171 14.8536 7.14645L12.6036 4.89645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$22 = [\"color\"];\nvar ExitFullScreenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$22);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.5 2C5.77614 2 6 2.22386 6 2.5V5.5C6 5.77614 5.77614 6 5.5 6H2.5C2.22386 6 2 5.77614 2 5.5C2 5.22386 2.22386 5 2.5 5H5V2.5C5 2.22386 5.22386 2 5.5 2ZM9.5 2C9.77614 2 10 2.22386 10 2.5V5H12.5C12.7761 5 13 5.22386 13 5.5C13 5.77614 12.7761 6 12.5 6H9.5C9.22386 6 9 5.77614 9 5.5V2.5C9 2.22386 9.22386 2 9.5 2ZM2 9.5C2 9.22386 2.22386 9 2.5 9H5.5C5.77614 9 6 9.22386 6 9.5V12.5C6 12.7761 5.77614 13 5.5 13C5.22386 13 5 12.7761 5 12.5V10H2.5C2.22386 10 2 9.77614 2 9.5ZM9 9.5C9 9.22386 9.22386 9 9.5 9H12.5C12.7761 9 13 9.22386 13 9.5C13 9.77614 12.7761 10 12.5 10H10V12.5C10 12.7761 9.77614 13 9.5 13C9.22386 13 9 12.7761 9 12.5V9.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$23 = [\"color\"];\nvar ExternalLinkIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$23);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 2C2.44772 2 2 2.44772 2 3V12C2 12.5523 2.44772 13 3 13H12C12.5523 13 13 12.5523 13 12V8.5C13 8.22386 12.7761 8 12.5 8C12.2239 8 12 8.22386 12 8.5V12H3V3L6.5 3C6.77614 3 7 2.77614 7 2.5C7 2.22386 6.77614 2 6.5 2H3ZM12.8536 2.14645C12.9015 2.19439 12.9377 2.24964 12.9621 2.30861C12.9861 2.36669 12.9996 2.4303 13 2.497L13 2.5V2.50049V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3.70711L6.85355 8.85355C6.65829 9.04882 6.34171 9.04882 6.14645 8.85355C5.95118 8.65829 5.95118 8.34171 6.14645 8.14645L11.2929 3H9.5C9.22386 3 9 2.77614 9 2.5C9 2.22386 9.22386 2 9.5 2H12.4999H12.5C12.5678 2 12.6324 2.01349 12.6914 2.03794C12.7504 2.06234 12.8056 2.09851 12.8536 2.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$24 = [\"color\"];\nvar EyeClosedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$24);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14.7649 6.07596C14.9991 6.22231 15.0703 6.53079 14.9239 6.76495C14.4849 7.46743 13.9632 8.10645 13.3702 8.66305L14.5712 9.86406C14.7664 10.0593 14.7664 10.3759 14.5712 10.5712C14.3759 10.7664 14.0593 10.7664 13.8641 10.5712L12.6011 9.30817C11.805 9.90283 10.9089 10.3621 9.93375 10.651L10.383 12.3277C10.4544 12.5944 10.2961 12.8685 10.0294 12.94C9.76267 13.0115 9.4885 12.8532 9.41704 12.5865L8.95917 10.8775C8.48743 10.958 8.00036 10.9999 7.50001 10.9999C6.99965 10.9999 6.51257 10.958 6.04082 10.8775L5.58299 12.5864C5.51153 12.8532 5.23737 13.0115 4.97064 12.94C4.7039 12.8686 4.5456 12.5944 4.61706 12.3277L5.06625 10.651C4.09111 10.3621 3.19503 9.90282 2.3989 9.30815L1.1359 10.5712C0.940638 10.7664 0.624058 10.7664 0.428798 10.5712C0.233537 10.3759 0.233537 10.0593 0.428798 9.86405L1.62982 8.66303C1.03682 8.10643 0.515113 7.46742 0.0760677 6.76495C-0.0702867 6.53079 0.000898544 6.22231 0.235065 6.07596C0.469231 5.9296 0.777703 6.00079 0.924058 6.23496C1.40354 7.00213 1.989 7.68057 2.66233 8.2427C2.67315 8.25096 2.6837 8.25972 2.69397 8.26898C4.00897 9.35527 5.65537 9.99991 7.50001 9.99991C10.3078 9.99991 12.6564 8.5063 14.076 6.23495C14.2223 6.00079 14.5308 5.9296 14.7649 6.07596Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$25 = [\"color\"];\nvar EyeNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$25);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L10.6828 3.61012C9.70652 3.21671 8.63759 3 7.5 3C4.30786 3 1.65639 4.70638 0.0760002 7.23501C-0.0253338 7.39715 -0.0253334 7.60288 0.0760014 7.76501C0.902945 9.08812 2.02314 10.1861 3.36061 10.9323L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L4.31723 11.3899C5.29348 11.7833 6.36241 12 7.5 12C10.6921 12 13.3436 10.2936 14.924 7.76501C15.0253 7.60288 15.0253 7.39715 14.924 7.23501C14.0971 5.9119 12.9769 4.81391 11.6394 4.06771L13.3536 2.35355ZM9.90428 4.38861C9.15332 4.1361 8.34759 4 7.5 4C4.80285 4 2.52952 5.37816 1.09622 7.50001C1.87284 8.6497 2.89609 9.58106 4.09974 10.1931L9.90428 4.38861ZM5.09572 10.6114L10.9003 4.80685C12.1039 5.41894 13.1272 6.35031 13.9038 7.50001C12.4705 9.62183 10.1971 11 7.5 11C6.65241 11 5.84668 10.8639 5.09572 10.6114Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$26 = [\"color\"];\nvar EyeOpenIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$26);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 11C4.80285 11 2.52952 9.62184 1.09622 7.50001C2.52952 5.37816 4.80285 4 7.5 4C10.1971 4 12.4705 5.37816 13.9038 7.50001C12.4705 9.62183 10.1971 11 7.5 11ZM7.5 3C4.30786 3 1.65639 4.70638 0.0760002 7.23501C-0.0253338 7.39715 -0.0253334 7.60288 0.0760014 7.76501C1.65639 10.2936 4.30786 12 7.5 12C10.6921 12 13.3436 10.2936 14.924 7.76501C15.0253 7.60288 15.0253 7.39715 14.924 7.23501C13.3436 4.70638 10.6921 3 7.5 3ZM7.5 9.5C8.60457 9.5 9.5 8.60457 9.5 7.5C9.5 6.39543 8.60457 5.5 7.5 5.5C6.39543 5.5 5.5 6.39543 5.5 7.5C5.5 8.60457 6.39543 9.5 7.5 9.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$27 = [\"color\"];\nvar FaceIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$27);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82708 7.49972C1.82708 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82708 10.6327 1.82708 7.49972ZM5.03747 9.21395C4.87949 8.98746 4.56782 8.93193 4.34133 9.08991C4.11484 9.24789 4.05931 9.55956 4.21729 9.78605C4.93926 10.8211 6.14033 11.5 7.50004 11.5C8.85974 11.5 10.0608 10.8211 10.7828 9.78605C10.9408 9.55956 10.8852 9.24789 10.6587 9.08991C10.4323 8.93193 10.1206 8.98746 9.9626 9.21395C9.41963 9.99238 8.51907 10.5 7.50004 10.5C6.481 10.5 5.58044 9.99238 5.03747 9.21395ZM5.37503 6.84998C5.85828 6.84998 6.25003 6.45815 6.25003 5.97498C6.25003 5.4918 5.85828 5.09998 5.37503 5.09998C4.89179 5.09998 4.50003 5.4918 4.50003 5.97498C4.50003 6.45815 4.89179 6.84998 5.37503 6.84998ZM10.5 5.97498C10.5 6.45815 10.1083 6.84998 9.62503 6.84998C9.14179 6.84998 8.75003 6.45815 8.75003 5.97498C8.75003 5.4918 9.14179 5.09998 9.62503 5.09998C10.1083 5.09998 10.5 5.4918 10.5 5.97498Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$28 = [\"color\"];\nvar FigmaLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$28);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.00005 2.04999H5.52505C4.71043 2.04999 4.05005 2.71037 4.05005 3.52499C4.05005 4.33961 4.71043 4.99999 5.52505 4.99999H7.00005V2.04999ZM7.00005 1.04999H8.00005H9.47505C10.842 1.04999 11.95 2.15808 11.95 3.52499C11.95 4.33163 11.5642 5.04815 10.9669 5.49999C11.5642 5.95184 11.95 6.66836 11.95 7.475C11.95 8.8419 10.842 9.95 9.47505 9.95C8.92236 9.95 8.41198 9.76884 8.00005 9.46266V9.95L8.00005 11.425C8.00005 12.7919 6.89195 13.9 5.52505 13.9C4.15814 13.9 3.05005 12.7919 3.05005 11.425C3.05005 10.6183 3.43593 9.90184 4.03317 9.44999C3.43593 8.99814 3.05005 8.28163 3.05005 7.475C3.05005 6.66836 3.43594 5.95184 4.03319 5.5C3.43594 5.04815 3.05005 4.33163 3.05005 3.52499C3.05005 2.15808 4.15814 1.04999 5.52505 1.04999H7.00005ZM8.00005 2.04999V4.99999H9.47505C10.2897 4.99999 10.95 4.33961 10.95 3.52499C10.95 2.71037 10.2897 2.04999 9.47505 2.04999H8.00005ZM5.52505 8.94998H7.00005L7.00005 7.4788L7.00005 7.475L7.00005 7.4712V6H5.52505C4.71043 6 4.05005 6.66038 4.05005 7.475C4.05005 8.28767 4.70727 8.94684 5.5192 8.94999L5.52505 8.94998ZM4.05005 11.425C4.05005 10.6123 4.70727 9.95315 5.5192 9.94999L5.52505 9.95H7.00005L7.00005 11.425C7.00005 12.2396 6.33967 12.9 5.52505 12.9C4.71043 12.9 4.05005 12.2396 4.05005 11.425ZM8.00005 7.47206C8.00164 6.65879 8.66141 6 9.47505 6C10.2897 6 10.95 6.66038 10.95 7.475C10.95 8.28962 10.2897 8.95 9.47505 8.95C8.66141 8.95 8.00164 8.29121 8.00005 7.47794V7.47206Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$29 = [\"color\"];\nvar FileIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$29);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2a = [\"color\"];\nvar FileMinusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2a);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H9.29289L12 4.70711V12.5C12 12.7761 11.7761 13 11.5 13H3.5C3.22386 13 3 12.7761 3 12.5V2.5ZM3.5 1C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V4.60355C13 4.40464 12.921 4.21388 12.7803 4.07322L9.85355 1.14645C9.75979 1.05268 9.63261 1 9.5 1H3.5ZM5.25 7C4.97386 7 4.75 7.22386 4.75 7.5C4.75 7.77614 4.97386 8 5.25 8H9.75C10.0261 8 10.25 7.77614 10.25 7.5C10.25 7.22386 10.0261 7 9.75 7H5.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2b = [\"color\"];\nvar FilePlusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2b);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V4.70711L9.29289 2H3.5ZM2 2.5C2 1.67157 2.67157 1 3.5 1H9.5C9.63261 1 9.75979 1.05268 9.85355 1.14645L12.7803 4.07322C12.921 4.21388 13 4.40464 13 4.60355V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5ZM4.75 7.5C4.75 7.22386 4.97386 7 5.25 7H7V5.25C7 4.97386 7.22386 4.75 7.5 4.75C7.77614 4.75 8 4.97386 8 5.25V7H9.75C10.0261 7 10.25 7.22386 10.25 7.5C10.25 7.77614 10.0261 8 9.75 8H8V9.75C8 10.0261 7.77614 10.25 7.5 10.25C7.22386 10.25 7 10.0261 7 9.75V8H5.25C4.97386 8 4.75 7.77614 4.75 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2c = [\"color\"];\nvar FileTextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2c);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H9.08579C9.21839 2 9.34557 2.05268 9.43934 2.14645L11.8536 4.56066C11.9473 4.65443 12 4.78161 12 4.91421V12.5C12 12.7761 11.7761 13 11.5 13H3.5C3.22386 13 3 12.7761 3 12.5V2.5ZM3.5 1C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V4.91421C13 4.51639 12.842 4.13486 12.5607 3.85355L10.1464 1.43934C9.86514 1.15804 9.48361 1 9.08579 1H3.5ZM4.5 4C4.22386 4 4 4.22386 4 4.5C4 4.77614 4.22386 5 4.5 5H7.5C7.77614 5 8 4.77614 8 4.5C8 4.22386 7.77614 4 7.5 4H4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H10.5C10.7761 11 11 10.7761 11 10.5C11 10.2239 10.7761 10 10.5 10H4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2d = [\"color\"];\nvar FontBoldIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2d);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.10505 12C4.70805 12 4.4236 11.912 4.25171 11.736C4.0839 11.5559 4 11.2715 4 10.8827V4.11733C4 3.72033 4.08595 3.43588 4.25784 3.26398C4.43383 3.08799 4.71623 3 5.10505 3C6.42741 3 8.25591 3 9.02852 3C10.1373 3 11.0539 3.98153 11.0539 5.1846C11.0539 6.08501 10.6037 6.81855 9.70327 7.23602C10.8657 7.44851 11.5176 8.62787 11.5176 9.48128C11.5176 10.5125 10.9902 12 9.27734 12C8.77742 12 6.42626 12 5.10505 12ZM8.37891 8.00341H5.8V10.631H8.37891C8.9 10.631 9.6296 10.1211 9.6296 9.29877C9.6296 8.47643 8.9 8.00341 8.37891 8.00341ZM5.8 4.36903V6.69577H8.17969C8.53906 6.69577 9.27734 6.35939 9.27734 5.50002C9.27734 4.64064 8.48047 4.36903 8.17969 4.36903H5.8Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$2e = [\"color\"];\nvar FontFamilyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2e);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.5 4.5C2.5 3.09886 3.59886 2 5 2H12.499C12.7752 2 13 2.22386 13 2.5C13 2.77614 12.7761 3 12.5 3H8.69244L8.40509 3.85458C8.18869 4.49752 7.89401 5.37197 7.58091 6.29794C7.50259 6.52956 7.42308 6.76453 7.34332 7H8.5C8.77614 7 9 7.22386 9 7.5C9 7.77614 8.77614 8 8.5 8H7.00407C6.56724 9.28543 6.16435 10.4613 5.95799 11.0386C5.63627 11.9386 5.20712 12.4857 4.66741 12.7778C4.16335 13.0507 3.64154 13.0503 3.28378 13.05L3.25 13.05C2.94624 13.05 2.7 12.8037 2.7 12.5C2.7 12.1962 2.94624 11.95 3.25 11.95C3.64182 11.95 3.9035 11.9405 4.14374 11.8105C4.36443 11.691 4.65532 11.4148 4.92217 10.6683C5.10695 10.1514 5.45375 9.14134 5.8422 8H4.5C4.22386 8 4 7.77614 4 7.5C4 7.22386 4.22386 7 4.5 7H6.18187C6.30127 6.64785 6.42132 6.29323 6.53887 5.94559C6.85175 5.02025 7.14627 4.14631 7.36256 3.50368L7.53192 3H5C4.15114 3 3.5 3.65114 3.5 4.5C3.5 4.77614 3.27614 5 3 5C2.72386 5 2.5 4.77614 2.5 4.5Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$2f = [\"color\"];\nvar FontItalicIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2f);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.67494 3.50017C5.67494 3.25164 5.87641 3.05017 6.12494 3.05017H10.6249C10.8735 3.05017 11.0749 3.25164 11.0749 3.50017C11.0749 3.7487 10.8735 3.95017 10.6249 3.95017H9.00587L7.2309 11.05H8.87493C9.12345 11.05 9.32493 11.2515 9.32493 11.5C9.32493 11.7486 9.12345 11.95 8.87493 11.95H4.37493C4.1264 11.95 3.92493 11.7486 3.92493 11.5C3.92493 11.2515 4.1264 11.05 4.37493 11.05H5.99397L7.76894 3.95017H6.12494C5.87641 3.95017 5.67494 3.7487 5.67494 3.50017Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2g = [\"color\"];\nvar FontRomanIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2g);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.79993 3.50017C4.79993 3.25164 5.0014 3.05017 5.24993 3.05017H9.74993C9.99845 3.05017 10.1999 3.25164 10.1999 3.50017C10.1999 3.7487 9.99845 3.95017 9.74993 3.95017H8.09993V11.05H9.74994C9.99847 11.05 10.1999 11.2515 10.1999 11.5C10.1999 11.7486 9.99847 11.95 9.74994 11.95H5.24994C5.00141 11.95 4.79994 11.7486 4.79994 11.5C4.79994 11.2515 5.00141 11.05 5.24994 11.05H6.89993V3.95017H5.24993C5.0014 3.95017 4.79993 3.7487 4.79993 3.50017Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2h = [\"color\"];\nvar FontSizeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2h);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.78233 2.21707C2.70732 2.14206 2.60557 2.09991 2.49949 2.09991C2.3934 2.09991 2.29166 2.14206 2.21664 2.21707L0.216645 4.21707C0.0604351 4.37328 0.0604351 4.62655 0.216645 4.78276C0.372855 4.93897 0.626121 4.93897 0.78233 4.78276L2.09949 3.4656L2.09949 11.5342L0.78233 10.2171C0.62612 10.0609 0.372854 10.0609 0.216645 10.2171C0.0604349 10.3733 0.0604349 10.6265 0.216645 10.7828L2.21664 12.7828C2.29166 12.8578 2.3934 12.8999 2.49949 12.8999C2.60557 12.8999 2.70731 12.8578 2.78233 12.7828L4.78233 10.7828C4.93854 10.6265 4.93854 10.3733 4.78233 10.2171C4.62612 10.0609 4.37285 10.0609 4.21664 10.2171L2.89949 11.5342L2.89949 3.4656L4.21664 4.78276C4.37285 4.93897 4.62612 4.93897 4.78233 4.78276C4.93854 4.62655 4.93854 4.37328 4.78233 4.21707L2.78233 2.21707ZM10.5 2.74997C10.7107 2.74997 10.8988 2.88211 10.9703 3.08036L13.9703 11.3999C14.064 11.6597 13.9293 11.9462 13.6696 12.0399C13.4098 12.1336 13.1233 11.9989 13.0296 11.7392L12.0477 9.016H8.95228L7.97033 11.7392C7.87666 11.9989 7.59013 12.1336 7.33036 12.0399C7.07059 11.9462 6.93595 11.6597 7.02962 11.3999L10.0296 3.08036C10.1011 2.88211 10.2892 2.74997 10.5 2.74997ZM10.5 4.72396L11.7412 8.166H9.25879L10.5 4.72396Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2i = [\"color\"];\nvar FontStyleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2i);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.03791 9.98075C0.934777 9.6583 1.11603 9.37719 1.40005 9.24871C1.68408 9.12022 2.09463 9.13412 2.27071 9.45426C2.85393 10.5147 3.64599 10.7282 4.48665 10.7282C5.52721 10.7282 6.29659 10.2615 6.29659 9.45426C6.29659 8.8047 5.9119 8.46416 4.87134 8.14253L4.15872 7.92181C2.64518 7.44883 1.88842 6.69206 1.88842 5.45601C1.88842 3.79743 3.27583 2.6875 5.24342 2.6875C6.91733 2.6875 7.97409 3.33536 8.43833 4.31065C8.57087 4.58909 8.57614 4.91294 8.22794 5.19114C7.87974 5.46934 7.52351 5.34799 7.23327 5.03839C6.47215 4.22653 5.99545 4.04968 5.25604 4.04968C4.1398 4.04968 3.547 4.63618 3.547 5.27943C3.547 5.86592 3.96322 6.23169 4.94702 6.5344L5.67856 6.76143C7.22994 7.23441 7.97409 7.95964 7.97409 9.17047C7.97409 10.7723 6.69389 12.0903 4.46143 12.0903C2.86612 12.0903 1.40005 11.1131 1.03791 9.98075ZM11.8491 8.77985C10.661 8.39543 10.1649 7.86114 10.1649 6.98805C10.1649 5.86736 11.1636 5.04639 12.6128 5.04639C13.8546 5.04639 14.6629 5.63345 14.9778 6.6346C15.0443 6.84599 14.9593 6.98006 14.7475 7.0491C14.5394 7.11697 14.3176 7.09974 14.238 6.89611C13.9356 6.12273 13.352 5.76311 12.5998 5.76311C11.6467 5.76311 11.0135 6.25178 11.0135 6.91638C11.0135 7.45066 11.3464 7.75038 12.2473 8.04358L12.8348 8.23254C14.062 8.62999 14.5516 9.13821 14.5516 10.0178C14.5516 11.1972 13.481 12.0442 11.9927 12.0442C10.6439 12.0442 9.65644 11.2809 9.41979 10.3361C9.36535 10.1188 9.41192 10.0287 9.70039 9.96184C9.98886 9.89499 10.0714 9.89918 10.1715 10.1369C10.4555 10.8114 11.1531 11.3275 12.0318 11.3275C12.9914 11.3275 13.6834 10.7802 13.6834 10.0634C13.6834 9.53567 13.3961 9.28807 12.4366 8.97532L11.8491 8.77985Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2j = [\"color\"];\nvar FrameIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2j);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11 1.5C11 1.22386 10.7761 1 10.5 1C10.2239 1 10 1.22386 10 1.5V4H5V1.5C5 1.22386 4.77614 1 4.5 1C4.22386 1 4 1.22386 4 1.5V4H1.5C1.22386 4 1 4.22386 1 4.5C1 4.77614 1.22386 5 1.5 5H4V10H1.5C1.22386 10 1 10.2239 1 10.5C1 10.7761 1.22386 11 1.5 11H4V13.5C4 13.7761 4.22386 14 4.5 14C4.77614 14 5 13.7761 5 13.5V11H10V13.5C10 13.7761 10.2239 14 10.5 14C10.7761 14 11 13.7761 11 13.5V11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H11V5H13.5C13.7761 5 14 4.77614 14 4.5C14 4.22386 13.7761 4 13.5 4H11V1.5ZM10 10V5H5V10H10Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2k = [\"color\"];\nvar FramerLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2k);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.3825 1.29567C3.46241 1.11432 3.64188 0.997284 3.84005 0.997284H11.5C11.7761 0.997284 12 1.22114 12 1.49728V5.5C12 5.77614 11.7761 6 11.5 6H8.63521L11.5288 9.16247C11.6626 9.3087 11.6974 9.52015 11.6175 9.70154C11.5376 9.88293 11.3582 10 11.16 10H8V13.5C8 13.7022 7.87818 13.8845 7.69134 13.9619C7.5045 14.0393 7.28945 13.9966 7.14645 13.8536L3.14645 9.85355C3.05268 9.75979 3 9.63261 3 9.5V5.5C3 5.22386 3.22386 5 3.5 5H6.36531L3.47105 1.83468C3.33732 1.68844 3.30259 1.47701 3.3825 1.29567ZM7.72032 5L4.97474 1.99728H11V5H7.72032ZM7.27978 6H4V9H7.5H10.0247L7.27978 6ZM4.70711 10L7 12.2929V10H4.70711Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2l = [\"color\"];\nvar GearIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2l);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.07095 0.650238C6.67391 0.650238 6.32977 0.925096 6.24198 1.31231L6.0039 2.36247C5.6249 2.47269 5.26335 2.62363 4.92436 2.81013L4.01335 2.23585C3.67748 2.02413 3.23978 2.07312 2.95903 2.35386L2.35294 2.95996C2.0722 3.2407 2.0232 3.6784 2.23493 4.01427L2.80942 4.92561C2.62307 5.2645 2.47227 5.62594 2.36216 6.00481L1.31209 6.24287C0.924883 6.33065 0.650024 6.6748 0.650024 7.07183V7.92897C0.650024 8.32601 0.924883 8.67015 1.31209 8.75794L2.36228 8.99603C2.47246 9.375 2.62335 9.73652 2.80979 10.0755L2.2354 10.9867C2.02367 11.3225 2.07267 11.7602 2.35341 12.041L2.95951 12.6471C3.24025 12.9278 3.67795 12.9768 4.01382 12.7651L4.92506 12.1907C5.26384 12.377 5.62516 12.5278 6.0039 12.6379L6.24198 13.6881C6.32977 14.0753 6.67391 14.3502 7.07095 14.3502H7.92809C8.32512 14.3502 8.66927 14.0753 8.75705 13.6881L8.99505 12.6383C9.37411 12.5282 9.73573 12.3773 10.0748 12.1909L10.986 12.7653C11.3218 12.977 11.7595 12.928 12.0403 12.6473L12.6464 12.0412C12.9271 11.7604 12.9761 11.3227 12.7644 10.9869L12.1902 10.076C12.3768 9.73688 12.5278 9.37515 12.638 8.99596L13.6879 8.75794C14.0751 8.67015 14.35 8.32601 14.35 7.92897V7.07183C14.35 6.6748 14.0751 6.33065 13.6879 6.24287L12.6381 6.00488C12.528 5.62578 12.3771 5.26414 12.1906 4.92507L12.7648 4.01407C12.9766 3.6782 12.9276 3.2405 12.6468 2.95975L12.0407 2.35366C11.76 2.07292 11.3223 2.02392 10.9864 2.23565L10.0755 2.80989C9.73622 2.62328 9.37437 2.47229 8.99505 2.36209L8.75705 1.31231C8.66927 0.925096 8.32512 0.650238 7.92809 0.650238H7.07095ZM4.92053 3.81251C5.44724 3.44339 6.05665 3.18424 6.71543 3.06839L7.07095 1.50024H7.92809L8.28355 3.06816C8.94267 3.18387 9.5524 3.44302 10.0794 3.81224L11.4397 2.9547L12.0458 3.56079L11.1882 4.92117C11.5573 5.44798 11.8164 6.0575 11.9321 6.71638L13.5 7.07183V7.92897L11.932 8.28444C11.8162 8.94342 11.557 9.55301 11.1878 10.0798L12.0453 11.4402L11.4392 12.0462L10.0787 11.1886C9.55192 11.5576 8.94241 11.8166 8.28355 11.9323L7.92809 13.5002H7.07095L6.71543 11.932C6.0569 11.8162 5.44772 11.5572 4.92116 11.1883L3.56055 12.046L2.95445 11.4399L3.81213 10.0794C3.4431 9.55266 3.18403 8.94326 3.06825 8.2845L1.50002 7.92897V7.07183L3.06818 6.71632C3.18388 6.05765 3.44283 5.44833 3.81171 4.92165L2.95398 3.561L3.56008 2.95491L4.92053 3.81251ZM9.02496 7.50008C9.02496 8.34226 8.34223 9.02499 7.50005 9.02499C6.65786 9.02499 5.97513 8.34226 5.97513 7.50008C5.97513 6.65789 6.65786 5.97516 7.50005 5.97516C8.34223 5.97516 9.02496 6.65789 9.02496 7.50008ZM9.92496 7.50008C9.92496 8.83932 8.83929 9.92499 7.50005 9.92499C6.1608 9.92499 5.07513 8.83932 5.07513 7.50008C5.07513 6.16084 6.1608 5.07516 7.50005 5.07516C8.83929 5.07516 9.92496 6.16084 9.92496 7.50008Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2m = [\"color\"];\nvar GitHubLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2m);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49933 0.25C3.49635 0.25 0.25 3.49593 0.25 7.50024C0.25 10.703 2.32715 13.4206 5.2081 14.3797C5.57084 14.446 5.70302 14.2222 5.70302 14.0299C5.70302 13.8576 5.69679 13.4019 5.69323 12.797C3.67661 13.235 3.25112 11.825 3.25112 11.825C2.92132 10.9874 2.44599 10.7644 2.44599 10.7644C1.78773 10.3149 2.49584 10.3238 2.49584 10.3238C3.22353 10.375 3.60629 11.0711 3.60629 11.0711C4.25298 12.1788 5.30335 11.8588 5.71638 11.6732C5.78225 11.205 5.96962 10.8854 6.17658 10.7043C4.56675 10.5209 2.87415 9.89918 2.87415 7.12104C2.87415 6.32925 3.15677 5.68257 3.62053 5.17563C3.54576 4.99226 3.29697 4.25521 3.69174 3.25691C3.69174 3.25691 4.30015 3.06196 5.68522 3.99973C6.26337 3.83906 6.8838 3.75895 7.50022 3.75583C8.1162 3.75895 8.73619 3.83906 9.31523 3.99973C10.6994 3.06196 11.3069 3.25691 11.3069 3.25691C11.7026 4.25521 11.4538 4.99226 11.3795 5.17563C11.8441 5.68257 12.1245 6.32925 12.1245 7.12104C12.1245 9.9063 10.4292 10.5192 8.81452 10.6985C9.07444 10.9224 9.30633 11.3648 9.30633 12.0413C9.30633 13.0102 9.29742 13.7922 9.29742 14.0299C9.29742 14.2239 9.42828 14.4496 9.79591 14.3788C12.6746 13.4179 14.75 10.7025 14.75 7.50024C14.75 3.49593 11.5036 0.25 7.49933 0.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2n = [\"color\"];\nvar GlobeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2n);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49996 1.80002C4.35194 1.80002 1.79996 4.352 1.79996 7.50002C1.79996 10.648 4.35194 13.2 7.49996 13.2C10.648 13.2 13.2 10.648 13.2 7.50002C13.2 4.352 10.648 1.80002 7.49996 1.80002ZM0.899963 7.50002C0.899963 3.85494 3.85488 0.900024 7.49996 0.900024C11.145 0.900024 14.1 3.85494 14.1 7.50002C14.1 11.1451 11.145 14.1 7.49996 14.1C3.85488 14.1 0.899963 11.1451 0.899963 7.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M13.4999 7.89998H1.49994V7.09998H13.4999V7.89998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M7.09991 13.5V1.5H7.89991V13.5H7.09991zM10.375 7.49998C10.375 5.32724 9.59364 3.17778 8.06183 1.75656L8.53793 1.24341C10.2396 2.82218 11.075 5.17273 11.075 7.49998 11.075 9.82724 10.2396 12.1778 8.53793 13.7566L8.06183 13.2434C9.59364 11.8222 10.375 9.67273 10.375 7.49998zM3.99969 7.5C3.99969 5.17611 4.80786 2.82678 6.45768 1.24719L6.94177 1.75281C5.4582 3.17323 4.69969 5.32389 4.69969 7.5 4.6997 9.67611 5.45822 11.8268 6.94179 13.2472L6.45769 13.7528C4.80788 12.1732 3.9997 9.8239 3.99969 7.5z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M7.49996 3.95801C9.66928 3.95801 11.8753 4.35915 13.3706 5.19448 13.5394 5.28875 13.5998 5.50197 13.5055 5.67073 13.4113 5.83948 13.198 5.89987 13.0293 5.8056 11.6794 5.05155 9.60799 4.65801 7.49996 4.65801 5.39192 4.65801 3.32052 5.05155 1.97064 5.8056 1.80188 5.89987 1.58866 5.83948 1.49439 5.67073 1.40013 5.50197 1.46051 5.28875 1.62927 5.19448 3.12466 4.35915 5.33063 3.95801 7.49996 3.95801zM7.49996 10.85C9.66928 10.85 11.8753 10.4488 13.3706 9.6135 13.5394 9.51924 13.5998 9.30601 13.5055 9.13726 13.4113 8.9685 13.198 8.90812 13.0293 9.00238 11.6794 9.75643 9.60799 10.15 7.49996 10.15 5.39192 10.15 3.32052 9.75643 1.97064 9.00239 1.80188 8.90812 1.58866 8.9685 1.49439 9.13726 1.40013 9.30601 1.46051 9.51924 1.62927 9.6135 3.12466 10.4488 5.33063 10.85 7.49996 10.85z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2o = [\"color\"];\nvar GridIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2o);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.5 2H8V7H13V2.5C13 2.22386 12.7761 2 12.5 2ZM13 8H8V13H12.5C12.7761 13 13 12.7761 13 12.5V8ZM7 7V2H2.5C2.22386 2 2 2.22386 2 2.5V7H7ZM2 8V12.5C2 12.7761 2.22386 13 2.5 13H7V8H2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2p = [\"color\"];\nvar GroupIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2p);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.44995 0.949951C1.31734 0.949951 1.19016 1.00263 1.0964 1.0964C1.00263 1.19017 0.949951 1.31735 0.949951 1.44995L0.949966 3.44995C0.949969 3.7261 1.17383 3.94995 1.44997 3.94995C1.72611 3.94995 1.94997 3.72609 1.94997 3.44995L1.94995 1.94995H3.44997C3.72611 1.94995 3.94997 1.72609 3.94997 1.44995C3.94997 1.17381 3.72611 0.949951 3.44997 0.949951H1.44995ZM5.94995 0.949951C5.67381 0.949951 5.44995 1.17381 5.44995 1.44995C5.44995 1.72609 5.67381 1.94995 5.94995 1.94995H8.94995C9.22609 1.94995 9.44995 1.72609 9.44995 1.44995C9.44995 1.17381 9.22609 0.949951 8.94995 0.949951H5.94995ZM5.44995 13.45C5.44995 13.1738 5.67381 12.95 5.94995 12.95H8.94995C9.22609 12.95 9.44995 13.1738 9.44995 13.45C9.44995 13.7261 9.22609 13.95 8.94995 13.95H5.94995C5.67381 13.95 5.44995 13.7261 5.44995 13.45ZM1.94995 5.94995C1.94995 5.67381 1.72609 5.44995 1.44995 5.44995C1.17381 5.44995 0.949951 5.67381 0.949951 5.94995V8.94995C0.949951 9.22609 1.17381 9.44995 1.44995 9.44995C1.72609 9.44995 1.94995 9.22609 1.94995 8.94995V5.94995ZM13.45 5.44995C13.7261 5.44995 13.95 5.67381 13.95 5.94995V8.94995C13.95 9.22609 13.7261 9.44995 13.45 9.44995C13.1738 9.44995 12.95 9.22609 12.95 8.94995V5.94995C12.95 5.67381 13.1738 5.44995 13.45 5.44995ZM11.45 0.949951C11.1738 0.949951 10.95 1.17381 10.95 1.44995C10.95 1.72609 11.1738 1.94995 11.45 1.94995H12.9499V3.44995C12.9499 3.72609 13.1738 3.94995 13.4499 3.94995C13.7261 3.94995 13.9499 3.72609 13.9499 3.44995V1.44995C13.9499 1.17381 13.7252 0.949951 13.449 0.949951H11.45ZM1.44995 10.95C1.72609 10.95 1.94995 11.1738 1.94995 11.45V12.95H3.44997C3.72611 12.95 3.94997 13.1738 3.94997 13.45C3.94997 13.7261 3.72611 13.95 3.44997 13.95H1.44995C1.17381 13.95 0.949951 13.7261 0.949951 13.45V11.45C0.949951 11.1738 1.17381 10.95 1.44995 10.95ZM13.95 11.45C13.95 11.1738 13.7261 10.95 13.45 10.95C13.1738 10.9499 12.95 11.1738 12.95 11.4499L12.9491 12.95H11.45C11.1738 12.95 10.95 13.1738 10.95 13.45C10.95 13.7261 11.1738 13.95 11.45 13.95H13.4499C13.7261 13.95 13.9499 13.7261 13.9499 13.45L13.95 11.45Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2q = [\"color\"];\nvar Half1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM7.00003 1.84861C4.10114 2.1017 1.82707 4.53515 1.82707 7.49972C1.82707 10.4643 4.10114 12.8977 7.00003 13.1508V1.84861ZM8.00003 13.1508C10.8988 12.8976 13.1727 10.4642 13.1727 7.49972C13.1727 4.53524 10.8988 2.10185 8.00003 1.84864V13.1508Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2r = [\"color\"];\nvar Half2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2r);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM7.49988 1.82689C4.36688 1.8269 1.82707 4.36672 1.82707 7.49972C1.82707 10.6327 4.36688 13.1725 7.49988 13.1726V1.82689Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2s = [\"color\"];\nvar HamburgerMenuIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2s);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11H13.5C13.7761 11 14 11.2239 14 11.5C14 11.7761 13.7761 12 13.5 12H1.5C1.22386 12 1 11.7761 1 11.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2t = [\"color\"];\nvar HandIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2t);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.8113 1.64706C6.62188 2.87918 6.68268 3.88523 6.76848 5.30499C6.78415 5.56426 6.80065 5.83732 6.81661 6.12808C6.83111 6.39208 6.63758 6.62172 6.37495 6.65217C6.11232 6.68262 5.87138 6.50334 5.82509 6.24304L5.74754 5.80698C5.64402 5.16529 5.48355 4.25481 5.17807 3.44741C4.86241 2.61312 4.4486 2.04121 3.93436 1.86044C3.64994 1.76104 3.41901 1.84279 3.25868 2.01052C3.08746 2.18962 2.9976 2.47065 3.0627 2.75399C3.2146 3.34424 3.44627 3.9167 3.69836 4.51802C3.72082 4.57158 3.74346 4.62543 3.76621 4.67954C3.9954 5.22457 4.23619 5.7972 4.41644 6.39081L4.41691 6.39238C4.562 6.87586 4.65646 7.2595 4.73086 7.56165C4.76034 7.68138 4.78667 7.78831 4.81175 7.88359C4.86768 8.09606 4.77836 8.32014 4.59161 8.43588C4.40486 8.55161 4.16445 8.53188 3.99907 8.38725C3.73749 8.15848 3.515 7.92784 3.31817 7.71802C3.27627 7.67335 3.23602 7.63018 3.19705 7.58838C3.04777 7.42826 2.91712 7.28812 2.78334 7.16029C2.45989 6.85122 2.18398 6.68004 1.80585 6.64369L1.80324 6.64343C1.56117 6.61888 1.41402 6.66441 1.31756 6.72627C1.21899 6.78947 1.11988 6.90414 1.03784 7.1123C0.976576 7.28492 1.01515 7.62987 1.1929 7.96911L1.19728 7.97747C1.40086 8.38452 1.74475 8.81587 2.18141 9.29299C2.39739 9.52898 2.62872 9.76849 2.86934 10.0174L2.87966 10.0281C3.11546 10.2721 3.35962 10.5247 3.59713 10.7827C4.4288 11.6863 5.27706 12.7538 5.4627 14H11.5087C11.5636 12.4353 11.8756 11.268 12.2875 10.1346C12.4454 9.70041 12.6121 9.28412 12.7826 8.85829C13.1097 8.04139 13.4509 7.18937 13.7705 6.10824C14.0989 4.99737 14.0097 4.37033 13.8613 4.03984C13.717 3.71858 13.4914 3.61786 13.3816 3.59606C13.1381 3.54774 13.0384 3.60947 12.9698 3.67901C12.867 3.78316 12.7698 3.98273 12.6921 4.30269C12.6166 4.61345 12.5752 4.96517 12.533 5.32501L12.5298 5.35285C12.4924 5.67242 12.4505 6.03016 12.3665 6.30098C12.3383 6.40699 12.2819 6.50407 12.1979 6.57539C12.1382 6.6261 12.0104 6.70818 11.8309 6.69312C11.5424 6.66891 11.3712 6.42143 11.365 6.14783C11.356 5.75454 11.3883 5.35864 11.4074 4.96608C11.4428 4.23646 11.477 3.5337 11.4245 2.8342L11.4242 2.82934C11.3916 2.32997 11.0493 2.00228 10.7007 1.9228C10.5305 1.88401 10.369 1.90601 10.2347 1.9835C10.103 2.05946 9.95535 2.21318 9.8574 2.51394L9.85631 2.51726C9.81525 2.6404 9.77298 2.87753 9.73606 3.2124C9.70044 3.53542 9.67337 3.91279 9.65156 4.29418C9.6329 4.62033 9.61785 4.9584 9.60434 5.26194C9.58728 5.64529 9.57267 5.97357 9.55633 6.1532C9.54983 6.22459 9.52939 6.29493 9.49501 6.35785C9.47356 6.39711 9.36115 6.60947 9.07106 6.61843C8.77917 6.62744 8.63975 6.40057 8.61698 6.35919C8.55634 6.24899 8.55066 6.11807 8.54754 5.99283C8.54474 5.88064 8.54294 5.71798 8.54174 5.54767C8.53935 5.20582 8.53935 4.81919 8.53935 4.70952C8.53935 3.6657 8.53838 2.65372 8.44714 1.64372C8.39183 1.24127 8.06278 1.00455 7.6436 1.00005C7.22399 0.995552 6.87918 1.22704 6.8113 1.64706ZM9.41219 1.3617C9.21469 0.448484 8.39913 0.00810324 7.65433 0.00011154C6.86452 -0.00836308 5.98761 0.465881 5.82365 1.49037L5.82318 1.49334C5.78239 1.7584 5.75229 2.01481 5.7309 2.26652C5.39423 1.67364 4.92622 1.14894 4.2655 0.916859C3.58661 0.679312 2.9492 0.887087 2.53582 1.31952C2.13415 1.73971 1.94438 2.36742 2.09031 2.98746L2.09269 2.99713C2.26478 3.66808 2.52396 4.30316 2.77613 4.90465C2.79814 4.95717 2.8201 5.00941 2.84194 5.06139C3.02139 5.48842 3.19378 5.89866 3.33871 6.31256C2.96404 5.98142 2.51925 5.70796 1.90276 5.6484C1.48865 5.60663 1.10391 5.67536 0.777805 5.88444C0.454239 6.0919 0.240671 6.40405 0.104187 6.75406L0.100868 6.76281C-0.10184 7.31286 0.0663312 7.97157 0.304895 8.42897C0.573704 8.96474 0.996104 9.47904 1.44372 9.96813C1.67046 10.2159 1.91136 10.4652 2.15033 10.7124L2.15682 10.7191C2.39524 10.9658 2.63217 11.2109 2.86134 11.4599C3.80937 12.49 4.50002 13.4632 4.50002 14.5C4.50002 14.7761 4.72388 15 5.00002 15H12C12.2762 15 12.5 14.7761 12.5 14.5C12.5 12.8212 12.8021 11.6462 13.2274 10.4762C13.3653 10.0968 13.5216 9.70579 13.6868 9.29247C14.0238 8.44922 14.398 7.51298 14.7295 6.39175C15.0956 5.15324 15.0559 4.25904 14.7735 3.63017C14.487 2.99208 13.9798 2.6953 13.5763 2.6152C13.1276 2.52614 12.7367 2.60475 12.4268 2.83081C12.4253 2.80773 12.4236 2.78468 12.4219 2.76167C12.3587 1.8105 11.6907 1.12285 10.923 0.947821C10.5346 0.859287 10.1111 0.900393 9.73509 1.11724C9.61852 1.18446 9.51055 1.26623 9.41219 1.3617Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2u = [\"color\"];\nvar HeadingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2u);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.75432 2.0502C8.50579 2.0502 8.30432 2.25167 8.30432 2.5002C8.30432 2.74873 8.50579 2.9502 8.75432 2.9502H9.94997V7.05004H5.04997V2.9502H6.25432C6.50285 2.9502 6.70432 2.74873 6.70432 2.5002C6.70432 2.25167 6.50285 2.0502 6.25432 2.0502H2.75432C2.50579 2.0502 2.30432 2.25167 2.30432 2.5002C2.30432 2.74873 2.50579 2.9502 2.75432 2.9502H3.94997V12.0502H2.75432C2.50579 12.0502 2.30432 12.2517 2.30432 12.5002C2.30432 12.7487 2.50579 12.9502 2.75432 12.9502H6.25432C6.50285 12.9502 6.70432 12.7487 6.70432 12.5002C6.70432 12.2517 6.50285 12.0502 6.25432 12.0502H5.04997V7.95004H9.94997V12.0502H8.75432C8.50579 12.0502 8.30432 12.2517 8.30432 12.5002C8.30432 12.7487 8.50579 12.9502 8.75432 12.9502H12.2543C12.5028 12.9502 12.7043 12.7487 12.7043 12.5002C12.7043 12.2517 12.5028 12.0502 12.2543 12.0502H11.05V2.9502H12.2543C12.5028 2.9502 12.7043 2.74873 12.7043 2.5002C12.7043 2.25167 12.5028 2.0502 12.2543 2.0502H8.75432Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2v = [\"color\"];\nvar HeartIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2v);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.89346 2.35248C3.49195 2.35248 2.35248 3.49359 2.35248 4.90532C2.35248 6.38164 3.20954 7.9168 4.37255 9.33522C5.39396 10.581 6.59464 11.6702 7.50002 12.4778C8.4054 11.6702 9.60608 10.581 10.6275 9.33522C11.7905 7.9168 12.6476 6.38164 12.6476 4.90532C12.6476 3.49359 11.5081 2.35248 10.1066 2.35248C9.27059 2.35248 8.81894 2.64323 8.5397 2.95843C8.27877 3.25295 8.14623 3.58566 8.02501 3.88993C8.00391 3.9429 7.98315 3.99501 7.96211 4.04591C7.88482 4.23294 7.7024 4.35494 7.50002 4.35494C7.29765 4.35494 7.11523 4.23295 7.03793 4.04592C7.01689 3.99501 6.99612 3.94289 6.97502 3.8899C6.8538 3.58564 6.72126 3.25294 6.46034 2.95843C6.18109 2.64323 5.72945 2.35248 4.89346 2.35248ZM1.35248 4.90532C1.35248 2.94498 2.936 1.35248 4.89346 1.35248C6.0084 1.35248 6.73504 1.76049 7.20884 2.2953C7.32062 2.42147 7.41686 2.55382 7.50002 2.68545C7.58318 2.55382 7.67941 2.42147 7.79119 2.2953C8.265 1.76049 8.99164 1.35248 10.1066 1.35248C12.064 1.35248 13.6476 2.94498 13.6476 4.90532C13.6476 6.74041 12.6013 8.50508 11.4008 9.96927C10.2636 11.3562 8.92194 12.5508 8.00601 13.3664C7.94645 13.4194 7.88869 13.4709 7.83291 13.5206C7.64324 13.6899 7.3568 13.6899 7.16713 13.5206C7.11135 13.4709 7.05359 13.4194 6.99403 13.3664C6.0781 12.5508 4.73641 11.3562 3.59926 9.96927C2.39872 8.50508 1.35248 6.74041 1.35248 4.90532Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2w = [\"color\"];\nvar HeartFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2w);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.35248 4.90532C1.35248 2.94498 2.936 1.35248 4.89346 1.35248C6.25769 1.35248 6.86058 1.92336 7.50002 2.93545C8.13946 1.92336 8.74235 1.35248 10.1066 1.35248C12.064 1.35248 13.6476 2.94498 13.6476 4.90532C13.6476 6.74041 12.6013 8.50508 11.4008 9.96927C10.2636 11.3562 8.92194 12.5508 8.00601 13.3664C7.94645 13.4194 7.88869 13.4709 7.83291 13.5206C7.64324 13.6899 7.3568 13.6899 7.16713 13.5206C7.11135 13.4709 7.05359 13.4194 6.99403 13.3664C6.0781 12.5508 4.73641 11.3562 3.59926 9.96927C2.39872 8.50508 1.35248 6.74041 1.35248 4.90532Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2x = [\"color\"];\nvar HeightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2x);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.1813 1.68179C7.35704 1.50605 7.64196 1.50605 7.8177 1.68179L10.3177 4.18179C10.4934 4.35753 10.4934 4.64245 10.3177 4.81819C10.142 4.99392 9.85704 4.99392 9.6813 4.81819L7.9495 3.08638L7.9495 11.9136L9.6813 10.1818C9.85704 10.0061 10.142 10.0061 10.3177 10.1818C10.4934 10.3575 10.4934 10.6424 10.3177 10.8182L7.8177 13.3182C7.73331 13.4026 7.61885 13.45 7.4995 13.45C7.38015 13.45 7.26569 13.4026 7.1813 13.3182L4.6813 10.8182C4.50557 10.6424 4.50557 10.3575 4.6813 10.1818C4.85704 10.0061 5.14196 10.0061 5.3177 10.1818L7.0495 11.9136L7.0495 3.08638L5.3177 4.81819C5.14196 4.99392 4.85704 4.99392 4.6813 4.81819C4.50557 4.64245 4.50557 4.35753 4.6813 4.18179L7.1813 1.68179Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2y = [\"color\"];\nvar HobbyKnifeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.3536 13.3536C12.1583 13.5488 11.8417 13.5488 11.6465 13.3536L6.39645 8.10355C6.36478 8.07188 6.33824 8.03702 6.31685 8H5.00002C4.78719 8 4.59769 7.86528 4.52777 7.66426L2.12777 0.764277C2.05268 0.548387 2.13355 0.309061 2.3242 0.182972C2.51486 0.0568819 2.76674 0.0761337 2.93602 0.229734L8.336 5.12972C8.44044 5.22449 8.50001 5.35897 8.50001 5.5V5.81684C8.53702 5.83824 8.57189 5.86478 8.60356 5.89645L13.8536 11.1464C14.0488 11.3417 14.0488 11.6583 13.8536 11.8536L12.3536 13.3536ZM8.25 6.95711L7.45711 7.75L12 12.2929L12.7929 11.5L8.25 6.95711ZM3.71669 2.28845L5.35549 7H6.2929L7.50001 5.79289V5.72146L3.71669 2.28845Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2z = [\"color\"];\nvar HomeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.07926 0.222253C7.31275 -0.007434 7.6873 -0.007434 7.92079 0.222253L14.6708 6.86227C14.907 7.09465 14.9101 7.47453 14.6778 7.71076C14.4454 7.947 14.0655 7.95012 13.8293 7.71773L13 6.90201V12.5C13 12.7761 12.7762 13 12.5 13H2.50002C2.22388 13 2.00002 12.7761 2.00002 12.5V6.90201L1.17079 7.71773C0.934558 7.95012 0.554672 7.947 0.32229 7.71076C0.0899079 7.47453 0.0930283 7.09465 0.32926 6.86227L7.07926 0.222253ZM7.50002 1.49163L12 5.91831V12H10V8.49999C10 8.22385 9.77617 7.99999 9.50002 7.99999H6.50002C6.22388 7.99999 6.00002 8.22385 6.00002 8.49999V12H3.00002V5.91831L7.50002 1.49163ZM7.00002 12H9.00002V8.99999H7.00002V12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2A = [\"color\"];\nvar IconJarLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2A);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 0.0032959C6.80473 0.0032959 6.24953 0.281106 6.25 0.749995C6.25 0.997258 6.42446 1.12014 6.57687 1.22749C6.69507 1.31074 6.8 1.38465 6.8 1.5C6.8 1.7071 6.06224 1.74264 5.19789 1.78427C3.97553 1.84314 2.5 1.91421 2.5 2.5C2.5 2.77614 2.72386 3 3 3H12C12.2761 3 12.5 2.77614 12.5 2.5C12.5 1.91421 11.0245 1.84314 9.80211 1.78427C8.93776 1.74264 8.2 1.7071 8.2 1.5C8.2 1.38465 8.30493 1.31074 8.42313 1.22749C8.57554 1.12014 8.75 0.997258 8.75 0.749995C8.75047 0.281106 8.19527 0.0032959 7.5 0.0032959ZM2.89451 6.12266C2.25806 6.52471 1.90417 7.31118 2.02473 8.0556L2.83588 12.4772C3.00993 13.3562 3.7629 14 4.66061 14H10.3373C11.2354 14 11.9884 13.3562 12.1625 12.4772L12.9736 8.05607C13.089 7.32358 12.8284 6.53276 12.1331 6.09373C11.7283 5.83013 11.6412 5.33231 12.1331 5.12796C12.8284 4.86435 12.6948 4 12 4H10.3001H6.80005H2.99996C2.30469 4 2.19878 4.89328 2.89451 5.15689C3.38642 5.33231 3.29939 5.83013 2.89451 6.12266ZM8.20006 6.25C8.20006 5.81769 8.08572 5.37615 7.90635 5L4.11093 5C4.20626 5.21312 4.2419 5.43889 4.22904 5.65521C4.19522 6.22412 3.84587 6.66899 3.48016 6.93322L3.45492 6.95146L3.42858 6.9681C3.13407 7.15414 2.95801 7.53989 3.01058 7.88749L3.81797 12.2886C3.90513 12.7154 4.26148 13 4.66061 13H10.3373C10.737 13 11.0932 12.7153 11.1804 12.2886L11.9874 7.8898C12.048 7.48247 11.8954 7.12631 11.5992 6.93927L11.5875 6.93184L11.5875 6.93176C11.1947 6.67602 10.8331 6.22785 10.7986 5.64798C10.7846 5.412 10.8264 5.19397 10.9112 5H9.05517C9.01987 5.14611 9.00006 5.31201 9.00006 5.5C9.00006 5.9745 9.21679 6.37127 9.44367 6.78662C9.69284 7.24278 9.95425 7.72136 9.95425 8.34993C9.95425 9.2698 9.49868 9.84205 8.62189 9.84205C8.13206 9.84205 7.57818 9.46097 7.57818 8.75781C7.57818 8.35279 7.71558 8.01646 7.86121 7.65998C8.0254 7.25806 8.20006 6.83051 8.20006 6.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2B = [\"color\"];\nvar IdCardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2B);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14 11.0001V4.00006L1 4.00006L1 11.0001H14ZM15 4.00006V11.0001C15 11.5523 14.5523 12.0001 14 12.0001H1C0.447715 12.0001 0 11.5523 0 11.0001V4.00006C0 3.44778 0.447715 3.00006 1 3.00006H14C14.5523 3.00006 15 3.44778 15 4.00006ZM2 5.25C2 5.11193 2.11193 5 2.25 5H5.75C5.88807 5 6 5.11193 6 5.25V9.75C6 9.88807 5.88807 10 5.75 10H2.25C2.11193 10 2 9.88807 2 9.75V5.25ZM7.5 7C7.22386 7 7 7.22386 7 7.5C7 7.77614 7.22386 8 7.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H7.5ZM7 9.5C7 9.22386 7.22386 9 7.5 9H12.5C12.7761 9 13 9.22386 13 9.5C13 9.77614 12.7761 10 12.5 10H7.5C7.22386 10 7 9.77614 7 9.5ZM7.5 5C7.22386 5 7 5.22386 7 5.5C7 5.77614 7.22386 6 7.5 6H11.5C11.7761 6 12 5.77614 12 5.5C12 5.22386 11.7761 5 11.5 5H7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2C = [\"color\"];\nvar ImageIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2C);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5C1 1.67157 1.67157 1 2.5 1ZM2.5 2C2.22386 2 2 2.22386 2 2.5V8.3636L3.6818 6.6818C3.76809 6.59551 3.88572 6.54797 4.00774 6.55007C4.12975 6.55216 4.24568 6.60372 4.32895 6.69293L7.87355 10.4901L10.6818 7.6818C10.8575 7.50607 11.1425 7.50607 11.3182 7.6818L13 9.3636V2.5C13 2.22386 12.7761 2 12.5 2H2.5ZM2 12.5V9.6364L3.98887 7.64753L7.5311 11.4421L8.94113 13H2.5C2.22386 13 2 12.7761 2 12.5ZM12.5 13H10.155L8.48336 11.153L11 8.6364L13 10.6364V12.5C13 12.7761 12.7761 13 12.5 13ZM6.64922 5.5C6.64922 5.03013 7.03013 4.64922 7.5 4.64922C7.96987 4.64922 8.35078 5.03013 8.35078 5.5C8.35078 5.96987 7.96987 6.35078 7.5 6.35078C7.03013 6.35078 6.64922 5.96987 6.64922 5.5ZM7.5 3.74922C6.53307 3.74922 5.74922 4.53307 5.74922 5.5C5.74922 6.46693 6.53307 7.25078 7.5 7.25078C8.46693 7.25078 9.25078 6.46693 9.25078 5.5C9.25078 4.53307 8.46693 3.74922 7.5 3.74922Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2D = [\"color\"];\nvar InfoCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2D);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2E = [\"color\"];\nvar InputIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2E);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.5 1C6.22386 1 6 1.22386 6 1.5C6 1.77614 6.22386 2 6.5 2C7.12671 2 7.45718 2.20028 7.65563 2.47812C7.8781 2.78957 8 3.28837 8 4V11C8 11.7116 7.8781 12.2104 7.65563 12.5219C7.45718 12.7997 7.12671 13 6.5 13C6.22386 13 6 13.2239 6 13.5C6 13.7761 6.22386 14 6.5 14C7.37329 14 8.04282 13.7003 8.46937 13.1031C8.47976 13.0886 8.48997 13.0739 8.5 13.0591C8.51003 13.0739 8.52024 13.0886 8.53063 13.1031C8.95718 13.7003 9.62671 14 10.5 14C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13C9.87329 13 9.54282 12.7997 9.34437 12.5219C9.1219 12.2104 9 11.7116 9 11V4C9 3.28837 9.1219 2.78957 9.34437 2.47812C9.54282 2.20028 9.87329 2 10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1C9.62671 1 8.95718 1.29972 8.53063 1.89688C8.52024 1.91143 8.51003 1.92611 8.5 1.9409C8.48997 1.92611 8.47976 1.91143 8.46937 1.89688C8.04282 1.29972 7.37329 1 6.5 1ZM14 5H11V4H14C14.5523 4 15 4.44772 15 5V10C15 10.5523 14.5523 11 14 11H11V10H14V5ZM6 4V5H1L1 10H6V11H1C0.447715 11 0 10.5523 0 10V5C0 4.44772 0.447715 4 1 4H6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2F = [\"color\"];\nvar InstagramLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2F);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12.9091 12.909C13.2365 12.5817 13.4918 12.1895 13.6588 11.7577C13.8195 11.3443 13.9294 10.8718 13.961 10.1799C13.9926 9.48665 14.0001 9.26529 14.0001 7.50001C14.0001 5.73473 13.9926 5.51328 13.961 4.82008C13.9294 4.12821 13.8195 3.65573 13.6588 3.24228C13.4956 2.80857 13.2398 2.41567 12.9091 2.091C12.5844 1.76028 12.1915 1.50437 11.7578 1.34113C11.3443 1.18056 10.8718 1.0707 10.1799 1.03924C9.48675 1.00748 9.26537 1 7.50006 1C5.73476 1 5.51333 1.00748 4.82014 1.03912C4.12826 1.0707 3.65578 1.18056 3.24233 1.34125C2.80862 1.50447 2.41573 1.76032 2.09105 2.09098C1.76032 2.41563 1.5044 2.80852 1.34113 3.24225C1.18056 3.65573 1.0707 4.12821 1.03924 4.82008C1.00748 5.51328 1 5.73471 1 7.50001C1 9.26532 1.00748 9.48675 1.03924 10.1799C1.07083 10.8718 1.18069 11.3443 1.34138 11.7577C1.5046 12.1915 1.76045 12.5843 2.09111 12.909C2.41578 13.2397 2.80867 13.4955 3.24238 13.6587C3.65586 13.8194 4.12834 13.9293 4.82019 13.9609C5.51348 13.9925 5.73483 14 7.50012 14C9.2654 14 9.48685 13.9925 10.18 13.9609C10.8719 13.9293 11.3444 13.8194 11.7578 13.6587C12.1896 13.4917 12.5818 13.2364 12.9091 12.909ZM1.99949 6.73496C1.99974 6.94524 2.00005 7.19543 2.00005 7.50002C2.00005 7.80461 1.99974 8.0548 1.99949 8.26507C1.99849 9.08596 1.99824 9.29856 2.01963 9.7655C2.04625 10.3509 2.07823 10.7811 2.17588 11.1053C2.26976 11.417 2.37505 11.7342 2.7188 12.1171C3.06255 12.4999 3.39411 12.6733 3.81645 12.8007C4.23879 12.928 4.7696 12.9554 5.23052 12.9764C5.75332 13.0003 5.96052 13.0002 7.05714 12.9999L7.50006 12.9999C7.79304 12.9999 8.03569 13.0001 8.2409 13.0004C9.08195 13.0013 9.29425 13.0015 9.76575 12.9799C10.3512 12.9533 10.7814 12.9213 11.1056 12.8237C11.4173 12.7298 11.7345 12.6245 12.1173 12.2807C12.5001 11.937 12.6735 11.6054 12.8009 11.1831C12.9283 10.7607 12.9557 10.2299 12.9767 9.76902C13.0005 9.24689 13.0004 9.04027 13.0002 7.94749V7.94738L13.0001 7.50039L13.0001 7.05747C13.0004 5.96085 13.0005 5.75365 12.9766 5.23085C12.9556 4.76993 12.9282 4.23912 12.8009 3.81678C12.6735 3.39445 12.5001 3.06288 12.1173 2.71913C11.7345 2.37538 11.4172 2.27009 11.1056 2.17621C10.7813 2.07856 10.3511 2.04658 9.76571 2.01996C9.29421 1.99836 9.08194 1.99859 8.24092 1.99951H8.24092C8.0357 1.99974 7.79305 2.00001 7.50006 2.00001L7.05704 1.99993C5.96051 1.99964 5.75331 1.99958 5.23052 2.02343C4.7696 2.04446 4.23879 2.07183 3.81645 2.19921C3.39411 2.32659 3.06255 2.49999 2.7188 2.88281C2.37505 3.26562 2.26976 3.58286 2.17588 3.89453C2.07823 4.21874 2.04625 4.64894 2.01963 5.23437C1.99824 5.70131 1.99849 5.91401 1.99949 6.73496ZM7.49996 5.25015C6.25741 5.25015 5.25012 6.25744 5.25012 7.49999C5.25012 8.74254 6.25741 9.74983 7.49996 9.74983C8.74251 9.74983 9.7498 8.74254 9.7498 7.49999C9.7498 6.25744 8.74251 5.25015 7.49996 5.25015ZM4.25012 7.49999C4.25012 5.70515 5.70512 4.25015 7.49996 4.25015C9.2948 4.25015 10.7498 5.70515 10.7498 7.49999C10.7498 9.29483 9.2948 10.7498 7.49996 10.7498C5.70512 10.7498 4.25012 9.29483 4.25012 7.49999ZM10.9697 4.7803C11.3839 4.7803 11.7197 4.44452 11.7197 4.0303C11.7197 3.61609 11.3839 3.2803 10.9697 3.2803C10.5555 3.2803 10.2197 3.61609 10.2197 4.0303C10.2197 4.44452 10.5555 4.7803 10.9697 4.7803Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$2G = [\"color\"];\nvar KeyboardIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2G);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M13.5 4H1.5C1.22386 4 1 4.22386 1 4.5V10.5C1 10.7761 1.22386 11 1.5 11H13.5C13.7761 11 14 10.7761 14 10.5V4.5C14 4.22386 13.7761 4 13.5 4ZM1.5 3C0.671573 3 0 3.67157 0 4.5V10.5C0 11.3284 0.671573 12 1.5 12H13.5C14.3284 12 15 11.3284 15 10.5V4.5C15 3.67157 14.3284 3 13.5 3H1.5ZM2 5H3V6H2V5ZM5 5H4V6H5V5ZM6 5H7V6H6V5ZM9 5H8V6H9V5ZM10 5H11V6H10V5ZM13 5H12V6H13V5ZM11 7H12V8H11V7ZM13 9H12V10H13V9ZM9 7H10V8H9V7ZM8 7H7V8H8V7ZM5 7H6V8H5V7ZM4 7H3V8H4V7ZM2 9H3V10H2V9ZM11 9H4V10H11V9Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$2H = [\"color\"];\nvar LapTimerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2H);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.49998 0.5C5.49998 0.223858 5.72383 0 5.99998 0H7.49998H8.99998C9.27612 0 9.49998 0.223858 9.49998 0.5C9.49998 0.776142 9.27612 1 8.99998 1H7.99998V2.11922C9.09832 2.20409 10.119 2.56622 10.992 3.13572C11.0116 3.10851 11.0336 3.08252 11.058 3.05806L12.058 2.05806C12.3021 1.81398 12.6978 1.81398 12.9419 2.05806C13.186 2.30214 13.186 2.69786 12.9419 2.94194L11.967 3.91682C13.1595 5.07925 13.9 6.70314 13.9 8.49998C13.9 12.0346 11.0346 14.9 7.49998 14.9C3.96535 14.9 1.09998 12.0346 1.09998 8.49998C1.09998 5.13361 3.69904 2.3743 6.99998 2.11922V1H5.99998C5.72383 1 5.49998 0.776142 5.49998 0.5ZM2.09998 8.49998C2.09998 5.51764 4.51764 3.09998 7.49998 3.09998C10.4823 3.09998 12.9 5.51764 12.9 8.49998C12.9 11.4823 10.4823 13.9 7.49998 13.9C4.51764 13.9 2.09998 11.4823 2.09998 8.49998ZM7.49998 8.49998V4.09998C5.06992 4.09998 3.09998 6.06992 3.09998 8.49998C3.09998 10.93 5.06992 12.9 7.49998 12.9C8.715 12.9 9.815 12.4075 10.6112 11.6112L7.49998 8.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2I = [\"color\"];\nvar LaptopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2I);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 4.25C2 4.11193 2.11193 4 2.25 4H12.75C12.8881 4 13 4.11193 13 4.25V11.5H2V4.25ZM2.25 3C1.55964 3 1 3.55964 1 4.25V12H0V12.5C0 12.7761 0.223858 13 0.5 13H14.5C14.7761 13 15 12.7761 15 12.5V12H14V4.25C14 3.55964 13.4404 3 12.75 3H2.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2J = [\"color\"];\nvar LayersIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2J);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.75432 0.819537C7.59742 0.726821 7.4025 0.726821 7.24559 0.819537L1.74559 4.06954C1.59336 4.15949 1.49996 4.32317 1.49996 4.5C1.49996 4.67683 1.59336 4.84051 1.74559 4.93046L7.24559 8.18046C7.4025 8.27318 7.59742 8.27318 7.75432 8.18046L13.2543 4.93046C13.4066 4.84051 13.5 4.67683 13.5 4.5C13.5 4.32317 13.4066 4.15949 13.2543 4.06954L7.75432 0.819537ZM7.49996 7.16923L2.9828 4.5L7.49996 1.83077L12.0171 4.5L7.49996 7.16923ZM1.5695 7.49564C1.70998 7.2579 2.01659 7.17906 2.25432 7.31954L7.49996 10.4192L12.7456 7.31954C12.9833 7.17906 13.2899 7.2579 13.4304 7.49564C13.5709 7.73337 13.4921 8.03998 13.2543 8.18046L7.75432 11.4305C7.59742 11.5232 7.4025 11.5232 7.24559 11.4305L1.74559 8.18046C1.50786 8.03998 1.42901 7.73337 1.5695 7.49564ZM1.56949 10.4956C1.70998 10.2579 2.01658 10.1791 2.25432 10.3195L7.49996 13.4192L12.7456 10.3195C12.9833 10.1791 13.2899 10.2579 13.4304 10.4956C13.5709 10.7334 13.4921 11.04 13.2543 11.1805L7.75432 14.4305C7.59742 14.5232 7.4025 14.5232 7.24559 14.4305L1.74559 11.1805C1.50785 11.04 1.42901 10.7334 1.56949 10.4956Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2K = [\"color\"];\nvar LayoutIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2K);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9 2H6V13H9V2ZM10 2V13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2H10ZM2.5 2H5V13H2.5C2.22386 13 2 12.7761 2 12.5V2.5C2 2.22386 2.22386 2 2.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2L = [\"color\"];\nvar LetterCaseCapitalizeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2L);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.68979 2.75C3.89667 2.74979 4.08232 2.87701 4.15679 3.07003L7.36662 11.39C7.46602 11.6477 7.33774 11.9371 7.0801 12.0365C6.82247 12.1359 6.53304 12.0076 6.43365 11.75L5.3825 9.02537H2.01133L0.966992 11.749C0.868128 12.0068 0.578964 12.1357 0.321126 12.0369C0.0632878 11.938 -0.0655864 11.6488 0.0332774 11.391L3.22344 3.07099C3.29751 2.87782 3.4829 2.75021 3.68979 2.75ZM3.69174 4.64284L5.05458 8.17537H2.33724L3.69174 4.64284ZM10.8989 5.20703C9.25818 5.20703 8.00915 6.68569 8.00915 8.60972C8.00915 10.6337 9.35818 12.0124 10.8989 12.0124C11.7214 12.0124 12.5744 11.6692 13.1543 11.0219V11.53C13.1543 11.7785 13.3557 11.98 13.6043 11.98C13.8528 11.98 14.0543 11.7785 14.0543 11.53V5.72C14.0543 5.47147 13.8528 5.27 13.6043 5.27C13.3557 5.27 13.1543 5.47147 13.1543 5.72V6.22317C12.6054 5.60095 11.7924 5.20703 10.8989 5.20703ZM13.1543 9.79823V7.30195C12.7639 6.58101 11.9414 6.05757 11.0868 6.05757C10.1088 6.05757 9.03503 6.96581 9.03503 8.60955C9.03503 10.1533 10.0088 11.1615 11.0868 11.1615C11.9701 11.1615 12.7719 10.4952 13.1543 9.79823Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2M = [\"color\"];\nvar LetterCaseLowercaseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2M);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.69899 5.20703C2.05823 5.20703 0.809204 6.68569 0.809204 8.60972C0.809204 10.6337 2.15823 12.0124 3.69899 12.0124C4.52126 12.0124 5.37402 11.6693 5.9539 11.0223V11.53C5.9539 11.7785 6.15537 11.98 6.4039 11.98C6.65243 11.98 6.8539 11.7785 6.8539 11.53V5.72001C6.8539 5.47149 6.65243 5.27001 6.4039 5.27001C6.15537 5.27001 5.9539 5.47149 5.9539 5.72001V6.22269C5.40506 5.60075 4.59218 5.20703 3.69899 5.20703ZM5.9539 9.799V7.30117C5.56339 6.58064 4.74118 6.05757 3.8868 6.05757C2.9089 6.05757 1.83508 6.96581 1.83508 8.60955C1.83508 10.1533 2.80889 11.1615 3.8868 11.1615C4.76984 11.1615 5.57141 10.4957 5.9539 9.799ZM10.799 5.20703C9.15823 5.20703 7.9092 6.68569 7.9092 8.60972C7.9092 10.6337 9.25823 12.0124 10.799 12.0124C11.6215 12.0124 12.4744 11.6692 13.0543 11.0218V11.53C13.0543 11.7785 13.2558 11.98 13.5043 11.98C13.7529 11.98 13.9543 11.7785 13.9543 11.53V5.72C13.9543 5.47147 13.7529 5.27 13.5043 5.27C13.2558 5.27 13.0543 5.47147 13.0543 5.72V6.22318C12.5055 5.60095 11.6924 5.20703 10.799 5.20703ZM13.0543 9.79822V7.30196C12.664 6.58102 11.8415 6.05757 10.9868 6.05757C10.0089 6.05757 8.93508 6.96581 8.93508 8.60955C8.93508 10.1533 9.90889 11.1615 10.9868 11.1615C11.8702 11.1615 12.672 10.4952 13.0543 9.79822Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2N = [\"color\"];\nvar LetterCaseToggleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2N);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.2895 2.75C11.4964 2.74979 11.6821 2.87701 11.7565 3.07003L14.9664 11.39C15.0657 11.6477 14.9375 11.9371 14.6798 12.0365C14.4222 12.1359 14.1328 12.0076 14.0334 11.75L12.9822 9.02537H9.61106L8.56672 11.749C8.46786 12.0068 8.1787 12.1357 7.92086 12.0369C7.66302 11.938 7.53415 11.6488 7.63301 11.391L10.8232 3.07099C10.8972 2.87782 11.0826 2.75021 11.2895 2.75ZM11.2915 4.64284L12.6543 8.17537H9.93698L11.2915 4.64284ZM2.89895 5.20703C1.25818 5.20703 0.00915527 6.68569 0.00915527 8.60972C0.00915527 10.6337 1.35818 12.0124 2.89895 12.0124C3.72141 12.0124 4.57438 11.6692 5.15427 11.0219V11.53C5.15427 11.7785 5.35574 11.98 5.60427 11.98C5.8528 11.98 6.05427 11.7785 6.05427 11.53V5.72C6.05427 5.47147 5.8528 5.27 5.60427 5.27C5.35574 5.27 5.15427 5.47147 5.15427 5.72V6.22317C4.60543 5.60095 3.79236 5.20703 2.89895 5.20703ZM5.15427 9.79823V7.30195C4.76393 6.58101 3.94144 6.05757 3.08675 6.05757C2.10885 6.05757 1.03503 6.96581 1.03503 8.60955C1.03503 10.1533 2.00885 11.1615 3.08675 11.1615C3.97011 11.1615 4.77195 10.4952 5.15427 9.79823Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2O = [\"color\"];\nvar LetterCaseUppercaseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2O);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.6255 2.75C3.83478 2.75 4.02192 2.88034 4.09448 3.07664L7.16985 11.3962C7.2656 11.6552 7.13324 11.9428 6.87423 12.0386C6.61522 12.1343 6.32763 12.002 6.23188 11.7429L5.22387 9.01603H2.02712L1.01911 11.7429C0.923362 12.002 0.635774 12.1343 0.376762 12.0386C0.117749 11.9428 -0.0146052 11.6552 0.0811401 11.3962L3.15651 3.07664C3.22908 2.88034 3.41621 2.75 3.6255 2.75ZM3.6255 4.69207L4.90966 8.16603H2.34133L3.6255 4.69207ZM11.3719 2.75C11.5811 2.75 11.7683 2.88034 11.8408 3.07664L14.9162 11.3962C15.012 11.6552 14.8796 11.9428 14.6206 12.0386C14.3616 12.1343 14.074 12.002 13.9782 11.7429L12.9702 9.01603H9.77348L8.76547 11.7429C8.66972 12.002 8.38213 12.1343 8.12312 12.0386C7.86411 11.9428 7.73175 11.6552 7.8275 11.3962L10.9029 3.07664C10.9754 2.88034 11.1626 2.75 11.3719 2.75ZM11.3719 4.69207L12.656 8.16603H10.0877L11.3719 4.69207Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2P = [\"color\"];\nvar LetterSpacingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2P);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.55293 0.999969C4.75295 0.999969 4.93372 1.11917 5.0125 1.30301L8.01106 8.29982C8.11984 8.55363 8.00226 8.84757 7.74844 8.95635C7.49463 9.06512 7.20069 8.94754 7.09191 8.69373L6.11613 6.41685H2.98973L2.01395 8.69373C1.90517 8.94754 1.61123 9.06512 1.35742 8.95635C1.1036 8.84757 0.986023 8.55363 1.0948 8.29982L4.09336 1.30301C4.17214 1.11917 4.35291 0.999969 4.55293 0.999969ZM4.55293 2.76929L5.75186 5.56685H3.354L4.55293 2.76929ZM11.0562 9.00214C11.2617 9.00214 11.4463 8.87633 11.5215 8.68502L14.2733 1.68299C14.3743 1.42598 14.2478 1.13575 13.9908 1.03475C13.7338 0.933747 13.4436 1.06021 13.3426 1.31722L11.0562 7.13514L8.76973 1.31722C8.66873 1.06021 8.3785 0.933747 8.1215 1.03475C7.86449 1.13575 7.73802 1.42598 7.83902 1.68299L10.5908 8.68502C10.666 8.87633 10.8506 9.00214 11.0562 9.00214ZM14.9537 12.4999C14.9537 12.606 14.9115 12.7077 14.8365 12.7828L12.8365 14.7828C12.6803 14.939 12.4271 14.939 12.2708 14.7828C12.1146 14.6265 12.1146 14.3733 12.2708 14.2171L13.588 12.8999H1.51937L2.83653 14.2171C2.99274 14.3733 2.99274 14.6265 2.83653 14.7828C2.68032 14.939 2.42705 14.939 2.27084 14.7828L0.270843 12.7828C0.195828 12.7077 0.153687 12.606 0.153687 12.4999C0.153687 12.3938 0.195828 12.2921 0.270843 12.2171L2.27084 10.2171C2.42705 10.0609 2.68032 10.0609 2.83653 10.2171C2.99274 10.3733 2.99274 10.6265 2.83653 10.7828L1.51937 12.0999L13.588 12.0999L12.2708 10.7828C12.1146 10.6265 12.1146 10.3733 12.2708 10.2171C12.4271 10.0609 12.6803 10.0609 12.8365 10.2171L14.8365 12.2171C14.9115 12.2921 14.9537 12.3938 14.9537 12.4999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2Q = [\"color\"];\nvar LightningBoltIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2Q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.69667 0.0403541C8.90859 0.131038 9.03106 0.354857 8.99316 0.582235L8.0902 6.00001H12.5C12.6893 6.00001 12.8625 6.10701 12.9472 6.27641C13.0319 6.4458 13.0136 6.6485 12.8999 6.80001L6.89997 14.8C6.76167 14.9844 6.51521 15.0503 6.30328 14.9597C6.09135 14.869 5.96888 14.6452 6.00678 14.4178L6.90974 9H2.49999C2.31061 9 2.13748 8.893 2.05278 8.72361C1.96809 8.55422 1.98636 8.35151 2.09999 8.2L8.09997 0.200038C8.23828 0.0156255 8.48474 -0.0503301 8.69667 0.0403541ZM3.49999 8.00001H7.49997C7.64695 8.00001 7.78648 8.06467 7.88148 8.17682C7.97648 8.28896 8.01733 8.43723 7.99317 8.5822L7.33027 12.5596L11.5 7.00001H7.49997C7.353 7.00001 7.21347 6.93534 7.11846 6.8232C7.02346 6.71105 6.98261 6.56279 7.00678 6.41781L7.66968 2.44042L3.49999 8.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2R = [\"color\"];\nvar LineHeightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2R);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.78233 2.21713C3.70732 2.14212 3.60557 2.09998 3.49949 2.09998C3.3934 2.09998 3.29166 2.14212 3.21664 2.21713L1.21664 4.21713C1.06044 4.37334 1.06044 4.62661 1.21664 4.78282C1.37285 4.93903 1.62612 4.93903 1.78233 4.78282L3.09949 3.46566L3.09949 11.5343L1.78233 10.2171C1.62612 10.0609 1.37285 10.0609 1.21664 10.2171C1.06043 10.3733 1.06043 10.6266 1.21664 10.7828L3.21664 12.7828C3.29166 12.8578 3.3934 12.9 3.49949 12.9C3.60557 12.9 3.70731 12.8578 3.78233 12.7828L5.78233 10.7828C5.93854 10.6266 5.93854 10.3733 5.78233 10.2171C5.62612 10.0609 5.37285 10.0609 5.21664 10.2171L3.89949 11.5343L3.89949 3.46566L5.21664 4.78282C5.37285 4.93903 5.62612 4.93903 5.78233 4.78282C5.93854 4.62661 5.93854 4.37334 5.78233 4.21713L3.78233 2.21713ZM8.49998 3.99997C8.22383 3.99997 7.99998 4.22382 7.99998 4.49997C7.99998 4.77611 8.22383 4.99997 8.49998 4.99997H14.5C14.7761 4.99997 15 4.77611 15 4.49997C15 4.22382 14.7761 3.99997 14.5 3.99997H8.49998ZM7.99998 7.49997C7.99998 7.22382 8.22383 6.99997 8.49998 6.99997H14.5C14.7761 6.99997 15 7.22382 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H8.49998C8.22383 7.99997 7.99998 7.77611 7.99998 7.49997ZM8.49998 9.99997C8.22383 9.99997 7.99998 10.2238 7.99998 10.5C7.99998 10.7761 8.22383 11 8.49998 11H14.5C14.7761 11 15 10.7761 15 10.5C15 10.2238 14.7761 9.99997 14.5 9.99997H8.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2S = [\"color\"];\nvar Link1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2S);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.62471 4.00001L4.56402 4.00001C4.04134 3.99993 3.70687 3.99988 3.4182 4.055C2.2379 4.28039 1.29846 5.17053 1.05815 6.33035C0.999538 6.61321 0.999604 6.93998 0.999703 7.43689L0.999711 7.50001L0.999703 7.56313C0.999604 8.06004 0.999538 8.38681 1.05815 8.66967C1.29846 9.8295 2.2379 10.7196 3.4182 10.945C3.70688 11.0001 4.04135 11.0001 4.56403 11L4.62471 11H5.49971C5.77585 11 5.99971 10.7762 5.99971 10.5C5.99971 10.2239 5.77585 10 5.49971 10H4.62471C4.02084 10 3.78907 9.99777 3.60577 9.96277C2.80262 9.8094 2.19157 9.21108 2.03735 8.46678C2.00233 8.29778 1.99971 8.08251 1.99971 7.50001C1.99971 6.91752 2.00233 6.70225 2.03735 6.53324C2.19157 5.78895 2.80262 5.19062 3.60577 5.03725C3.78907 5.00225 4.02084 5.00001 4.62471 5.00001H5.49971C5.77585 5.00001 5.99971 4.77615 5.99971 4.50001C5.99971 4.22387 5.77585 4.00001 5.49971 4.00001H4.62471ZM10.3747 5.00001C10.9786 5.00001 11.2104 5.00225 11.3937 5.03725C12.1968 5.19062 12.8079 5.78895 12.9621 6.53324C12.9971 6.70225 12.9997 6.91752 12.9997 7.50001C12.9997 8.08251 12.9971 8.29778 12.9621 8.46678C12.8079 9.21108 12.1968 9.8094 11.3937 9.96277C11.2104 9.99777 10.9786 10 10.3747 10H9.49971C9.22357 10 8.99971 10.2239 8.99971 10.5C8.99971 10.7762 9.22357 11 9.49971 11H10.3747L10.4354 11C10.9581 11.0001 11.2925 11.0001 11.5812 10.945C12.7615 10.7196 13.701 9.8295 13.9413 8.66967C13.9999 8.38681 13.9998 8.06005 13.9997 7.56314L13.9997 7.50001L13.9997 7.43688C13.9998 6.93998 13.9999 6.61321 13.9413 6.33035C13.701 5.17053 12.7615 4.28039 11.5812 4.055C11.2925 3.99988 10.9581 3.99993 10.4354 4.00001L10.3747 4.00001H9.49971C9.22357 4.00001 8.99971 4.22387 8.99971 4.50001C8.99971 4.77615 9.22357 5.00001 9.49971 5.00001H10.3747ZM5.00038 7C4.72424 7 4.50038 7.22386 4.50038 7.5C4.50038 7.77614 4.72424 8 5.00038 8H10.0004C10.2765 8 10.5004 7.77614 10.5004 7.5C10.5004 7.22386 10.2765 7 10.0004 7H5.00038Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2T = [\"color\"];\nvar Link2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2T);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8.51194 3.00541C9.18829 2.54594 10.0435 2.53694 10.6788 2.95419C10.8231 3.04893 10.9771 3.1993 11.389 3.61119C11.8009 4.02307 11.9513 4.17714 12.046 4.32141C12.4633 4.95675 12.4543 5.81192 11.9948 6.48827C11.8899 6.64264 11.7276 6.80811 11.3006 7.23511L10.6819 7.85383C10.4867 8.04909 10.4867 8.36567 10.6819 8.56093C10.8772 8.7562 11.1938 8.7562 11.389 8.56093L12.0077 7.94221L12.0507 7.89929C12.4203 7.52976 12.6568 7.2933 12.822 7.0502C13.4972 6.05623 13.5321 4.76252 12.8819 3.77248C12.7233 3.53102 12.4922 3.30001 12.1408 2.94871L12.0961 2.90408L12.0515 2.85942C11.7002 2.508 11.4692 2.27689 11.2277 2.11832C10.2377 1.46813 8.94398 1.50299 7.95001 2.17822C7.70691 2.34336 7.47044 2.57991 7.1009 2.94955L7.058 2.99247L6.43928 3.61119C6.24401 3.80645 6.24401 4.12303 6.43928 4.31829C6.63454 4.51355 6.95112 4.51355 7.14638 4.31829L7.7651 3.69957C8.1921 3.27257 8.35757 3.11027 8.51194 3.00541ZM4.31796 7.14672C4.51322 6.95146 4.51322 6.63487 4.31796 6.43961C4.12269 6.24435 3.80611 6.24435 3.61085 6.43961L2.99213 7.05833L2.94922 7.10124C2.57957 7.47077 2.34303 7.70724 2.17788 7.95035C1.50265 8.94432 1.4678 10.238 2.11799 11.2281C2.27656 11.4695 2.50766 11.7005 2.8591 12.0518L2.90374 12.0965L2.94837 12.1411C3.29967 12.4925 3.53068 12.7237 3.77214 12.8822C4.76219 13.5324 6.05589 13.4976 7.04986 12.8223C7.29296 12.6572 7.52943 12.4206 7.89896 12.051L7.89897 12.051L7.94188 12.0081L8.5606 11.3894C8.75586 11.1941 8.75586 10.8775 8.5606 10.6823C8.36533 10.487 8.04875 10.487 7.85349 10.6823L7.23477 11.301C6.80777 11.728 6.6423 11.8903 6.48794 11.9951C5.81158 12.4546 4.95642 12.4636 4.32107 12.0464C4.17681 11.9516 4.02274 11.8012 3.61085 11.3894C3.19896 10.9775 3.0486 10.8234 2.95385 10.6791C2.53661 10.0438 2.54561 9.18863 3.00507 8.51227C3.10993 8.35791 3.27224 8.19244 3.69924 7.76544L4.31796 7.14672ZM9.62172 6.08558C9.81698 5.89032 9.81698 5.57373 9.62172 5.37847C9.42646 5.18321 9.10988 5.18321 8.91461 5.37847L5.37908 8.91401C5.18382 9.10927 5.18382 9.42585 5.37908 9.62111C5.57434 9.81637 5.89092 9.81637 6.08619 9.62111L9.62172 6.08558Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2U = [\"color\"];\nvar LinkBreak1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2U);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L13.3536 2.35355ZM2.03735 8.46678C2.17398 9.12619 2.66918 9.67103 3.33886 9.89338L2.57833 10.6539C1.80843 10.2534 1.23784 9.53693 1.05815 8.66967C0.999538 8.38681 0.999604 8.06004 0.999703 7.56313L0.999711 7.50001L0.999703 7.43689C0.999604 6.93998 0.999538 6.61321 1.05815 6.33035C1.29846 5.17053 2.2379 4.28039 3.4182 4.055C3.70687 3.99988 4.04134 3.99993 4.56402 4.00001L4.62471 4.00001H5.49971C5.77585 4.00001 5.99971 4.22387 5.99971 4.50001C5.99971 4.77615 5.77585 5.00001 5.49971 5.00001H4.62471C4.02084 5.00001 3.78907 5.00225 3.60577 5.03725C2.80262 5.19062 2.19157 5.78895 2.03735 6.53324C2.00233 6.70225 1.99971 6.91752 1.99971 7.50001C1.99971 8.08251 2.00233 8.29778 2.03735 8.46678ZM12.9621 6.53324C12.8255 5.87397 12.3304 5.32922 11.661 5.10679L12.4215 4.34631C13.1912 4.74686 13.7616 5.46323 13.9413 6.33035C13.9999 6.61321 13.9998 6.93998 13.9997 7.43688L13.9997 7.50001L13.9997 7.56314C13.9998 8.06005 13.9999 8.38681 13.9413 8.66967C13.701 9.8295 12.7615 10.7196 11.5812 10.945C11.2925 11.0001 10.9581 11.0001 10.4354 11L10.3747 11H9.49971C9.22357 11 8.99971 10.7762 8.99971 10.5C8.99971 10.2239 9.22357 10 9.49971 10H10.3747C10.9786 10 11.2104 9.99777 11.3937 9.96277C12.1968 9.8094 12.8079 9.21108 12.9621 8.46678C12.9971 8.29778 12.9997 8.08251 12.9997 7.50001C12.9997 6.91752 12.9971 6.70225 12.9621 6.53324Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2V = [\"color\"];\nvar LinkBreak2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2V);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.50021 0C4.77635 0 5.0002 0.223853 5.0002 0.49999V2.49995C5.0002 2.77609 4.77635 2.99994 4.50021 2.99994C4.22408 2.99994 4.00022 2.77609 4.00022 2.49995V0.49999C4.00022 0.223853 4.22408 0 4.50021 0ZM0.646451 0.64647C0.84171 0.451212 1.15829 0.451212 1.35354 0.64647L2.85351 2.14644C3.04877 2.3417 3.04877 2.65827 2.85351 2.85353C2.65826 3.04879 2.34168 3.04879 2.14642 2.85353L0.646452 1.35356C0.451193 1.1583 0.451193 0.841728 0.646451 0.64647ZM0.00030517 4.49991C0.00030517 4.22377 0.224158 3.99992 0.500295 3.99992H2.50025C2.77639 3.99992 3.00024 4.22377 3.00024 4.49991C3.00024 4.77605 2.77639 4.9999 2.50025 4.9999H0.500295C0.224158 4.9999 0.00030517 4.77605 0.00030517 4.49991ZM12.0001 10.4998C12.0001 10.2236 12.2239 9.9998 12.5001 9.9998H14.5C14.7761 9.9998 15 10.2236 15 10.4998C15 10.7759 14.7761 10.9998 14.5 10.9998H12.5001C12.2239 10.9998 12.0001 10.7759 12.0001 10.4998ZM10.5001 11.9998C10.7762 11.9998 11.0001 12.2236 11.0001 12.4997V14.4997C11.0001 14.7758 10.7762 14.9997 10.5001 14.9997C10.224 14.9997 10.0001 14.7758 10.0001 14.4997V12.4997C10.0001 12.2236 10.224 11.9998 10.5001 11.9998ZM12.1462 12.1462C12.3415 11.951 12.658 11.951 12.8533 12.1462L14.3533 13.6462C14.5485 13.8415 14.5485 14.158 14.3533 14.3533C14.158 14.5485 13.8414 14.5485 13.6462 14.3533L12.1462 12.8533C11.951 12.6581 11.951 12.3415 12.1462 12.1462ZM7.76478 3.69938C8.19177 3.27238 8.35724 3.11008 8.5116 3.00522C9.18794 2.54577 10.0431 2.53677 10.6784 2.95401C10.8227 3.04875 10.9767 3.19911 11.3886 3.61099C11.8005 4.02287 11.9509 4.17694 12.0456 4.3212C12.4628 4.95653 12.4539 5.81168 11.9944 6.48802C11.8895 6.64238 11.7272 6.80785 11.3002 7.23484L10.6815 7.85354C10.4863 8.0488 10.4863 8.36538 10.6815 8.56064C10.8768 8.75589 11.1934 8.75589 11.3886 8.56064L12.0073 7.94193L12.0502 7.89903C12.4199 7.5295 12.6564 7.29303 12.8216 7.04993C13.4968 6.05598 13.5316 4.7623 12.8815 3.77228C12.7229 3.53083 12.4918 3.29982 12.1404 2.94853L12.0957 2.9039L12.0511 2.85925C11.6998 2.50782 11.4688 2.27672 11.2273 2.11816C10.2373 1.46798 8.94364 1.50284 7.94968 2.17805C7.70659 2.34319 7.47012 2.57973 7.1006 2.94936L7.1006 2.94937L7.05769 2.99228L6.43898 3.61099C6.24372 3.80625 6.24372 4.12282 6.43898 4.31808C6.63424 4.51334 6.95081 4.51334 7.14607 4.31808L7.76478 3.69938ZM2.99191 7.05807L2.94899 7.10097C2.57935 7.4705 2.34282 7.70697 2.17767 7.95006C1.50246 8.94401 1.4676 10.2377 2.11778 11.2277C2.27634 11.4692 2.50744 11.7002 2.85886 12.0515L2.85888 12.0515L2.90352 12.0961L2.94815 12.1407L2.94815 12.1407L2.94817 12.1408C3.29945 12.4922 3.53045 12.7233 3.7719 12.8818C4.76193 13.532 6.0556 13.4972 7.04956 12.8219C7.29265 12.6568 7.52912 12.4203 7.89865 12.0506L7.94155 12.0077L8.56026 11.389C8.75552 11.1937 8.75552 10.8772 8.56026 10.6819C8.365 10.4867 8.04842 10.4867 7.85317 10.6819L7.23446 11.3006C6.80747 11.7276 6.642 11.8899 6.48764 11.9948C5.8113 12.4542 4.95615 12.4632 4.32082 12.046C4.17656 11.9512 4.02249 11.8009 3.61061 11.389C3.19873 10.9771 3.04837 10.8231 2.95363 10.6788C2.53639 10.0435 2.54539 9.18832 3.00484 8.51198C3.10971 8.35761 3.27201 8.19215 3.699 7.76516L4.3177 7.14645C4.51296 6.95119 4.51296 6.63462 4.3177 6.43936C4.12245 6.2441 3.80587 6.2441 3.61061 6.43936L2.99191 7.05807Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2W = [\"color\"];\nvar LinkNone1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2W);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.56427 3.99988C4.58422 3.99989 4.60445 3.99989 4.62496 3.99989H5.49996C5.7761 3.99989 5.99996 4.22375 5.99996 4.49989C5.99996 4.77603 5.7761 4.99989 5.49996 4.99989H4.62496C4.02108 4.99989 3.78932 5.00213 3.60601 5.03713C2.80287 5.1905 2.19181 5.78883 2.03759 6.53312C2.00257 6.70212 1.99996 6.91739 1.99996 7.49989C1.99996 8.08239 2.00257 8.29766 2.03759 8.46666C2.19181 9.21095 2.80287 9.80928 3.60601 9.96265C3.78932 9.99765 4.02108 9.99989 4.62496 9.99989H5.49996C5.7761 9.99989 5.99996 10.2237 5.99996 10.4999C5.99996 10.776 5.7761 10.9999 5.49996 10.9999H4.62496C4.60445 10.9999 4.58422 10.9999 4.56427 10.9999C4.04159 11 3.70712 11 3.41845 10.9449C2.23814 10.7195 1.29871 9.82937 1.05839 8.66955C0.999782 8.38669 0.999848 8.05992 0.999947 7.56301C0.999951 7.54227 0.999955 7.52123 0.999955 7.49989C0.999955 7.47855 0.999951 7.45751 0.999947 7.43677C0.999848 6.93986 0.999782 6.61309 1.05839 6.33023C1.29871 5.17041 2.23814 4.28027 3.41845 4.05488C3.70712 3.99976 4.04159 3.99981 4.56427 3.99988ZM11.3939 5.03713C11.2106 5.00213 10.9788 4.99989 10.375 4.99989H9.49996C9.22381 4.99989 8.99996 4.77603 8.99996 4.49989C8.99996 4.22375 9.22381 3.99989 9.49996 3.99989H10.375C10.3955 3.99989 10.4157 3.99989 10.4356 3.99988C10.9583 3.99981 11.2928 3.99976 11.5815 4.05488C12.7618 4.28027 13.7012 5.17041 13.9415 6.33023C14.0001 6.61309 14.0001 6.93985 14 7.43676C14 7.4575 14 7.47854 14 7.49989C14 7.52124 14 7.54228 14 7.56302C14.0001 8.05992 14.0001 8.38669 13.9415 8.66955C13.7012 9.82937 12.7618 10.7195 11.5815 10.9449C11.2928 11 10.9583 11 10.4356 10.9999C10.4157 10.9999 10.3955 10.9999 10.375 10.9999H9.49996C9.22381 10.9999 8.99996 10.776 8.99996 10.4999C8.99996 10.2237 9.22381 9.99989 9.49996 9.99989H10.375C10.9788 9.99989 11.2106 9.99765 11.3939 9.96265C12.197 9.80928 12.8081 9.21095 12.9623 8.46666C12.9973 8.29766 13 8.08239 13 7.49989C13 6.91739 12.9973 6.70212 12.9623 6.53312C12.8081 5.78883 12.197 5.1905 11.3939 5.03713Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2X = [\"color\"];\nvar LinkNone2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2X);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10.6788 2.95419C10.0435 2.53694 9.18829 2.54594 8.51194 3.00541C8.35757 3.11027 8.1921 3.27257 7.7651 3.69957L7.14638 4.31829C6.95112 4.51355 6.63454 4.51355 6.43928 4.31829C6.24401 4.12303 6.24401 3.80645 6.43928 3.61119L7.058 2.99247C7.0725 2.97797 7.08679 2.96366 7.1009 2.94955C7.47044 2.57991 7.70691 2.34336 7.95001 2.17822C8.94398 1.50299 10.2377 1.46813 11.2277 2.11832C11.4692 2.27689 11.7002 2.508 12.0515 2.85942C12.0662 2.8741 12.081 2.88898 12.0961 2.90408C12.1112 2.91917 12.1261 2.93405 12.1408 2.94871C12.4922 3.30001 12.7233 3.53102 12.8819 3.77248C13.5321 4.76252 13.4972 6.05623 12.822 7.0502C12.6568 7.2933 12.4203 7.52976 12.0507 7.89929C12.0366 7.9134 12.0222 7.92771 12.0077 7.94221L11.389 8.56093C11.1938 8.7562 10.8772 8.7562 10.6819 8.56093C10.4867 8.36567 10.4867 8.04909 10.6819 7.85383L11.3006 7.23511C11.7276 6.80811 11.8899 6.64264 11.9948 6.48827C12.4543 5.81192 12.4633 4.95675 12.046 4.32141C11.9513 4.17714 11.8009 4.02307 11.389 3.61119C10.9771 3.1993 10.8231 3.04893 10.6788 2.95419ZM4.31796 6.43961C4.51322 6.63487 4.51322 6.95146 4.31796 7.14672L3.69924 7.76544C3.27224 8.19244 3.10993 8.35791 3.00507 8.51227C2.54561 9.18863 2.53661 10.0438 2.95385 10.6791C3.0486 10.8234 3.19896 10.9775 3.61085 11.3894C4.02274 11.8012 4.17681 11.9516 4.32107 12.0464C4.95642 12.4636 5.81158 12.4546 6.48794 11.9951C6.6423 11.8903 6.80777 11.728 7.23477 11.301L7.85349 10.6823C8.04875 10.487 8.36533 10.487 8.5606 10.6823C8.75586 10.8775 8.75586 11.1941 8.5606 11.3894L7.94188 12.0081C7.92738 12.0226 7.91307 12.0369 7.89897 12.051C7.52943 12.4206 7.29296 12.6572 7.04986 12.8223C6.05589 13.4976 4.76219 13.5324 3.77214 12.8822C3.53068 12.7237 3.29967 12.4925 2.94837 12.1411C2.93371 12.1264 2.91883 12.1116 2.90374 12.0965C2.88865 12.0814 2.87377 12.0665 2.8591 12.0518C2.50766 11.7005 2.27656 11.4695 2.11799 11.2281C1.4678 10.238 1.50265 8.94432 2.17788 7.95035C2.34303 7.70724 2.57957 7.47077 2.94922 7.10124C2.96333 7.08713 2.97763 7.07283 2.99213 7.05833L3.61085 6.43961C3.80611 6.24435 4.12269 6.24435 4.31796 6.43961Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2Y = [\"color\"];\nvar LinkedInLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2Y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 1C1.44772 1 1 1.44772 1 2V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V2C14 1.44772 13.5523 1 13 1H2ZM3.05 6H4.95V12H3.05V6ZM5.075 4.005C5.075 4.59871 4.59371 5.08 4 5.08C3.4063 5.08 2.925 4.59871 2.925 4.005C2.925 3.41129 3.4063 2.93 4 2.93C4.59371 2.93 5.075 3.41129 5.075 4.005ZM12 8.35713C12 6.55208 10.8334 5.85033 9.67449 5.85033C9.29502 5.83163 8.91721 5.91119 8.57874 6.08107C8.32172 6.21007 8.05265 6.50523 7.84516 7.01853H7.79179V6.00044H6V12.0047H7.90616V8.8112C7.8786 8.48413 7.98327 8.06142 8.19741 7.80987C8.41156 7.55832 8.71789 7.49825 8.95015 7.46774H9.02258C9.62874 7.46774 10.0786 7.84301 10.0786 8.78868V12.0047H11.9847L12 8.35713Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2Z = [\"color\"];\nvar ListBulletIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2Z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2_ = [\"color\"];\nvar LockClosedIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2_);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 4.63601C5 3.76031 5.24219 3.1054 5.64323 2.67357C6.03934 2.24705 6.64582 1.9783 7.5014 1.9783C8.35745 1.9783 8.96306 2.24652 9.35823 2.67208C9.75838 3.10299 10 3.75708 10 4.63325V5.99999H5V4.63601ZM4 5.99999V4.63601C4 3.58148 4.29339 2.65754 4.91049 1.99307C5.53252 1.32329 6.42675 0.978302 7.5014 0.978302C8.57583 0.978302 9.46952 1.32233 10.091 1.99162C10.7076 2.65557 11 3.57896 11 4.63325V5.99999H12C12.5523 5.99999 13 6.44771 13 6.99999V13C13 13.5523 12.5523 14 12 14H3C2.44772 14 2 13.5523 2 13V6.99999C2 6.44771 2.44772 5.99999 3 5.99999H4ZM3 6.99999H12V13H3V6.99999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$2$ = [\"color\"];\nvar LockOpen1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2$);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.4986 0C6.3257 0 5.36107 0.38943 4.73753 1.19361C4.23745 1.83856 4 2.68242 4 3.63325H5C5 2.84313 5.19691 2.23312 5.5278 1.80636C5.91615 1.30552 6.55152 1 7.4986 1C8.35683 1 8.96336 1.26502 9.35846 1.68623C9.75793 2.11211 10 2.76044 10 3.63601V6H3C2.44772 6 2 6.44772 2 7V13C2 13.5523 2.44772 14 3 14H12C12.5523 14 13 13.5523 13 13V7C13 6.44771 12.5523 6 12 6H11V3.63601C11 2.58135 10.7065 1.66167 10.0878 1.0021C9.46477 0.337871 8.57061 0 7.4986 0ZM3 7H12V13H3V7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$30 = [\"color\"];\nvar LockOpen2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$30);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9 3.63601C9 2.76044 9.24207 2.11211 9.64154 1.68623C10.0366 1.26502 10.6432 1 11.5014 1C12.4485 1 13.0839 1.30552 13.4722 1.80636C13.8031 2.23312 14 2.84313 14 3.63325H15C15 2.68242 14.7626 1.83856 14.2625 1.19361C13.6389 0.38943 12.6743 0 11.5014 0C10.4294 0 9.53523 0.337871 8.91218 1.0021C8.29351 1.66167 8 2.58135 8 3.63601V6H1C0.447715 6 0 6.44772 0 7V13C0 13.5523 0.447715 14 1 14H10C10.5523 14 11 13.5523 11 13V7C11 6.44772 10.5523 6 10 6H9V3.63601ZM1 7H10V13H1V7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$31 = [\"color\"];\nvar LoopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$31);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.35355 1.85355C3.54882 1.65829 3.54882 1.34171 3.35355 1.14645C3.15829 0.951184 2.84171 0.951184 2.64645 1.14645L0.646447 3.14645C0.451184 3.34171 0.451184 3.65829 0.646447 3.85355L2.64645 5.85355C2.84171 6.04882 3.15829 6.04882 3.35355 5.85355C3.54882 5.65829 3.54882 5.34171 3.35355 5.14645L2.20711 4H9.5C11.433 4 13 5.567 13 7.5C13 7.77614 13.2239 8 13.5 8C13.7761 8 14 7.77614 14 7.5C14 5.01472 11.9853 3 9.5 3H2.20711L3.35355 1.85355ZM2 7.5C2 7.22386 1.77614 7 1.5 7C1.22386 7 1 7.22386 1 7.5C1 9.98528 3.01472 12 5.5 12H12.7929L11.6464 13.1464C11.4512 13.3417 11.4512 13.6583 11.6464 13.8536C11.8417 14.0488 12.1583 14.0488 12.3536 13.8536L14.3536 11.8536C14.5488 11.6583 14.5488 11.3417 14.3536 11.1464L12.3536 9.14645C12.1583 8.95118 11.8417 8.95118 11.6464 9.14645C11.4512 9.34171 11.4512 9.65829 11.6464 9.85355L12.7929 11H5.5C3.567 11 2 9.433 2 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$32 = [\"color\"];\nvar MagicWandIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$32);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.9 0.499976C13.9 0.279062 13.7209 0.0999756 13.5 0.0999756C13.2791 0.0999756 13.1 0.279062 13.1 0.499976V1.09998H12.5C12.2791 1.09998 12.1 1.27906 12.1 1.49998C12.1 1.72089 12.2791 1.89998 12.5 1.89998H13.1V2.49998C13.1 2.72089 13.2791 2.89998 13.5 2.89998C13.7209 2.89998 13.9 2.72089 13.9 2.49998V1.89998H14.5C14.7209 1.89998 14.9 1.72089 14.9 1.49998C14.9 1.27906 14.7209 1.09998 14.5 1.09998H13.9V0.499976ZM11.8536 3.14642C12.0488 3.34168 12.0488 3.65826 11.8536 3.85353L10.8536 4.85353C10.6583 5.04879 10.3417 5.04879 10.1465 4.85353C9.9512 4.65827 9.9512 4.34169 10.1465 4.14642L11.1464 3.14643C11.3417 2.95116 11.6583 2.95116 11.8536 3.14642ZM9.85357 5.14642C10.0488 5.34168 10.0488 5.65827 9.85357 5.85353L2.85355 12.8535C2.65829 13.0488 2.34171 13.0488 2.14645 12.8535C1.95118 12.6583 1.95118 12.3417 2.14645 12.1464L9.14646 5.14642C9.34172 4.95116 9.65831 4.95116 9.85357 5.14642ZM13.5 5.09998C13.7209 5.09998 13.9 5.27906 13.9 5.49998V6.09998H14.5C14.7209 6.09998 14.9 6.27906 14.9 6.49998C14.9 6.72089 14.7209 6.89998 14.5 6.89998H13.9V7.49998C13.9 7.72089 13.7209 7.89998 13.5 7.89998C13.2791 7.89998 13.1 7.72089 13.1 7.49998V6.89998H12.5C12.2791 6.89998 12.1 6.72089 12.1 6.49998C12.1 6.27906 12.2791 6.09998 12.5 6.09998H13.1V5.49998C13.1 5.27906 13.2791 5.09998 13.5 5.09998ZM8.90002 0.499976C8.90002 0.279062 8.72093 0.0999756 8.50002 0.0999756C8.2791 0.0999756 8.10002 0.279062 8.10002 0.499976V1.09998H7.50002C7.2791 1.09998 7.10002 1.27906 7.10002 1.49998C7.10002 1.72089 7.2791 1.89998 7.50002 1.89998H8.10002V2.49998C8.10002 2.72089 8.2791 2.89998 8.50002 2.89998C8.72093 2.89998 8.90002 2.72089 8.90002 2.49998V1.89998H9.50002C9.72093 1.89998 9.90002 1.72089 9.90002 1.49998C9.90002 1.27906 9.72093 1.09998 9.50002 1.09998H8.90002V0.499976Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$33 = [\"color\"];\nvar MagnifyingGlassIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$33);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$34 = [\"color\"];\nvar MarginIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$34);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.49988 2.00012C1.77602 2.00012 1.99988 1.77626 1.99988 1.50012C1.99988 1.22398 1.77602 1.00012 1.49988 1.00012C1.22374 1.00012 0.999878 1.22398 0.999878 1.50012C0.999878 1.77626 1.22374 2.00012 1.49988 2.00012ZM4.49988 2.00012C4.77602 2.00012 4.99988 1.77626 4.99988 1.50012C4.99988 1.22398 4.77602 1.00012 4.49988 1.00012C4.22374 1.00012 3.99988 1.22398 3.99988 1.50012C3.99988 1.77626 4.22374 2.00012 4.49988 2.00012ZM7.99988 1.50012C7.99988 1.77626 7.77602 2.00012 7.49988 2.00012C7.22374 2.00012 6.99988 1.77626 6.99988 1.50012C6.99988 1.22398 7.22374 1.00012 7.49988 1.00012C7.77602 1.00012 7.99988 1.22398 7.99988 1.50012ZM10.4999 2.00012C10.776 2.00012 10.9999 1.77626 10.9999 1.50012C10.9999 1.22398 10.776 1.00012 10.4999 1.00012C10.2237 1.00012 9.99988 1.22398 9.99988 1.50012C9.99988 1.77626 10.2237 2.00012 10.4999 2.00012ZM13.9999 1.50012C13.9999 1.77626 13.776 2.00012 13.4999 2.00012C13.2237 2.00012 12.9999 1.77626 12.9999 1.50012C12.9999 1.22398 13.2237 1.00012 13.4999 1.00012C13.776 1.00012 13.9999 1.22398 13.9999 1.50012ZM1.49988 14.0001C1.77602 14.0001 1.99988 13.7763 1.99988 13.5001C1.99988 13.224 1.77602 13.0001 1.49988 13.0001C1.22374 13.0001 0.999878 13.224 0.999878 13.5001C0.999878 13.7763 1.22374 14.0001 1.49988 14.0001ZM1.99988 10.5001C1.99988 10.7763 1.77602 11.0001 1.49988 11.0001C1.22374 11.0001 0.999878 10.7763 0.999878 10.5001C0.999878 10.224 1.22374 10.0001 1.49988 10.0001C1.77602 10.0001 1.99988 10.224 1.99988 10.5001ZM1.49988 8.00012C1.77602 8.00012 1.99988 7.77626 1.99988 7.50012C1.99988 7.22398 1.77602 7.00012 1.49988 7.00012C1.22374 7.00012 0.999878 7.22398 0.999878 7.50012C0.999878 7.77626 1.22374 8.00012 1.49988 8.00012ZM1.99988 4.50012C1.99988 4.77626 1.77602 5.00012 1.49988 5.00012C1.22374 5.00012 0.999878 4.77626 0.999878 4.50012C0.999878 4.22398 1.22374 4.00012 1.49988 4.00012C1.77602 4.00012 1.99988 4.22398 1.99988 4.50012ZM13.4999 11.0001C13.776 11.0001 13.9999 10.7763 13.9999 10.5001C13.9999 10.224 13.776 10.0001 13.4999 10.0001C13.2237 10.0001 12.9999 10.224 12.9999 10.5001C12.9999 10.7763 13.2237 11.0001 13.4999 11.0001ZM13.9999 7.50012C13.9999 7.77626 13.776 8.00012 13.4999 8.00012C13.2237 8.00012 12.9999 7.77626 12.9999 7.50012C12.9999 7.22398 13.2237 7.00012 13.4999 7.00012C13.776 7.00012 13.9999 7.22398 13.9999 7.50012ZM13.4999 5.00012C13.776 5.00012 13.9999 4.77626 13.9999 4.50012C13.9999 4.22398 13.776 4.00012 13.4999 4.00012C13.2237 4.00012 12.9999 4.22398 12.9999 4.50012C12.9999 4.77626 13.2237 5.00012 13.4999 5.00012ZM4.99988 13.5001C4.99988 13.7763 4.77602 14.0001 4.49988 14.0001C4.22374 14.0001 3.99988 13.7763 3.99988 13.5001C3.99988 13.224 4.22374 13.0001 4.49988 13.0001C4.77602 13.0001 4.99988 13.224 4.99988 13.5001ZM7.49988 14.0001C7.77602 14.0001 7.99988 13.7763 7.99988 13.5001C7.99988 13.224 7.77602 13.0001 7.49988 13.0001C7.22374 13.0001 6.99988 13.224 6.99988 13.5001C6.99988 13.7763 7.22374 14.0001 7.49988 14.0001ZM10.9999 13.5001C10.9999 13.7763 10.776 14.0001 10.4999 14.0001C10.2237 14.0001 9.99988 13.7763 9.99988 13.5001C9.99988 13.224 10.2237 13.0001 10.4999 13.0001C10.776 13.0001 10.9999 13.224 10.9999 13.5001ZM13.4999 14.0001C13.776 14.0001 13.9999 13.7763 13.9999 13.5001C13.9999 13.224 13.776 13.0001 13.4999 13.0001C13.2237 13.0001 12.9999 13.224 12.9999 13.5001C12.9999 13.7763 13.2237 14.0001 13.4999 14.0001ZM3.99988 5.00012C3.99988 4.44784 4.44759 4.00012 4.99988 4.00012H9.99988C10.5522 4.00012 10.9999 4.44784 10.9999 5.00012V10.0001C10.9999 10.5524 10.5522 11.0001 9.99988 11.0001H4.99988C4.44759 11.0001 3.99988 10.5524 3.99988 10.0001V5.00012ZM4.99988 5.00012H9.99988V10.0001H4.99988V5.00012Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$35 = [\"color\"];\nvar MaskOffIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$35);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 2H14V13H1L1 2ZM0 2C0 1.44772 0.447715 1 1 1H14C14.5523 1 15 1.44772 15 2V13C15 13.5523 14.5523 14 14 14H1C0.447715 14 0 13.5523 0 13V2ZM4.875 7.5C4.875 6.05025 6.05025 4.875 7.5 4.875C8.94975 4.875 10.125 6.05025 10.125 7.5C10.125 8.94975 8.94975 10.125 7.5 10.125C6.05025 10.125 4.875 8.94975 4.875 7.5ZM7.5 3.875C5.49797 3.875 3.875 5.49797 3.875 7.5C3.875 9.50203 5.49797 11.125 7.5 11.125C9.50203 11.125 11.125 9.50203 11.125 7.5C11.125 5.49797 9.50203 3.875 7.5 3.875Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$36 = [\"color\"];\nvar MaskOnIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$36);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 1C0.447715 1 0 1.44772 0 2V13C0 13.5523 0.447715 14 1 14H14C14.5523 14 15 13.5523 15 13V2C15 1.44772 14.5523 1 14 1H1ZM7.5 10.625C9.22589 10.625 10.625 9.22589 10.625 7.5C10.625 5.77411 9.22589 4.375 7.5 4.375C5.77411 4.375 4.375 5.77411 4.375 7.5C4.375 9.22589 5.77411 10.625 7.5 10.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$37 = [\"color\"];\nvar MinusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$37);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.25 7.5C2.25 7.22386 2.47386 7 2.75 7H12.25C12.5261 7 12.75 7.22386 12.75 7.5C12.75 7.77614 12.5261 8 12.25 8H2.75C2.47386 8 2.25 7.77614 2.25 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$38 = [\"color\"];\nvar MinusCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$38);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM4.50003 7C4.22389 7 4.00003 7.22386 4.00003 7.5C4.00003 7.77614 4.22389 8 4.50003 8H10.5C10.7762 8 11 7.77614 11 7.5C11 7.22386 10.7762 7 10.5 7H4.50003Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$39 = [\"color\"];\nvar MixIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$39);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.14921 3.99996C2.14921 2.97778 2.97784 2.14915 4.00002 2.14915C5.02219 2.14915 5.85083 2.97778 5.85083 3.99996C5.85083 5.02213 5.02219 5.85077 4.00002 5.85077C2.97784 5.85077 2.14921 5.02213 2.14921 3.99996ZM4.00002 1.24915C2.48079 1.24915 1.24921 2.48073 1.24921 3.99996C1.24921 5.51919 2.48079 6.75077 4.00002 6.75077C5.51925 6.75077 6.75083 5.51919 6.75083 3.99996C6.75083 2.48073 5.51925 1.24915 4.00002 1.24915ZM5.82034 11.0001L2.49998 12.8369V9.16331L5.82034 11.0001ZM2.63883 8.21159C2.17228 7.9535 1.59998 8.29093 1.59998 8.82411V13.1761C1.59998 13.7093 2.17228 14.0467 2.63883 13.7886L6.57235 11.6126C7.05389 11.3462 7.05389 10.654 6.57235 10.3876L2.63883 8.21159ZM8.30001 9.00003C8.30001 8.61343 8.61341 8.30003 9.00001 8.30003H13C13.3866 8.30003 13.7 8.61343 13.7 9.00003V13C13.7 13.3866 13.3866 13.7 13 13.7H9.00001C8.61341 13.7 8.30001 13.3866 8.30001 13V9.00003ZM9.20001 9.20003V12.8H12.8V9.20003H9.20001ZM13.4432 2.19311C13.6189 2.01737 13.6189 1.73245 13.4432 1.55671C13.2675 1.38098 12.9826 1.38098 12.8068 1.55671L11 3.36353L9.19321 1.55674C9.01748 1.381 8.73255 1.381 8.55682 1.55674C8.38108 1.73247 8.38108 2.0174 8.55682 2.19313L10.3636 3.99992L8.55682 5.80671C8.38108 5.98245 8.38108 6.26737 8.55682 6.44311C8.73255 6.61885 9.01748 6.61885 9.19321 6.44311L11 4.63632L12.8068 6.44314C12.9826 6.61887 13.2675 6.61887 13.4432 6.44314C13.6189 6.2674 13.6189 5.98247 13.4432 5.80674L11.6364 3.99992L13.4432 2.19311Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3a = [\"color\"];\nvar MixerHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3a);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.5 3C4.67157 3 4 3.67157 4 4.5C4 5.32843 4.67157 6 5.5 6C6.32843 6 7 5.32843 7 4.5C7 3.67157 6.32843 3 5.5 3ZM3 5C3.01671 5 3.03323 4.99918 3.04952 4.99758C3.28022 6.1399 4.28967 7 5.5 7C6.71033 7 7.71978 6.1399 7.95048 4.99758C7.96677 4.99918 7.98329 5 8 5H13.5C13.7761 5 14 4.77614 14 4.5C14 4.22386 13.7761 4 13.5 4H8C7.98329 4 7.96677 4.00082 7.95048 4.00242C7.71978 2.86009 6.71033 2 5.5 2C4.28967 2 3.28022 2.86009 3.04952 4.00242C3.03323 4.00082 3.01671 4 3 4H1.5C1.22386 4 1 4.22386 1 4.5C1 4.77614 1.22386 5 1.5 5H3ZM11.9505 10.9976C11.7198 12.1399 10.7103 13 9.5 13C8.28967 13 7.28022 12.1399 7.04952 10.9976C7.03323 10.9992 7.01671 11 7 11H1.5C1.22386 11 1 10.7761 1 10.5C1 10.2239 1.22386 10 1.5 10H7C7.01671 10 7.03323 10.0008 7.04952 10.0024C7.28022 8.8601 8.28967 8 9.5 8C10.7103 8 11.7198 8.8601 11.9505 10.0024C11.9668 10.0008 11.9833 10 12 10H13.5C13.7761 10 14 10.2239 14 10.5C14 10.7761 13.7761 11 13.5 11H12C11.9833 11 11.9668 10.9992 11.9505 10.9976ZM8 10.5C8 9.67157 8.67157 9 9.5 9C10.3284 9 11 9.67157 11 10.5C11 11.3284 10.3284 12 9.5 12C8.67157 12 8 11.3284 8 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3b = [\"color\"];\nvar MixerVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3b);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 1.5C5 1.22386 4.77614 1 4.5 1C4.22386 1 4 1.22386 4 1.5L4 7C4 7.01671 4.00082 7.03323 4.00242 7.04952C2.86009 7.28022 2 8.28967 2 9.5C2 10.7103 2.86009 11.7198 4.00242 11.9505C4.00082 11.9668 4 11.9833 4 12V13.5C4 13.7761 4.22386 14 4.5 14C4.77614 14 5 13.7761 5 13.5V12C5 11.9833 4.99918 11.9668 4.99758 11.9505C6.1399 11.7198 7 10.7103 7 9.5C7 8.28967 6.1399 7.28022 4.99758 7.04952C4.99918 7.03323 5 7.01671 5 7L5 1.5ZM11 1.5C11 1.22386 10.7761 1 10.5 1C10.2239 1 10 1.22386 10 1.5V3C10 3.01671 10.0008 3.03323 10.0024 3.04952C8.8601 3.28022 8 4.28967 8 5.5C8 6.71033 8.8601 7.71978 10.0024 7.95048C10.0008 7.96677 10 7.98329 10 8V13.5C10 13.7761 10.2239 14 10.5 14C10.7761 14 11 13.7761 11 13.5V8C11 7.98329 10.9992 7.96677 10.9976 7.95048C12.1399 7.71978 13 6.71033 13 5.5C13 4.28967 12.1399 3.28022 10.9976 3.04952C10.9992 3.03323 11 3.01671 11 3V1.5ZM4.5 8C3.67157 8 3 8.67157 3 9.5C3 10.3284 3.67157 11 4.5 11C5.32843 11 6 10.3284 6 9.5C6 8.67157 5.32843 8 4.5 8ZM9 5.5C9 4.67157 9.67157 4 10.5 4C11.3284 4 12 4.67157 12 5.5C12 6.32843 11.3284 7 10.5 7C9.67157 7 9 6.32843 9 5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3c = [\"color\"];\nvar MobileIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3c);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4 2.5C4 2.22386 4.22386 2 4.5 2H10.5C10.7761 2 11 2.22386 11 2.5V12.5C11 12.7761 10.7761 13 10.5 13H4.5C4.22386 13 4 12.7761 4 12.5V2.5ZM4.5 1C3.67157 1 3 1.67157 3 2.5V12.5C3 13.3284 3.67157 14 4.5 14H10.5C11.3284 14 12 13.3284 12 12.5V2.5C12 1.67157 11.3284 1 10.5 1H4.5ZM6 11.65C5.8067 11.65 5.65 11.8067 5.65 12C5.65 12.1933 5.8067 12.35 6 12.35H9C9.1933 12.35 9.35 12.1933 9.35 12C9.35 11.8067 9.1933 11.65 9 11.65H6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3d = [\"color\"];\nvar ModulzLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3d);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.25925 3.16667L4.37036 5.33333V1L7.25925 3.16667ZM1 8.22222L3.88889 6.05555L1 3.88889V8.22222ZM1 14L3.88889 11.8333L1 9.66666V14ZM7.74072 8.22222L10.6296 6.05555L7.74072 3.88889V8.22222ZM14 3.16667L11.1111 5.33333V1L14 3.16667ZM11.1111 11.1111L14 8.94444L11.1111 6.77777V11.1111ZM3.88889 11.1111L1 8.94444L3.88889 6.77777V11.1111ZM4.37036 6.05555L7.25925 8.22222V3.88889L4.37036 6.05555ZM3.88889 5.33333L1 3.16667L3.88889 1V5.33333ZM7.74072 3.16667L10.6296 5.33333V1L7.74072 3.16667ZM14 8.22222L11.1111 6.05555L14 3.88889V8.22222ZM11.1111 11.8333L14 14V9.66666L11.1111 11.8333Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3e = [\"color\"];\nvar MoonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3e);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3f = [\"color\"];\nvar MoveIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3f);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.81819 0.93179C7.64245 0.756054 7.35753 0.756054 7.18179 0.93179L5.43179 2.68179C5.25605 2.85753 5.25605 3.14245 5.43179 3.31819C5.60753 3.49392 5.89245 3.49392 6.06819 3.31819L6.99999 2.38638V5.49999C6.99999 5.77613 7.22385 5.99999 7.49999 5.99999C7.77613 5.99999 7.99999 5.77613 7.99999 5.49999V2.38638L8.93179 3.31819C9.10753 3.49392 9.39245 3.49392 9.56819 3.31819C9.74392 3.14245 9.74392 2.85753 9.56819 2.68179L7.81819 0.93179ZM7.99999 9.49999C7.99999 9.22385 7.77613 8.99999 7.49999 8.99999C7.22385 8.99999 6.99999 9.22385 6.99999 9.49999V12.6136L6.06819 11.6818C5.89245 11.5061 5.60753 11.5061 5.43179 11.6818C5.25605 11.8575 5.25605 12.1424 5.43179 12.3182L7.18179 14.0682C7.35753 14.2439 7.64245 14.2439 7.81819 14.0682L9.56819 12.3182C9.74392 12.1424 9.74392 11.8575 9.56819 11.6818C9.39245 11.5061 9.10753 11.5061 8.93179 11.6818L7.99999 12.6136V9.49999ZM8.99999 7.49999C8.99999 7.22385 9.22385 6.99999 9.49999 6.99999H12.6136L11.6818 6.06819C11.5061 5.89245 11.5061 5.60753 11.6818 5.43179C11.8575 5.25605 12.1424 5.25605 12.3182 5.43179L14.0682 7.18179C14.2439 7.35753 14.2439 7.64245 14.0682 7.81819L12.3182 9.56819C12.1424 9.74392 11.8575 9.74392 11.6818 9.56819C11.5061 9.39245 11.5061 9.10753 11.6818 8.93179L12.6136 7.99999H9.49999C9.22385 7.99999 8.99999 7.77613 8.99999 7.49999ZM3.31819 6.06819L2.38638 6.99999H5.49999C5.77613 6.99999 5.99999 7.22385 5.99999 7.49999C5.99999 7.77613 5.77613 7.99999 5.49999 7.99999H2.38638L3.31819 8.93179C3.49392 9.10753 3.49392 9.39245 3.31819 9.56819C3.14245 9.74392 2.85753 9.74392 2.68179 9.56819L0.93179 7.81819C0.756054 7.64245 0.756054 7.35753 0.93179 7.18179L2.68179 5.43179C2.85753 5.25605 3.14245 5.25605 3.31819 5.43179C3.49392 5.60753 3.49392 5.89245 3.31819 6.06819Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3g = [\"color\"];\nvar NotionLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3g);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.25781 3.11684C3.67771 3.45796 3.83523 3.43193 4.62369 3.37933L12.0571 2.93299C12.2147 2.93299 12.0836 2.77571 12.0311 2.74957L10.7965 1.85711C10.56 1.67347 10.2448 1.46315 9.64083 1.51576L2.44308 2.04074C2.18059 2.06677 2.12815 2.19801 2.2327 2.30322L3.25781 3.11684ZM3.7041 4.84917V12.6704C3.7041 13.0907 3.91415 13.248 4.38693 13.222L12.5562 12.7493C13.0292 12.7233 13.0819 12.4341 13.0819 12.0927V4.32397C13.0819 3.98306 12.9508 3.79921 12.6612 3.82545L4.12422 4.32397C3.80918 4.35044 3.7041 4.50803 3.7041 4.84917ZM11.7688 5.26872C11.8212 5.50518 11.7688 5.74142 11.5319 5.76799L11.1383 5.84641V11.6205C10.7965 11.8042 10.4814 11.9092 10.2188 11.9092C9.79835 11.9092 9.69305 11.7779 9.37812 11.3844L6.80345 7.34249V11.2532L7.61816 11.437C7.61816 11.437 7.61816 11.9092 6.96086 11.9092L5.14879 12.0143C5.09615 11.9092 5.14879 11.647 5.33259 11.5944L5.80546 11.4634V6.29276L5.1489 6.24015C5.09625 6.00369 5.22739 5.66278 5.5954 5.63631L7.53935 5.50528L10.2188 9.5998V5.97765L9.53564 5.89924C9.4832 5.61018 9.69305 5.40028 9.95576 5.37425L11.7688 5.26872ZM1.83874 1.33212L9.32557 0.780787C10.245 0.701932 10.4815 0.754753 11.0594 1.17452L13.4492 2.85424C13.8436 3.14309 13.975 3.22173 13.975 3.53661V12.7493C13.975 13.3266 13.7647 13.6681 13.0293 13.7203L4.33492 14.2454C3.78291 14.2717 3.52019 14.193 3.23111 13.8253L1.47116 11.5419C1.1558 11.1216 1.02466 10.8071 1.02466 10.4392V2.25041C1.02466 1.77825 1.23504 1.38441 1.83874 1.33212Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$3h = [\"color\"];\nvar OpacityIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3h);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 1.5C4.5 4.25 3 6.5 3 9C3 11.4853 5.01472 13.5 7.5 13.5C9.98528 13.5 12 11.4853 12 9C12 6.5 10.5 4.25 7.5 1.5ZM11 9C11 7.11203 9.97315 5.27195 7.5 2.87357C5.02686 5.27195 4 7.11203 4 9C4 10.933 5.567 12.5 7.5 12.5C9.433 12.5 11 10.933 11 9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3i = [\"color\"];\nvar OpenInNewWindowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3i);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12 13C12.5523 13 13 12.5523 13 12V3C13 2.44771 12.5523 2 12 2H3C2.44771 2 2 2.44771 2 3V6.5C2 6.77614 2.22386 7 2.5 7C2.77614 7 3 6.77614 3 6.5V3H12V12H8.5C8.22386 12 8 12.2239 8 12.5C8 12.7761 8.22386 13 8.5 13H12ZM9 6.5C9 6.5001 9 6.50021 9 6.50031V6.50035V9.5C9 9.77614 8.77614 10 8.5 10C8.22386 10 8 9.77614 8 9.5V7.70711L2.85355 12.8536C2.65829 13.0488 2.34171 13.0488 2.14645 12.8536C1.95118 12.6583 1.95118 12.3417 2.14645 12.1464L7.29289 7H5.5C5.22386 7 5 6.77614 5 6.5C5 6.22386 5.22386 6 5.5 6H8.5C8.56779 6 8.63244 6.01349 8.69139 6.03794C8.74949 6.06198 8.80398 6.09744 8.85143 6.14433C8.94251 6.23434 8.9992 6.35909 8.99999 6.49708L8.99999 6.49738\",\n    fill: color\n  }));\n});\n\nvar _excluded$3j = [\"color\"];\nvar OverlineIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3j);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.49985 1.10001C3.27894 1.10001 3.09985 1.27909 3.09985 1.50001C3.09985 1.72092 3.27894 1.90001 3.49985 1.90001H11.4999C11.7208 1.90001 11.8999 1.72092 11.8999 1.50001C11.8999 1.27909 11.7208 1.10001 11.4999 1.10001H3.49985ZM4.99995 4.25001C4.99995 3.97387 4.77609 3.75001 4.49995 3.75001C4.22381 3.75001 3.99995 3.97387 3.99995 4.25001V9.55001C3.99995 11.483 5.56695 13.05 7.49995 13.05C9.43295 13.05 11 11.483 11 9.55001V4.25001C11 3.97387 10.7761 3.75001 10.5 3.75001C10.2238 3.75001 9.99995 3.97387 9.99995 4.25001V9.55001C9.99995 10.9307 8.88066 12.05 7.49995 12.05C6.11924 12.05 4.99995 10.9307 4.99995 9.55001V4.25001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3k = [\"color\"];\nvar PaddingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3k);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.85714 2H12.1429C12.6162 2 13 2.38376 13 2.85714V12.1429C13 12.6162 12.6162 13 12.1429 13H2.85714C2.38376 13 2 12.6162 2 12.1429V2.85714C2 2.38376 2.38376 2 2.85714 2ZM1 2.85714C1 1.83147 1.83147 1 2.85714 1H12.1429C13.1685 1 14 1.83147 14 2.85714V12.1429C14 13.1685 13.1685 14 12.1429 14H2.85714C1.83147 14 1 13.1685 1 12.1429V2.85714ZM7.49988 5.00012C7.77602 5.00012 7.99988 4.77626 7.99988 4.50012C7.99988 4.22398 7.77602 4.00012 7.49988 4.00012C7.22374 4.00012 6.99988 4.22398 6.99988 4.50012C6.99988 4.77626 7.22374 5.00012 7.49988 5.00012ZM4.49988 11.0001C4.77602 11.0001 4.99988 10.7763 4.99988 10.5001C4.99988 10.224 4.77602 10.0001 4.49988 10.0001C4.22374 10.0001 3.99988 10.224 3.99988 10.5001C3.99988 10.7763 4.22374 11.0001 4.49988 11.0001ZM4.99988 7.50012C4.99988 7.77626 4.77602 8.00012 4.49988 8.00012C4.22374 8.00012 3.99988 7.77626 3.99988 7.50012C3.99988 7.22398 4.22374 7.00012 4.49988 7.00012C4.77602 7.00012 4.99988 7.22398 4.99988 7.50012ZM4.49988 5.00012C4.77602 5.00012 4.99988 4.77626 4.99988 4.50012C4.99988 4.22398 4.77602 4.00012 4.49988 4.00012C4.22374 4.00012 3.99988 4.22398 3.99988 4.50012C3.99988 4.77626 4.22374 5.00012 4.49988 5.00012ZM10.9999 10.5001C10.9999 10.7763 10.776 11.0001 10.4999 11.0001C10.2237 11.0001 9.99988 10.7763 9.99988 10.5001C9.99988 10.224 10.2237 10.0001 10.4999 10.0001C10.776 10.0001 10.9999 10.224 10.9999 10.5001ZM10.4999 8.00012C10.776 8.00012 10.9999 7.77626 10.9999 7.50012C10.9999 7.22398 10.776 7.00012 10.4999 7.00012C10.2237 7.00012 9.99988 7.22398 9.99988 7.50012C9.99988 7.77626 10.2237 8.00012 10.4999 8.00012ZM10.9999 4.50012C10.9999 4.77626 10.776 5.00012 10.4999 5.00012C10.2237 5.00012 9.99988 4.77626 9.99988 4.50012C9.99988 4.22398 10.2237 4.00012 10.4999 4.00012C10.776 4.00012 10.9999 4.22398 10.9999 4.50012ZM7.49988 11.0001C7.77602 11.0001 7.99988 10.7763 7.99988 10.5001C7.99988 10.224 7.77602 10.0001 7.49988 10.0001C7.22374 10.0001 6.99988 10.224 6.99988 10.5001C6.99988 10.7763 7.22374 11.0001 7.49988 11.0001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3l = [\"color\"];\nvar PaperPlaneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3l);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.20308 1.04312C1.00481 0.954998 0.772341 1.0048 0.627577 1.16641C0.482813 1.32802 0.458794 1.56455 0.568117 1.75196L3.92115 7.50002L0.568117 13.2481C0.458794 13.4355 0.482813 13.672 0.627577 13.8336C0.772341 13.9952 1.00481 14.045 1.20308 13.9569L14.7031 7.95693C14.8836 7.87668 15 7.69762 15 7.50002C15 7.30243 14.8836 7.12337 14.7031 7.04312L1.20308 1.04312ZM4.84553 7.10002L2.21234 2.586L13.2689 7.50002L2.21234 12.414L4.84552 7.90002H9C9.22092 7.90002 9.4 7.72094 9.4 7.50002C9.4 7.27911 9.22092 7.10002 9 7.10002H4.84553Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3m = [\"color\"];\nvar PauseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3m);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.04995 2.74998C6.04995 2.44623 5.80371 2.19998 5.49995 2.19998C5.19619 2.19998 4.94995 2.44623 4.94995 2.74998V12.25C4.94995 12.5537 5.19619 12.8 5.49995 12.8C5.80371 12.8 6.04995 12.5537 6.04995 12.25V2.74998ZM10.05 2.74998C10.05 2.44623 9.80371 2.19998 9.49995 2.19998C9.19619 2.19998 8.94995 2.44623 8.94995 2.74998V12.25C8.94995 12.5537 9.19619 12.8 9.49995 12.8C9.80371 12.8 10.05 12.5537 10.05 12.25V2.74998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3n = [\"color\"];\nvar Pencil1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3n);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645ZM4.42166 9.28547L11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3o = [\"color\"];\nvar Pencil2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3o);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3p = [\"color\"];\nvar PersonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3p);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 0.875C5.49797 0.875 3.875 2.49797 3.875 4.5C3.875 6.15288 4.98124 7.54738 6.49373 7.98351C5.2997 8.12901 4.27557 8.55134 3.50407 9.31167C2.52216 10.2794 2.02502 11.72 2.02502 13.5999C2.02502 13.8623 2.23769 14.0749 2.50002 14.0749C2.76236 14.0749 2.97502 13.8623 2.97502 13.5999C2.97502 11.8799 3.42786 10.7206 4.17091 9.9883C4.91536 9.25463 6.02674 8.87499 7.49995 8.87499C8.97317 8.87499 10.0846 9.25463 10.8291 9.98831C11.5721 10.7206 12.025 11.8799 12.025 13.5999C12.025 13.8623 12.2376 14.0749 12.5 14.0749C12.7623 14.075 12.975 13.8623 12.975 13.6C12.975 11.72 12.4778 10.2794 11.4959 9.31166C10.7244 8.55135 9.70025 8.12903 8.50625 7.98352C10.0187 7.5474 11.125 6.15289 11.125 4.5C11.125 2.49797 9.50203 0.875 7.5 0.875ZM4.825 4.5C4.825 3.02264 6.02264 1.825 7.5 1.825C8.97736 1.825 10.175 3.02264 10.175 4.5C10.175 5.97736 8.97736 7.175 7.5 7.175C6.02264 7.175 4.825 5.97736 4.825 4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3q = [\"color\"];\nvar PieChartIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.85001 7.50043C1.85001 4.37975 4.37963 1.85001 7.50001 1.85001C10.6204 1.85001 13.15 4.37975 13.15 7.50043C13.15 10.6211 10.6204 13.1509 7.50001 13.1509C4.37963 13.1509 1.85001 10.6211 1.85001 7.50043ZM7.50001 0.850006C3.82728 0.850006 0.850006 3.82753 0.850006 7.50043C0.850006 11.1733 3.82728 14.1509 7.50001 14.1509C11.1727 14.1509 14.15 11.1733 14.15 7.50043C14.15 3.82753 11.1727 0.850006 7.50001 0.850006ZM7.00001 8.00001V3.12811C7.16411 3.10954 7.33094 3.10001 7.50001 3.10001C9.93006 3.10001 11.9 5.07014 11.9 7.50043C11.9 7.66935 11.8905 7.83604 11.872 8.00001H7.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3r = [\"color\"];\nvar PilcrowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3r);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3 5.5C3 7.983 4.99169 9 7 9V12.5C7 12.7761 7.22386 13 7.5 13C7.77614 13 8 12.7761 8 12.5V9V3.1H9V12.5C9 12.7761 9.22386 13 9.5 13C9.77614 13 10 12.7761 10 12.5V3.1H11.5C11.8038 3.1 12.05 2.85376 12.05 2.55C12.05 2.24624 11.8038 2 11.5 2H9.5H8H7.5H7C4.99169 2 3 3.017 3 5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3s = [\"color\"];\nvar PinBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3s);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.5 13.95C13.7485 13.95 13.95 13.7485 13.95 13.5C13.95 13.2514 13.7485 13.05 13.5 13.05L1.49995 13.05C1.25142 13.05 1.04995 13.2514 1.04995 13.5C1.04995 13.7485 1.25142 13.95 1.49995 13.95L13.5 13.95ZM11.0681 7.5683C11.2439 7.39257 11.2439 7.10764 11.0681 6.93191C10.8924 6.75617 10.6075 6.75617 10.4317 6.93191L7.94993 9.41371L7.94993 1.49998C7.94993 1.25146 7.74846 1.04998 7.49993 1.04998C7.2514 1.04998 7.04993 1.25146 7.04993 1.49998L7.04993 9.41371L4.56813 6.93191C4.39239 6.75617 4.10746 6.75617 3.93173 6.93191C3.75599 7.10764 3.75599 7.39257 3.93173 7.5683L7.18173 10.8183C7.35746 10.994 7.64239 10.994 7.81812 10.8183L11.0681 7.5683Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3t = [\"color\"];\nvar PinLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3t);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.05005 13.5C2.05005 13.7485 2.25152 13.95 2.50005 13.95C2.74858 13.95 2.95005 13.7485 2.95005 13.5L2.95005 1.49995C2.95005 1.25142 2.74858 1.04995 2.50005 1.04995C2.25152 1.04995 2.05005 1.25142 2.05005 1.49995L2.05005 13.5ZM8.4317 11.0681C8.60743 11.2439 8.89236 11.2439 9.06809 11.0681C9.24383 10.8924 9.24383 10.6075 9.06809 10.4317L6.58629 7.94993L14.5 7.94993C14.7485 7.94993 14.95 7.74846 14.95 7.49993C14.95 7.2514 14.7485 7.04993 14.5 7.04993L6.58629 7.04993L9.06809 4.56813C9.24383 4.39239 9.24383 4.10746 9.06809 3.93173C8.89236 3.75599 8.60743 3.75599 8.4317 3.93173L5.1817 7.18173C5.00596 7.35746 5.00596 7.64239 5.1817 7.81812L8.4317 11.0681Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3u = [\"color\"];\nvar PinRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3u);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.95 1.50005C12.95 1.25152 12.7485 1.05005 12.5 1.05005C12.2514 1.05005 12.05 1.25152 12.05 1.50005L12.05 13.5C12.05 13.7486 12.2514 13.95 12.5 13.95C12.7485 13.95 12.95 13.7486 12.95 13.5L12.95 1.50005ZM6.5683 3.93188C6.39257 3.75614 6.10764 3.75614 5.93191 3.93188C5.75617 4.10761 5.75617 4.39254 5.93191 4.56827L8.41371 7.05007L0.499984 7.05007C0.251456 7.05007 0.0499847 7.25155 0.0499847 7.50007C0.0499846 7.7486 0.251457 7.95007 0.499984 7.95007L8.41371 7.95007L5.93191 10.4319C5.75617 10.6076 5.75617 10.8925 5.93191 11.0683C6.10764 11.244 6.39257 11.244 6.56831 11.0683L9.8183 7.81827C9.99404 7.64254 9.99404 7.35761 9.8183 7.18188L6.5683 3.93188Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3v = [\"color\"];\nvar PinTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3v);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.50005 1.05005C1.25152 1.05005 1.05005 1.25152 1.05005 1.50005C1.05005 1.74858 1.25152 1.95005 1.50005 1.95005L13.5 1.95005C13.7486 1.95005 13.95 1.74858 13.95 1.50005C13.95 1.25152 13.7486 1.05005 13.5 1.05005H1.50005ZM3.93188 7.43169C3.75614 7.60743 3.75614 7.89236 3.93188 8.06809C4.10761 8.24383 4.39254 8.24383 4.56827 8.06809L7.05007 5.58629V13.5C7.05007 13.7485 7.25155 13.95 7.50007 13.95C7.7486 13.95 7.95007 13.7485 7.95007 13.5L7.95007 5.58629L10.4319 8.06809C10.6076 8.24383 10.8925 8.24383 11.0683 8.06809C11.244 7.89235 11.244 7.60743 11.0683 7.43169L7.81827 4.18169C7.64254 4.00596 7.35761 4.00596 7.18188 4.18169L3.93188 7.43169Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3w = [\"color\"];\nvar PlayIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3w);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.24182 2.32181C3.3919 2.23132 3.5784 2.22601 3.73338 2.30781L12.7334 7.05781C12.8974 7.14436 13 7.31457 13 7.5C13 7.68543 12.8974 7.85564 12.7334 7.94219L3.73338 12.6922C3.5784 12.774 3.3919 12.7687 3.24182 12.6782C3.09175 12.5877 3 12.4252 3 12.25V2.75C3 2.57476 3.09175 2.4123 3.24182 2.32181ZM4 3.57925V11.4207L11.4288 7.5L4 3.57925Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3x = [\"color\"];\nvar PlusIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3x);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8 2.75C8 2.47386 7.77614 2.25 7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3y = [\"color\"];\nvar PlusCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM7.50003 4C7.77617 4 8.00003 4.22386 8.00003 4.5V7H10.5C10.7762 7 11 7.22386 11 7.5C11 7.77614 10.7762 8 10.5 8H8.00003V10.5C8.00003 10.7761 7.77617 11 7.50003 11C7.22389 11 7.00003 10.7761 7.00003 10.5V8H4.50003C4.22389 8 4.00003 7.77614 4.00003 7.5C4.00003 7.22386 4.22389 7 4.50003 7H7.00003V4.5C7.00003 4.22386 7.22389 4 7.50003 4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3z = [\"color\"];\nvar QuestionMarkIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.07505 4.10001C5.07505 2.91103 6.25727 1.92502 7.50005 1.92502C8.74283 1.92502 9.92505 2.91103 9.92505 4.10001C9.92505 5.19861 9.36782 5.71436 8.61854 6.37884L8.58757 6.4063C7.84481 7.06467 6.92505 7.87995 6.92505 9.5C6.92505 9.81757 7.18248 10.075 7.50005 10.075C7.81761 10.075 8.07505 9.81757 8.07505 9.5C8.07505 8.41517 8.62945 7.90623 9.38156 7.23925L9.40238 7.22079C10.1496 6.55829 11.075 5.73775 11.075 4.10001C11.075 2.12757 9.21869 0.775024 7.50005 0.775024C5.7814 0.775024 3.92505 2.12757 3.92505 4.10001C3.92505 4.41758 4.18249 4.67501 4.50005 4.67501C4.81761 4.67501 5.07505 4.41758 5.07505 4.10001ZM7.50005 13.3575C7.9833 13.3575 8.37505 12.9657 8.37505 12.4825C8.37505 11.9992 7.9833 11.6075 7.50005 11.6075C7.0168 11.6075 6.62505 11.9992 6.62505 12.4825C6.62505 12.9657 7.0168 13.3575 7.50005 13.3575Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3A = [\"color\"];\nvar QuestionMarkCircledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3A);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49972C0.877075 3.84204 3.84222 0.876892 7.49991 0.876892C11.1576 0.876892 14.1227 3.84204 14.1227 7.49972C14.1227 11.1574 11.1576 14.1226 7.49991 14.1226C3.84222 14.1226 0.877075 11.1574 0.877075 7.49972ZM7.49991 1.82689C4.36689 1.82689 1.82708 4.36671 1.82708 7.49972C1.82708 10.6327 4.36689 13.1726 7.49991 13.1726C10.6329 13.1726 13.1727 10.6327 13.1727 7.49972C13.1727 4.36671 10.6329 1.82689 7.49991 1.82689ZM8.24993 10.5C8.24993 10.9142 7.91414 11.25 7.49993 11.25C7.08571 11.25 6.74993 10.9142 6.74993 10.5C6.74993 10.0858 7.08571 9.75 7.49993 9.75C7.91414 9.75 8.24993 10.0858 8.24993 10.5ZM6.05003 6.25C6.05003 5.57211 6.63511 4.925 7.50003 4.925C8.36496 4.925 8.95003 5.57211 8.95003 6.25C8.95003 6.74118 8.68002 6.99212 8.21447 7.27494C8.16251 7.30651 8.10258 7.34131 8.03847 7.37854L8.03841 7.37858C7.85521 7.48497 7.63788 7.61119 7.47449 7.73849C7.23214 7.92732 6.95003 8.23198 6.95003 8.7C6.95004 9.00376 7.19628 9.25 7.50004 9.25C7.8024 9.25 8.04778 9.00601 8.05002 8.70417L8.05056 8.7033C8.05924 8.6896 8.08493 8.65735 8.15058 8.6062C8.25207 8.52712 8.36508 8.46163 8.51567 8.37436L8.51571 8.37433C8.59422 8.32883 8.68296 8.27741 8.78559 8.21506C9.32004 7.89038 10.05 7.35382 10.05 6.25C10.05 4.92789 8.93511 3.825 7.50003 3.825C6.06496 3.825 4.95003 4.92789 4.95003 6.25C4.95003 6.55376 5.19628 6.8 5.50003 6.8C5.80379 6.8 6.05003 6.55376 6.05003 6.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3B = [\"color\"];\nvar QuoteIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3B);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9.42503 3.44136C10.0561 3.23654 10.7837 3.2402 11.3792 3.54623C12.7532 4.25224 13.3477 6.07191 12.7946 8C12.5465 8.8649 12.1102 9.70472 11.1861 10.5524C10.262 11.4 8.98034 11.9 8.38571 11.9C8.17269 11.9 8 11.7321 8 11.525C8 11.3179 8.17644 11.15 8.38571 11.15C9.06497 11.15 9.67189 10.7804 10.3906 10.236C10.9406 9.8193 11.3701 9.28633 11.608 8.82191C12.0628 7.93367 12.0782 6.68174 11.3433 6.34901C10.9904 6.73455 10.5295 6.95946 9.97725 6.95946C8.7773 6.95946 8.0701 5.99412 8.10051 5.12009C8.12957 4.28474 8.66032 3.68954 9.42503 3.44136ZM3.42503 3.44136C4.05614 3.23654 4.78366 3.2402 5.37923 3.54623C6.7532 4.25224 7.34766 6.07191 6.79462 8C6.54654 8.8649 6.11019 9.70472 5.1861 10.5524C4.26201 11.4 2.98034 11.9 2.38571 11.9C2.17269 11.9 2 11.7321 2 11.525C2 11.3179 2.17644 11.15 2.38571 11.15C3.06497 11.15 3.67189 10.7804 4.39058 10.236C4.94065 9.8193 5.37014 9.28633 5.60797 8.82191C6.06282 7.93367 6.07821 6.68174 5.3433 6.34901C4.99037 6.73455 4.52948 6.95946 3.97725 6.95946C2.7773 6.95946 2.0701 5.99412 2.10051 5.12009C2.12957 4.28474 2.66032 3.68954 3.42503 3.44136Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3C = [\"color\"];\nvar RadiobuttonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3C);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 11.1575 3.84216 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1575 0.877045 7.49985 0.877045ZM1.82701 7.49988C1.82701 4.36686 4.36683 1.82704 7.49985 1.82704C10.6328 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6328 13.1727 7.49985 13.1727C4.36683 13.1727 1.82701 10.6329 1.82701 7.49988ZM7.49999 9.49999C8.60456 9.49999 9.49999 8.60456 9.49999 7.49999C9.49999 6.39542 8.60456 5.49999 7.49999 5.49999C6.39542 5.49999 5.49999 6.39542 5.49999 7.49999C5.49999 8.60456 6.39542 9.49999 7.49999 9.49999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3D = [\"color\"];\nvar ReaderIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3D);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.2 1H4.17741H4.1774C3.86936 0.999988 3.60368 0.999978 3.38609 1.02067C3.15576 1.04257 2.92825 1.09113 2.71625 1.22104C2.51442 1.34472 2.34473 1.51442 2.22104 1.71625C2.09113 1.92825 2.04257 2.15576 2.02067 2.38609C1.99998 2.60367 1.99999 2.86935 2 3.17738V3.1774V3.2V11.8V11.8226V11.8226C1.99999 12.1307 1.99998 12.3963 2.02067 12.6139C2.04257 12.8442 2.09113 13.0717 2.22104 13.2837C2.34473 13.4856 2.51442 13.6553 2.71625 13.779C2.92825 13.9089 3.15576 13.9574 3.38609 13.9793C3.60368 14 3.86937 14 4.17741 14H4.2H10.8H10.8226C11.1306 14 11.3963 14 11.6139 13.9793C11.8442 13.9574 12.0717 13.9089 12.2837 13.779C12.4856 13.6553 12.6553 13.4856 12.779 13.2837C12.9089 13.0717 12.9574 12.8442 12.9793 12.6139C13 12.3963 13 12.1306 13 11.8226V11.8V3.2V3.17741C13 2.86936 13 2.60368 12.9793 2.38609C12.9574 2.15576 12.9089 1.92825 12.779 1.71625C12.6553 1.51442 12.4856 1.34472 12.2837 1.22104C12.0717 1.09113 11.8442 1.04257 11.6139 1.02067C11.3963 0.999978 11.1306 0.999988 10.8226 1H10.8H4.2ZM3.23875 2.07368C3.26722 2.05623 3.32362 2.03112 3.48075 2.01618C3.64532 2.00053 3.86298 2 4.2 2H10.8C11.137 2 11.3547 2.00053 11.5193 2.01618C11.6764 2.03112 11.7328 2.05623 11.7613 2.07368C11.8285 2.11491 11.8851 2.17147 11.9263 2.23875C11.9438 2.26722 11.9689 2.32362 11.9838 2.48075C11.9995 2.64532 12 2.86298 12 3.2V11.8C12 12.137 11.9995 12.3547 11.9838 12.5193C11.9689 12.6764 11.9438 12.7328 11.9263 12.7613C11.8851 12.8285 11.8285 12.8851 11.7613 12.9263C11.7328 12.9438 11.6764 12.9689 11.5193 12.9838C11.3547 12.9995 11.137 13 10.8 13H4.2C3.86298 13 3.64532 12.9995 3.48075 12.9838C3.32362 12.9689 3.26722 12.9438 3.23875 12.9263C3.17147 12.8851 3.11491 12.8285 3.07368 12.7613C3.05624 12.7328 3.03112 12.6764 3.01618 12.5193C3.00053 12.3547 3 12.137 3 11.8V3.2C3 2.86298 3.00053 2.64532 3.01618 2.48075C3.03112 2.32362 3.05624 2.26722 3.07368 2.23875C3.11491 2.17147 3.17147 2.11491 3.23875 2.07368ZM5 10C4.72386 10 4.5 10.2239 4.5 10.5C4.5 10.7761 4.72386 11 5 11H8C8.27614 11 8.5 10.7761 8.5 10.5C8.5 10.2239 8.27614 10 8 10H5ZM4.5 7.5C4.5 7.22386 4.72386 7 5 7H10C10.2761 7 10.5 7.22386 10.5 7.5C10.5 7.77614 10.2761 8 10 8H5C4.72386 8 4.5 7.77614 4.5 7.5ZM5 4C4.72386 4 4.5 4.22386 4.5 4.5C4.5 4.77614 4.72386 5 5 5H10C10.2761 5 10.5 4.77614 10.5 4.5C10.5 4.22386 10.2761 4 10 4H5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3E = [\"color\"];\nvar ReloadIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3E);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.84998 7.49998C1.84998 4.66458 4.05979 1.84998 7.49998 1.84998C10.2783 1.84998 11.6515 3.9064 12.2367 5H10.5C10.2239 5 10 5.22386 10 5.5C10 5.77614 10.2239 6 10.5 6H13.5C13.7761 6 14 5.77614 14 5.5V2.5C14 2.22386 13.7761 2 13.5 2C13.2239 2 13 2.22386 13 2.5V4.31318C12.2955 3.07126 10.6659 0.849976 7.49998 0.849976C3.43716 0.849976 0.849976 4.18537 0.849976 7.49998C0.849976 10.8146 3.43716 14.15 7.49998 14.15C9.44382 14.15 11.0622 13.3808 12.2145 12.2084C12.8315 11.5806 13.3133 10.839 13.6418 10.0407C13.7469 9.78536 13.6251 9.49315 13.3698 9.38806C13.1144 9.28296 12.8222 9.40478 12.7171 9.66014C12.4363 10.3425 12.0251 10.9745 11.5013 11.5074C10.5295 12.4963 9.16504 13.15 7.49998 13.15C4.05979 13.15 1.84998 10.3354 1.84998 7.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3F = [\"color\"];\nvar ResetIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3F);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.85355 2.14645C5.04882 2.34171 5.04882 2.65829 4.85355 2.85355L3.70711 4H9C11.4853 4 13.5 6.01472 13.5 8.5C13.5 10.9853 11.4853 13 9 13H5C4.72386 13 4.5 12.7761 4.5 12.5C4.5 12.2239 4.72386 12 5 12H9C10.933 12 12.5 10.433 12.5 8.5C12.5 6.567 10.933 5 9 5H3.70711L4.85355 6.14645C5.04882 6.34171 5.04882 6.65829 4.85355 6.85355C4.65829 7.04882 4.34171 7.04882 4.14645 6.85355L2.14645 4.85355C1.95118 4.65829 1.95118 4.34171 2.14645 4.14645L4.14645 2.14645C4.34171 1.95118 4.65829 1.95118 4.85355 2.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3G = [\"color\"];\nvar ResumeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3G);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.04995 2.74995C3.04995 2.44619 2.80371 2.19995 2.49995 2.19995C2.19619 2.19995 1.94995 2.44619 1.94995 2.74995V12.25C1.94995 12.5537 2.19619 12.8 2.49995 12.8C2.80371 12.8 3.04995 12.5537 3.04995 12.25V2.74995ZM5.73333 2.30776C5.57835 2.22596 5.39185 2.23127 5.24177 2.32176C5.0917 2.41225 4.99995 2.57471 4.99995 2.74995V12.25C4.99995 12.4252 5.0917 12.5877 5.24177 12.6781C5.39185 12.7686 5.57835 12.7739 5.73333 12.6921L14.7333 7.94214C14.8973 7.85559 15 7.68539 15 7.49995C15 7.31452 14.8973 7.14431 14.7333 7.05776L5.73333 2.30776ZM5.99995 11.4207V3.5792L13.4287 7.49995L5.99995 11.4207Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3H = [\"color\"];\nvar RocketIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3H);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.85357 3.85355L7.65355 3.05353C8.2981 2.40901 9.42858 1.96172 10.552 1.80125C11.1056 1.72217 11.6291 1.71725 12.0564 1.78124C12.4987 1.84748 12.7698 1.97696 12.8965 2.10357C13.0231 2.23018 13.1526 2.50125 13.2188 2.94357C13.2828 3.37086 13.2779 3.89439 13.1988 4.44801C13.0383 5.57139 12.591 6.70188 11.9464 7.34645L7.49999 11.7929L6.35354 10.6465C6.15827 10.4512 5.84169 10.4512 5.64643 10.6465C5.45117 10.8417 5.45117 11.1583 5.64643 11.3536L7.14644 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L8.40073 12.3064L9.57124 14.2572C9.65046 14.3893 9.78608 14.4774 9.9389 14.4963C10.0917 14.5151 10.2447 14.4624 10.3535 14.3536L12.3535 12.3536C12.4648 12.2423 12.5172 12.0851 12.495 11.9293L12.0303 8.67679L12.6536 8.05355C13.509 7.19808 14.0117 5.82855 14.1887 4.58943C14.2784 3.9618 14.2891 3.33847 14.2078 2.79546C14.1287 2.26748 13.9519 1.74482 13.6035 1.39645C13.2552 1.04809 12.7325 0.871332 12.2045 0.792264C11.6615 0.710945 11.0382 0.721644 10.4105 0.8113C9.17143 0.988306 7.80189 1.491 6.94644 2.34642L6.32322 2.96968L3.07071 2.50504C2.91492 2.48278 2.75773 2.53517 2.64645 2.64646L0.646451 4.64645C0.537579 4.75533 0.484938 4.90829 0.50375 5.0611C0.522563 5.21391 0.61073 5.34954 0.742757 5.42876L2.69364 6.59928L2.14646 7.14645C2.0527 7.24022 2.00002 7.3674 2.00002 7.50001C2.00002 7.63261 2.0527 7.75979 2.14646 7.85356L3.64647 9.35356C3.84173 9.54883 4.15831 9.54883 4.35357 9.35356C4.54884 9.1583 4.54884 8.84172 4.35357 8.64646L3.20712 7.50001L3.85357 6.85356L6.85357 3.85355ZM10.0993 13.1936L9.12959 11.5775L11.1464 9.56067L11.4697 11.8232L10.0993 13.1936ZM3.42251 5.87041L5.43935 3.85356L3.17678 3.53034L1.80638 4.90074L3.42251 5.87041ZM2.35356 10.3535C2.54882 10.1583 2.54882 9.8417 2.35356 9.64644C2.1583 9.45118 1.84171 9.45118 1.64645 9.64644L0.646451 10.6464C0.451188 10.8417 0.451188 11.1583 0.646451 11.3535C0.841713 11.5488 1.1583 11.5488 1.35356 11.3535L2.35356 10.3535ZM3.85358 11.8536C4.04884 11.6583 4.04885 11.3417 3.85359 11.1465C3.65833 10.9512 3.34175 10.9512 3.14648 11.1465L1.14645 13.1464C0.95119 13.3417 0.951187 13.6583 1.14645 13.8535C1.34171 14.0488 1.65829 14.0488 1.85355 13.8536L3.85358 11.8536ZM5.35356 13.3535C5.54882 13.1583 5.54882 12.8417 5.35356 12.6464C5.1583 12.4512 4.84171 12.4512 4.64645 12.6464L3.64645 13.6464C3.45119 13.8417 3.45119 14.1583 3.64645 14.3535C3.84171 14.5488 4.1583 14.5488 4.35356 14.3535L5.35356 13.3535ZM9.49997 6.74881C10.1897 6.74881 10.7488 6.1897 10.7488 5.5C10.7488 4.8103 10.1897 4.25118 9.49997 4.25118C8.81026 4.25118 8.25115 4.8103 8.25115 5.5C8.25115 6.1897 8.81026 6.74881 9.49997 6.74881Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3I = [\"color\"];\nvar RotateCounterClockwiseIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3I);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.59664 2.93628C7.76085 3.06401 8.00012 2.94698 8.00012 2.73895V1.99998C9.98143 2 11.1848 2.3637 11.9105 3.08945C12.6363 3.81522 13 5.0186 13 6.99998C13 7.27613 13.2239 7.49998 13.5 7.49998C13.7761 7.49998 14 7.27613 14 6.99998C14 4.9438 13.6325 3.39719 12.6176 2.38234C11.6028 1.36752 10.0562 0.999999 8.00012 0.999984V0.261266C8.00012 0.0532293 7.76085 -0.0637944 7.59664 0.063928L6.00384 1.30277C5.87516 1.40286 5.87516 1.59735 6.00384 1.69744L7.59664 2.93628ZM9.5 5H2.5C2.22386 5 2 5.22386 2 5.5V12.5C2 12.7761 2.22386 13 2.5 13H9.5C9.77614 13 10 12.7761 10 12.5V5.5C10 5.22386 9.77614 5 9.5 5ZM2.5 4C1.67157 4 1 4.67157 1 5.5V12.5C1 13.3284 1.67157 14 2.5 14H9.5C10.3284 14 11 13.3284 11 12.5V5.5C11 4.67157 10.3284 4 9.5 4H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3J = [\"color\"];\nvar RowSpacingIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3J);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.81832 0.68179C7.64258 0.506054 7.35766 0.506054 7.18192 0.68179L5.18192 2.68179C5.00619 2.85753 5.00619 3.14245 5.18192 3.31819C5.35766 3.49392 5.64258 3.49392 5.81832 3.31819L7.05012 2.08638L7.05012 5.50023C7.05012 5.74876 7.25159 5.95023 7.50012 5.95023C7.74865 5.95023 7.95012 5.74876 7.95012 5.50023L7.95012 2.08638L9.18192 3.31819C9.35766 3.49392 9.64258 3.49392 9.81832 3.31819C9.99406 3.14245 9.99406 2.85753 9.81832 2.68179L7.81832 0.68179ZM7.95012 12.9136V9.50023C7.95012 9.2517 7.74865 9.05023 7.50012 9.05023C7.25159 9.05023 7.05012 9.2517 7.05012 9.50023V12.9136L5.81832 11.6818C5.64258 11.5061 5.35766 11.5061 5.18192 11.6818C5.00619 11.8575 5.00619 12.1424 5.18192 12.3182L7.18192 14.3182C7.26632 14.4026 7.38077 14.45 7.50012 14.45C7.61947 14.45 7.73393 14.4026 7.81832 14.3182L9.81832 12.3182C9.99406 12.1424 9.99406 11.8575 9.81832 11.6818C9.64258 11.5061 9.35766 11.5061 9.18192 11.6818L7.95012 12.9136ZM1.49994 7.00017C1.2238 7.00017 0.999939 7.22403 0.999939 7.50017C0.999939 7.77631 1.2238 8.00017 1.49994 8.00017L13.4999 8.00017C13.7761 8.00017 13.9999 7.77631 13.9999 7.50017C13.9999 7.22403 13.7761 7.00017 13.4999 7.00017L1.49994 7.00017Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3K = [\"color\"];\nvar RowsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3K);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14 12.85L1 12.85L1 14.15L14 14.15L14 12.85ZM14 8.85002L1 8.85002L1 10.15L14 10.15L14 8.85002ZM1 4.85003L14 4.85003L14 6.15003L1 6.15002L1 4.85003ZM14 0.850025L1 0.850025L1 2.15002L14 2.15002L14 0.850025Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3L = [\"color\"];\nvar RulerHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3L);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.5 4C0.223858 4 0 4.22386 0 4.5V10.5C0 10.7761 0.223858 11 0.5 11H14.5C14.7761 11 15 10.7761 15 10.5V4.5C15 4.22386 14.7761 4 14.5 4H0.5ZM1 10V5H2.075V7.5C2.075 7.73472 2.26528 7.925 2.5 7.925C2.73472 7.925 2.925 7.73472 2.925 7.5V5H4.075V6.5C4.075 6.73472 4.26528 6.925 4.5 6.925C4.73472 6.925 4.925 6.73472 4.925 6.5V5H6.075V6.5C6.075 6.73472 6.26528 6.925 6.5 6.925C6.73472 6.925 6.925 6.73472 6.925 6.5V5H8.075V7.5C8.075 7.73472 8.26528 7.925 8.5 7.925C8.73472 7.925 8.925 7.73472 8.925 7.5V5H10.075V6.5C10.075 6.73472 10.2653 6.925 10.5 6.925C10.7347 6.925 10.925 6.73472 10.925 6.5V5H12.075V6.5C12.075 6.73472 12.2653 6.925 12.5 6.925C12.7347 6.925 12.925 6.73472 12.925 6.5V5H14V10H1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3M = [\"color\"];\nvar RulerSquareIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3M);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.5 0C0.223858 0 0 0.223858 0 0.5V14.5C0 14.7761 0.223858 15 0.5 15H4.5C4.77614 15 5 14.7761 5 14.5V5H14.5C14.7761 5 15 4.77614 15 4.5V0.5C15 0.223858 14.7761 0 14.5 0H0.5ZM1 4.07505L1 1H4.07502C4.07502 1 4.07502 1 4.07502 1L4.07505 4.07507L1 4.07505ZM0.999997 4.92505L1 14H4V12.925H2.75002C2.5153 12.925 2.32502 12.7348 2.32502 12.5C2.32502 12.2653 2.5153 12.075 2.75002 12.075H4V10.925H2.25002C2.0153 10.925 1.82502 10.7347 1.82502 10.5C1.82502 10.2653 2.0153 10.075 2.25002 10.075H4V8.92504L2.75002 8.92502C2.5153 8.92502 2.32502 8.73474 2.32502 8.50002C2.32503 8.26529 2.51531 8.07502 2.75003 8.07502L4 8.07504V6.92502L2.74999 6.925C2.51527 6.925 2.325 6.73472 2.325 6.5C2.325 6.26528 2.51529 6.075 2.75001 6.075L4 6.07502V4.92507L0.999997 4.92505ZM4.92505 4H6.075V2.75006C6.075 2.51534 6.26528 2.32506 6.5 2.32506C6.73472 2.32506 6.925 2.51534 6.925 2.75006V4H8.07502V2.75005C8.07502 2.51533 8.2653 2.32505 8.50002 2.32505C8.73474 2.32505 8.92502 2.51533 8.92502 2.75005V4H10.0751V2.25005C10.0751 2.01533 10.2653 1.82505 10.5001 1.82505C10.7348 1.82505 10.9251 2.01533 10.9251 2.25005V4H12.0751V2.75005C12.0751 2.51533 12.2654 2.32505 12.5001 2.32505C12.7348 2.32505 12.9251 2.51533 12.9251 2.75005V4H14V1H4.92502L4.92505 4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3N = [\"color\"];\nvar ScissorsIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3N);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.949988 4.48455C0.949988 5.34059 1.64395 6.03455 2.49999 6.03455C3.35603 6.03455 4.04999 5.34059 4.04999 4.48455C4.04999 3.6285 3.35603 2.93455 2.49999 2.93455C1.64395 2.93455 0.949988 3.6285 0.949988 4.48455ZM2.49999 6.93455C1.14689 6.93455 0.0499878 5.83764 0.0499878 4.48455C0.0499878 3.13145 1.14689 2.03455 2.49999 2.03455C3.85309 2.03455 4.94999 3.13145 4.94999 4.48455C4.94999 4.80813 4.88726 5.11707 4.77329 5.39985L5.73655 6.04413C5.72943 6.06656 5.72269 6.08914 5.71635 6.11188L5.56288 6.66186L5.21005 6.89773L4.21554 6.23366C3.77357 6.6672 3.168 6.93455 2.49999 6.93455ZM0.949991 10.5C0.949991 9.64394 1.64395 8.94998 2.49999 8.94998C3.35603 8.94998 4.04999 9.64394 4.04999 10.5C4.04999 11.356 3.35603 12.05 2.49999 12.05C1.64395 12.05 0.949991 11.356 0.949991 10.5ZM2.49999 8.04998C1.14689 8.04998 0.0499908 9.14688 0.0499908 10.5C0.0499908 11.8531 1.14689 12.95 2.49999 12.95C3.85309 12.95 4.94999 11.8531 4.94999 10.5C4.94999 10.1803 4.88877 9.87497 4.77743 9.595L15 2.75737L14.0486 2.85737C12.7077 2.9983 11.4091 3.40895 10.231 4.06461L7.15646 5.77564C6.92307 5.90553 6.75134 6.12339 6.67955 6.38066L6.42653 7.28737L4.22437 8.75957C3.78166 8.32091 3.17246 8.04998 2.49999 8.04998ZM7.14435 9.2149L7.15646 9.22176L10.231 10.9328C11.4091 11.5884 12.7077 11.9991 14.0486 12.14L15 12.24L8.81072 8.1003L7.14435 9.2149Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3O = [\"color\"];\nvar SectionIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3O);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM2 5L2 10H13V5H2ZM2 4C1.44772 4 1 4.44772 1 5V10C1 10.5523 1.44772 11 2 11H13C13.5523 11 14 10.5523 14 10V5C14 4.44772 13.5523 4 13 4H2ZM1.5 14C1.77614 14 2 13.7761 2 13.5C2 13.2239 1.77614 13 1.5 13C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14ZM4 1.5C4 1.77614 3.77614 2 3.5 2C3.22386 2 3 1.77614 3 1.5C3 1.22386 3.22386 1 3.5 1C3.77614 1 4 1.22386 4 1.5ZM3.5 14C3.77614 14 4 13.7761 4 13.5C4 13.2239 3.77614 13 3.5 13C3.22386 13 3 13.2239 3 13.5C3 13.7761 3.22386 14 3.5 14ZM6 1.5C6 1.77614 5.77614 2 5.5 2C5.22386 2 5 1.77614 5 1.5C5 1.22386 5.22386 1 5.5 1C5.77614 1 6 1.22386 6 1.5ZM5.5 14C5.77614 14 6 13.7761 6 13.5C6 13.2239 5.77614 13 5.5 13C5.22386 13 5 13.2239 5 13.5C5 13.7761 5.22386 14 5.5 14ZM8 1.5C8 1.77614 7.77614 2 7.5 2C7.22386 2 7 1.77614 7 1.5C7 1.22386 7.22386 1 7.5 1C7.77614 1 8 1.22386 8 1.5ZM7.5 14C7.77614 14 8 13.7761 8 13.5C8 13.2239 7.77614 13 7.5 13C7.22386 13 7 13.2239 7 13.5C7 13.7761 7.22386 14 7.5 14ZM10 1.5C10 1.77614 9.77614 2 9.5 2C9.22386 2 9 1.77614 9 1.5C9 1.22386 9.22386 1 9.5 1C9.77614 1 10 1.22386 10 1.5ZM9.5 14C9.77614 14 10 13.7761 10 13.5C10 13.2239 9.77614 13 9.5 13C9.22386 13 9 13.2239 9 13.5C9 13.7761 9.22386 14 9.5 14ZM12 1.5C12 1.77614 11.7761 2 11.5 2C11.2239 2 11 1.77614 11 1.5C11 1.22386 11.2239 1 11.5 1C11.7761 1 12 1.22386 12 1.5ZM11.5 14C11.7761 14 12 13.7761 12 13.5C12 13.2239 11.7761 13 11.5 13C11.2239 13 11 13.2239 11 13.5C11 13.7761 11.2239 14 11.5 14ZM14 1.5C14 1.77614 13.7761 2 13.5 2C13.2239 2 13 1.77614 13 1.5C13 1.22386 13.2239 1 13.5 1C13.7761 1 14 1.22386 14 1.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3P = [\"color\"];\nvar SewingPinIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3P);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6 3.5C6 2.67157 6.67157 2 7.5 2C8.32843 2 9 2.67157 9 3.5C9 4.32843 8.32843 5 7.5 5C6.67157 5 6 4.32843 6 3.5ZM8 5.94999C9.14112 5.71836 10 4.70948 10 3.5C10 2.11929 8.88071 1 7.5 1C6.11929 1 5 2.11929 5 3.5C5 4.70948 5.85888 5.71836 7 5.94999V13.5C7 13.7761 7.22386 14 7.5 14C7.77614 14 8 13.7761 8 13.5V5.94999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3Q = [\"color\"];\nvar SewingPinFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3Q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10 3.5C10 4.70948 9.14112 5.71836 8 5.94999V13.5C8 13.7761 7.77614 14 7.5 14C7.22386 14 7 13.7761 7 13.5V5.94999C5.85888 5.71836 5 4.70948 5 3.5C5 2.11929 6.11929 1 7.5 1C8.88071 1 10 2.11929 10 3.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3R = [\"color\"];\nvar ShadowIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3R);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    opacity: \".05\",\n    d: \"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".1\",\n    d: \"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".15\",\n    d: \"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".2\",\n    d: \"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".25\",\n    d: \"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".3\",\n    d: \"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".35\",\n    d: \"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".4\",\n    d: \"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".45\",\n    d: \"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".5\",\n    d: \"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3S = [\"color\"];\nvar ShadowInnerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3S);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    opacity: \".05\",\n    d: \"M12.1619 3.85182C8.35817 4.88918 4.88936 8.358 3.85199 12.1617L3.3696 12.0301C4.45356 8.05564 8.05581 4.45339 12.0303 3.36943L12.1619 3.85182Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".1\",\n    d: \"M11.8807 3.42707C8.03441 4.50542 4.50561 8.03422 3.42726 11.8805L2.94582 11.7456C4.07129 7.73121 7.7314 4.0711 11.7458 2.94563L11.8807 3.42707Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".15\",\n    d: \"M11.5201 3.02556C7.69092 4.16199 4.16779 7.68323 3.02805 11.512L2.54883 11.3694C3.73676 7.37869 7.38659 3.73076 11.3778 2.54623L11.5201 3.02556Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".2\",\n    d: \"M11.0468 2.66169C7.31117 3.87664 3.87918 7.3079 2.66298 11.0434L2.18754 10.8886C3.45324 7.00109 7.00445 3.45062 10.8921 2.18621L11.0468 2.66169Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".25\",\n    d: \"M10.5201 2.32365C6.92091 3.61447 3.62391 6.90876 2.32845 10.5073L1.858 10.338C3.20398 6.59909 6.61155 3.19424 10.3513 1.85301L10.5201 2.32365Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".3\",\n    d: \"M9.90222 2.03122C6.50003 3.39465 3.39968 6.49367 2.03399 9.89551L1.56998 9.70924C2.98651 6.18076 6.18728 2.98133 9.71622 1.5671L9.90222 2.03122Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".35\",\n    d: \"M9.20727 1.78873C6.06136 3.20349 3.21103 6.05203 1.79331 9.19738L1.33747 8.99192C2.80536 5.73528 5.74485 2.7976 9.0022 1.33272L9.20727 1.78873Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".4\",\n    d: \"M8.40713 1.62085C5.59323 3.05117 3.05794 5.58509 1.62544 8.39847L1.17987 8.1716C2.66036 5.26397 5.27232 2.6534 8.18057 1.17513L8.40713 1.62085Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".45\",\n    d: \"M7.46207 1.56747C5.08689 2.94695 2.95362 5.07912 1.57249 7.45379L1.14028 7.20241C2.56503 4.75273 4.7607 2.55818 7.21096 1.1351L7.46207 1.56747Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".5\",\n    d: \"M6.30407 1.70487C4.51964 2.91063 2.90983 4.52061 1.7043 6.30513L1.28998 6.02524C2.5313 4.18773 4.18673 2.53214 6.02413 1.29059L6.30407 1.70487Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3T = [\"color\"];\nvar ShadowNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3T);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    opacity: \".05\",\n    d: \"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".1\",\n    d: \"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".15\",\n    d: \"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".2\",\n    d: \"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".25\",\n    d: \"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".3\",\n    d: \"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".35\",\n    d: \"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".4\",\n    d: \"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".45\",\n    d: \"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".5\",\n    d: \"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M7.49991 0.877045C3.84222 0.877045 0.877075 3.84219 0.877075 7.49988C0.877075 9.1488 1.47969 10.657 2.4767 11.8162L1.64647 12.6464C1.45121 12.8417 1.45121 13.1583 1.64647 13.3535C1.84173 13.5488 2.15832 13.5488 2.35358 13.3535L3.18383 12.5233C4.34302 13.5202 5.8511 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 5.85107 13.5202 4.34298 12.5233 3.1838L13.3536 2.35355C13.5488 2.15829 13.5488 1.8417 13.3536 1.64644C13.1583 1.45118 12.8417 1.45118 12.6465 1.64644L11.8162 2.47667C10.657 1.47966 9.14883 0.877045 7.49991 0.877045ZM11.1423 3.15065C10.1568 2.32449 8.88644 1.82704 7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 8.88641 2.32452 10.1568 3.15069 11.1422L11.1423 3.15065ZM3.85781 11.8493C4.84322 12.6753 6.11348 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 6.11345 12.6754 4.84319 11.8493 3.85778L3.85781 11.8493Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3U = [\"color\"];\nvar ShadowOuterIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3U);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    opacity: \".05\",\n    d: \"M12.1398 3.88617C13.8553 4.94159 15 6.83701 15 9.00001C15 12.3137 12.3137 15 9.00002 15C6.84351 15 4.95296 13.8621 3.89569 12.1552L4.32076 11.8919C5.29069 13.4578 7.02376 14.5 9.00002 14.5C12.0376 14.5 14.5 12.0375 14.5 9.00001C14.5 7.01781 13.4516 5.28027 11.8778 4.31203L12.1398 3.88617Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".2\",\n    d: \"M12.851 5.07321C13.8684 6.07106 14.5 7.46199 14.5 9C14.5 12.0375 12.0376 14.5 9.00004 14.5C7.46215 14.5 6.07132 13.8685 5.07349 12.8513L5.43043 12.5011C6.3381 13.4264 7.60186 14 9.00004 14C11.7614 14 14 11.7614 14 9C14 7.60171 13.4264 6.33786 12.5009 5.43017L12.851 5.07321Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".35\",\n    d: \"M13.3022 6.45071C13.7455 7.19737 14 8.06935 14 9.00001C14 11.7614 11.7614 14 9.00002 14C8.04868 14 7.15868 13.7341 6.40118 13.2724L6.66142 12.8454C7.34275 13.2607 8.14306 13.5 9.00002 13.5C11.4853 13.5 13.5 11.4853 13.5 9.00001C13.5 8.16165 13.271 7.37754 12.8722 6.70599L13.3022 6.45071Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".5\",\n    d: \"M13.3745 7.94022C13.4566 8.28031 13.5 8.63525 13.5 9.00001C13.5 11.4853 11.4853 13.5 9.00003 13.5C8.61104 13.5 8.23323 13.4506 7.87268 13.3576L7.99759 12.8734C8.31768 12.956 8.65353 13 9.00003 13C11.2091 13 13 11.2091 13 9.00001C13 8.67509 12.9613 8.35953 12.8884 8.05757L13.3745 7.94022Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    opacity: \".65\",\n    d: \"M12.9155 9.82133C12.5898 11.3813 11.3562 12.6072 9.79205 12.9215L9.69354 12.4313C11.0613 12.1565 12.1413 11.0834 12.4261 9.71915L12.9155 9.82133Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), createElement(\"path\", {\n    d: \"M1.2771 7.50253C1.2771 4.06456 4.06413 1.27753 7.5021 1.27753C10.94 1.27753 13.7271 4.06456 13.7271 7.50253C13.7271 10.9405 10.94 13.7275 7.5021 13.7275C4.06413 13.7275 1.2771 10.9405 1.2771 7.50253ZM7.5021 2.22753C4.5888 2.22753 2.2271 4.58923 2.2271 7.50253C2.2271 10.4158 4.5888 12.7775 7.5021 12.7775C10.4154 12.7775 12.7771 10.4158 12.7771 7.50253C12.7771 4.58923 10.4154 2.22753 7.5021 2.22753Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3V = [\"color\"];\nvar Share1Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3V);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 7.50003C5 8.32845 4.32843 9.00003 3.5 9.00003C2.67157 9.00003 2 8.32845 2 7.50003C2 6.6716 2.67157 6.00003 3.5 6.00003C4.32843 6.00003 5 6.6716 5 7.50003ZM5.71313 8.66388C5.29445 9.45838 4.46048 10 3.5 10C2.11929 10 1 8.88074 1 7.50003C1 6.11931 2.11929 5.00003 3.5 5.00003C4.46048 5.00003 5.29445 5.54167 5.71313 6.33616L9.10424 4.21671C9.03643 3.98968 9 3.74911 9 3.50003C9 2.11932 10.1193 1.00003 11.5 1.00003C12.8807 1.00003 14 2.11932 14 3.50003C14 4.88074 12.8807 6.00003 11.5 6.00003C10.6915 6.00003 9.97264 5.61624 9.51566 5.0209L5.9853 7.22738C5.99502 7.31692 6 7.40789 6 7.50003C6 7.59216 5.99502 7.68312 5.9853 7.77267L9.51567 9.97915C9.97265 9.38382 10.6915 9.00003 11.5 9.00003C12.8807 9.00003 14 10.1193 14 11.5C14 12.8807 12.8807 14 11.5 14C10.1193 14 9 12.8807 9 11.5C9 11.2509 9.03643 11.0104 9.10425 10.7833L5.71313 8.66388ZM11.5 5.00003C12.3284 5.00003 13 4.32846 13 3.50003C13 2.6716 12.3284 2.00003 11.5 2.00003C10.6716 2.00003 10 2.6716 10 3.50003C10 4.32846 10.6716 5.00003 11.5 5.00003ZM13 11.5C13 12.3285 12.3284 13 11.5 13C10.6716 13 10 12.3285 10 11.5C10 10.6716 10.6716 10 11.5 10C12.3284 10 13 10.6716 13 11.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3W = [\"color\"];\nvar Share2Icon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3W);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.5 5.00006C3.22386 5.00006 3 5.22392 3 5.50006L3 11.5001C3 11.7762 3.22386 12.0001 3.5 12.0001L11.5 12.0001C11.7761 12.0001 12 11.7762 12 11.5001L12 5.50006C12 5.22392 11.7761 5.00006 11.5 5.00006L10.25 5.00006C9.97386 5.00006 9.75 4.7762 9.75 4.50006C9.75 4.22392 9.97386 4.00006 10.25 4.00006L11.5 4.00006C12.3284 4.00006 13 4.67163 13 5.50006L13 11.5001C13 12.3285 12.3284 13.0001 11.5 13.0001L3.5 13.0001C2.67157 13.0001 2 12.3285 2 11.5001L2 5.50006C2 4.67163 2.67157 4.00006 3.5 4.00006L4.75 4.00006C5.02614 4.00006 5.25 4.22392 5.25 4.50006C5.25 4.7762 5.02614 5.00006 4.75 5.00006L3.5 5.00006ZM7 1.6364L5.5682 3.0682C5.39246 3.24393 5.10754 3.24393 4.9318 3.0682C4.75607 2.89246 4.75607 2.60754 4.9318 2.4318L7.1818 0.181802C7.26619 0.09741 7.38065 0.049999 7.5 0.049999C7.61935 0.049999 7.73381 0.09741 7.8182 0.181802L10.0682 2.4318C10.2439 2.60754 10.2439 2.89246 10.0682 3.0682C9.89246 3.24393 9.60754 3.24393 9.4318 3.0682L8 1.6364L8 8.5C8 8.77614 7.77614 9 7.5 9C7.22386 9 7 8.77614 7 8.5L7 1.6364Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3X = [\"color\"];\nvar ShuffleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3X);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M12.3536 1.14645C12.1583 0.951184 11.8417 0.951184 11.6464 1.14645C11.4512 1.34171 11.4512 1.65829 11.6464 1.85355L12.7929 3H12C10.7037 3 9.71111 3.58423 8.87248 4.38931C8.20065 5.03427 7.59349 5.85684 6.99461 6.6682C6.86287 6.84668 6.73154 7.02462 6.6 7.2C5.10874 9.18835 3.49037 11 0.5 11C0.223858 11 0 11.2239 0 11.5C0 11.7761 0.223858 12 0.5 12C4.00963 12 5.89126 9.81165 7.4 7.8C7.54367 7.60845 7.6832 7.41962 7.81996 7.23454L7.82005 7.23443L7.82006 7.23441C8.41674 6.42695 8.96069 5.69085 9.56502 5.11069C10.2889 4.41577 11.0463 4 12 4H12.7929L11.6464 5.14645C11.4512 5.34171 11.4512 5.65829 11.6464 5.85355C11.8417 6.04882 12.1583 6.04882 12.3536 5.85355L14.3536 3.85355C14.5488 3.65829 14.5488 3.34171 14.3536 3.14645L12.3536 1.14645ZM0.5 3C3.35278 3 5.12992 4.44588 6.50548 6.06746L6.3762 6.24266C6.2483 6.4161 6.12293 6.58609 6 6.75C5.96397 6.79804 5.92798 6.84581 5.892 6.89331C4.57348 5.29306 3.02637 4 0.5 4C0.223858 4 0 3.77614 0 3.5C0 3.22386 0.223858 3 0.5 3ZM8.87248 10.6107C8.37284 10.131 7.90897 9.55314 7.45767 8.95468C7.64688 8.71693 7.82704 8.48061 8 8.25L8.08987 8.12987C8.58412 8.79402 9.05288 9.39766 9.56502 9.88931C10.2889 10.5842 11.0463 11 12 11H12.7929L11.6464 9.85355C11.4512 9.65829 11.4512 9.34171 11.6464 9.14645C11.8417 8.95118 12.1583 8.95118 12.3536 9.14645L14.3536 11.1464C14.5488 11.3417 14.5488 11.6583 14.3536 11.8536L12.3536 13.8536C12.1583 14.0488 11.8417 14.0488 11.6464 13.8536C11.4512 13.6583 11.4512 13.3417 11.6464 13.1464L12.7929 12H12C10.7037 12 9.71111 11.4158 8.87248 10.6107Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3Y = [\"color\"];\nvar SizeIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3Y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M11.5 3.04999C11.7485 3.04999 11.95 3.25146 11.95 3.49999V7.49999C11.95 7.74852 11.7485 7.94999 11.5 7.94999C11.2515 7.94999 11.05 7.74852 11.05 7.49999V4.58639L4.58638 11.05H7.49999C7.74852 11.05 7.94999 11.2515 7.94999 11.5C7.94999 11.7485 7.74852 11.95 7.49999 11.95L3.49999 11.95C3.38064 11.95 3.26618 11.9026 3.18179 11.8182C3.0974 11.7338 3.04999 11.6193 3.04999 11.5L3.04999 7.49999C3.04999 7.25146 3.25146 7.04999 3.49999 7.04999C3.74852 7.04999 3.94999 7.25146 3.94999 7.49999L3.94999 10.4136L10.4136 3.94999L7.49999 3.94999C7.25146 3.94999 7.04999 3.74852 7.04999 3.49999C7.04999 3.25146 7.25146 3.04999 7.49999 3.04999L11.5 3.04999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3Z = [\"color\"];\nvar SketchLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3Z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.53731 0.826873C7.5125 0.824392 7.4875 0.824392 7.46269 0.826873L3.96269 1.17687C3.85672 1.18747 3.76025 1.24262 3.69736 1.32857L0.699771 5.42528C0.654046 5.48627 0.62647 5.56165 0.625057 5.6434C0.625019 5.6456 0.625 5.64781 0.625 5.65001C0.625 5.65052 0.625001 5.65103 0.625003 5.65153C0.625363 5.74237 0.658021 5.82559 0.712087 5.8903L7.21042 13.7883C7.28165 13.8749 7.38789 13.925 7.5 13.925C7.61211 13.925 7.71835 13.8749 7.78958 13.7883L14.2879 5.89031C14.342 5.8256 14.3746 5.74237 14.375 5.65153C14.375 5.65103 14.375 5.65052 14.375 5.65001C14.375 5.64849 14.375 5.64697 14.375 5.64545C14.3749 5.63963 14.3747 5.63382 14.3744 5.62801C14.37 5.55219 14.3431 5.48242 14.3002 5.42527L11.3026 1.32857C11.2397 1.24262 11.1433 1.18747 11.0373 1.17687L7.53731 0.826873ZM10.925 5.27501V5.25236L10.9223 5.27501H10.925ZM10.9342 5.17498H13.1877L11.2495 2.5261L10.9342 5.17498ZM10.5707 1.88395L8.04432 1.63131L10.1747 5.21034L10.5707 1.88395ZM6.95568 1.63131L4.42931 1.88395L4.82531 5.21034L6.95568 1.63131ZM3.75046 2.5261L1.81226 5.17498H4.0658L3.75046 2.5261ZM1.79416 6.02501L6.75861 12.0587L4.22371 6.0669C4.21787 6.0531 4.21314 6.0391 4.20949 6.02501H1.79416ZM5.15055 6.02501L7.49999 12.1085L9.84943 6.02501H9.78681H5.21319H5.15055ZM10.7905 6.02501C10.7869 6.0391 10.7821 6.0531 10.7763 6.0669L8.24139 12.0587L13.2058 6.02501H10.7905ZM7.5 2.18317L9.34038 5.27501H5.65962L7.5 2.18317Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3_ = [\"color\"];\nvar SlashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3_);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.10876 14L9.46582 1H10.8178L5.46074 14H4.10876Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$3$ = [\"color\"];\nvar SliderIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3$);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10.3004 7.49991C10.3004 8.4943 9.49426 9.30041 8.49988 9.30041C7.50549 9.30041 6.69938 8.4943 6.69938 7.49991C6.69938 6.50553 7.50549 5.69942 8.49988 5.69942C9.49426 5.69942 10.3004 6.50553 10.3004 7.49991ZM11.205 8C10.9699 9.28029 9.84816 10.2504 8.49988 10.2504C7.1516 10.2504 6.0299 9.28029 5.79473 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H5.7947C6.0298 5.71962 7.15154 4.74942 8.49988 4.74942C9.84822 4.74942 10.97 5.71962 11.2051 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H11.205Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$40 = [\"color\"];\nvar SpaceBetweenHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$40);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14.4999 0.999994C14.2237 0.999994 13.9999 1.22385 13.9999 1.49999L13.9999 5.99995L9.99992 5.99995C9.44764 5.99995 8.99993 6.44766 8.99993 6.99994L8.99993 7.99994C8.99993 8.55222 9.44764 8.99993 9.99992 8.99993L13.9999 8.99993L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999994 14.4999 0.999994ZM4.99996 5.99995L0.999992 5.99995L0.999992 1.49999C0.999992 1.22385 0.776136 0.999994 0.499996 0.999994C0.223856 0.999994 -9.7852e-09 1.22385 -2.18557e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 8.99993L4.99996 8.99993C5.55224 8.99993 5.99995 8.55222 5.99995 7.99993L5.99995 6.99994C5.99995 6.44766 5.55224 5.99995 4.99996 5.99995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$41 = [\"color\"];\nvar SpaceBetweenVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$41);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1L9 1V5C9 5.55228 8.55228 6 8 6H7C6.44772 6 6 5.55228 6 5V1H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM7 9C6.44772 9 6 9.44771 6 10V14H1.49988C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H9V10C9 9.44772 8.55228 9 8 9H7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$42 = [\"color\"];\nvar SpaceEvenlyHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$42);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14.4999 0.999992C14.2237 0.999992 13.9999 1.22385 13.9999 1.49999L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999992 14.4999 0.999992ZM0.499996 0.999992C0.223856 0.999992 -9.78509e-09 1.22385 -2.18556e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 1.49999C0.999992 1.22385 0.776136 0.999992 0.499996 0.999992ZM1.99998 6.99994C1.99998 6.44766 2.44769 5.99995 2.99998 5.99995L5.99995 5.99995C6.55223 5.99995 6.99994 6.44766 6.99994 6.99994L6.99994 7.99993C6.99994 8.55221 6.55223 8.99992 5.99995 8.99992L2.99998 8.99992C2.4477 8.99992 1.99998 8.55221 1.99998 7.99993L1.99998 6.99994ZM8.99993 5.99995C8.44765 5.99995 7.99993 6.44766 7.99993 6.99994L7.99993 7.99993C7.99993 8.55221 8.44765 8.99992 8.99993 8.99992L11.9999 8.99992C12.5522 8.99992 12.9999 8.55221 12.9999 7.99993L12.9999 6.99994C12.9999 6.44766 12.5522 5.99995 11.9999 5.99995L8.99993 5.99995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$43 = [\"color\"];\nvar SpaceEvenlyVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$43);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM7 2C6.44772 2 6 2.44772 6 3V6C6 6.55228 6.44772 7 7 7H8C8.55228 7 9 6.55228 9 6V3C9 2.44772 8.55228 2 8 2H7ZM7 8C6.44772 8 6 8.44771 6 9V12C6 12.5523 6.44772 13 7 13H8C8.55228 13 9 12.5523 9 12V9C9 8.44772 8.55228 8 8 8H7ZM1.49988 14C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H1.49988Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$44 = [\"color\"];\nvar SpeakerLoudIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$44);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.46968 1.05085C7.64122 1.13475 7.75 1.30904 7.75 1.5V13.5C7.75 13.691 7.64122 13.8653 7.46968 13.9492C7.29813 14.0331 7.09377 14.0119 6.94303 13.8947L3.2213 11H1.5C0.671571 11 0 10.3284 0 9.5V5.5C0 4.67158 0.671573 4 1.5 4H3.2213L6.94303 1.10533C7.09377 0.988085 7.29813 0.966945 7.46968 1.05085ZM6.75 2.52232L3.69983 4.89468C3.61206 4.96294 3.50405 5 3.39286 5H1.5C1.22386 5 1 5.22386 1 5.5V9.5C1 9.77615 1.22386 10 1.5 10H3.39286C3.50405 10 3.61206 10.0371 3.69983 10.1053L6.75 12.4777V2.52232ZM10.2784 3.84804C10.4623 3.72567 10.7106 3.77557 10.833 3.95949C12.2558 6.09798 12.2558 8.90199 10.833 11.0405C10.7106 11.2244 10.4623 11.2743 10.2784 11.1519C10.0944 11.0296 10.0445 10.7813 10.1669 10.5973C11.4111 8.72728 11.4111 6.27269 10.1669 4.40264C10.0445 4.21871 10.0944 3.97041 10.2784 3.84804ZM12.6785 1.43044C12.5356 1.2619 12.2832 1.24104 12.1147 1.38386C11.9462 1.52667 11.9253 1.77908 12.0681 1.94762C14.7773 5.14488 14.7773 9.85513 12.0681 13.0524C11.9253 13.2209 11.9462 13.4733 12.1147 13.6161C12.2832 13.759 12.5356 13.7381 12.6785 13.5696C15.6406 10.0739 15.6406 4.92612 12.6785 1.43044Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$45 = [\"color\"];\nvar SpeakerModerateIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$45);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8 1.5C8 1.31062 7.893 1.13749 7.72361 1.05279C7.55421 0.968093 7.35151 0.986371 7.2 1.1L3.33333 4H1.5C0.671573 4 0 4.67158 0 5.5V9.5C0 10.3284 0.671573 11 1.5 11H3.33333L7.2 13.9C7.35151 14.0136 7.55421 14.0319 7.72361 13.9472C7.893 13.8625 8 13.6894 8 13.5V1.5ZM3.8 4.9L7 2.5V12.5L3.8 10.1C3.71345 10.0351 3.60819 10 3.5 10H1.5C1.22386 10 1 9.77614 1 9.5V5.5C1 5.22386 1.22386 5 1.5 5H3.5C3.60819 5 3.71345 4.96491 3.8 4.9ZM10.833 3.95949C10.7106 3.77557 10.4623 3.72567 10.2784 3.84804C10.0944 3.97041 10.0445 4.21871 10.1669 4.40264C11.4111 6.27268 11.4111 8.72728 10.1669 10.5973C10.0445 10.7813 10.0944 11.0296 10.2784 11.1519C10.4623 11.2743 10.7106 11.2244 10.833 11.0405C12.2558 8.90199 12.2558 6.09798 10.833 3.95949Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$46 = [\"color\"];\nvar SpeakerOffIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$46);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.72361 1.05279C7.893 1.13749 8 1.31062 8 1.5V13.5C8 13.6894 7.893 13.8625 7.72361 13.9472C7.55421 14.0319 7.35151 14.0136 7.2 13.9L3.33333 11H1.5C0.671573 11 0 10.3284 0 9.5V5.5C0 4.67158 0.671573 4 1.5 4H3.33333L7.2 1.1C7.35151 0.986371 7.55421 0.968093 7.72361 1.05279ZM7 2.5L3.8 4.9C3.71345 4.96491 3.60819 5 3.5 5H1.5C1.22386 5 1 5.22386 1 5.5V9.5C1 9.77614 1.22386 10 1.5 10H3.5C3.60819 10 3.71345 10.0351 3.8 10.1L7 12.5V2.5ZM14.8536 5.14645C15.0488 5.34171 15.0488 5.65829 14.8536 5.85355L13.2071 7.5L14.8536 9.14645C15.0488 9.34171 15.0488 9.65829 14.8536 9.85355C14.6583 10.0488 14.3417 10.0488 14.1464 9.85355L12.5 8.20711L10.8536 9.85355C10.6583 10.0488 10.3417 10.0488 10.1464 9.85355C9.95118 9.65829 9.95118 9.34171 10.1464 9.14645L11.7929 7.5L10.1464 5.85355C9.95118 5.65829 9.95118 5.34171 10.1464 5.14645C10.3417 4.95118 10.6583 4.95118 10.8536 5.14645L12.5 6.79289L14.1464 5.14645C14.3417 4.95118 14.6583 4.95118 14.8536 5.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$47 = [\"color\"];\nvar SpeakerQuietIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$47);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8 1.5C8 1.31062 7.893 1.13749 7.72361 1.05279C7.55421 0.968093 7.35151 0.986371 7.2 1.1L3.33333 4H1.5C0.671573 4 0 4.67158 0 5.5V9.5C0 10.3284 0.671573 11 1.5 11H3.33333L7.2 13.9C7.35151 14.0136 7.55421 14.0319 7.72361 13.9472C7.893 13.8625 8 13.6894 8 13.5V1.5ZM3.8 4.9L7 2.5V12.5L3.8 10.1C3.71345 10.0351 3.60819 10 3.5 10H1.5C1.22386 10 1 9.77614 1 9.5V5.5C1 5.22386 1.22386 5 1.5 5H3.5C3.60819 5 3.71345 4.96491 3.8 4.9ZM10.083 5.05577C9.96066 4.87185 9.71235 4.82195 9.52843 4.94432C9.3445 5.06669 9.2946 5.31499 9.41697 5.49892C10.2207 6.70693 10.2207 8.29303 9.41697 9.50104C9.2946 9.68496 9.3445 9.93326 9.52843 10.0556C9.71235 10.178 9.96066 10.1281 10.083 9.94418C11.0653 8.46773 11.0653 6.53222 10.083 5.05577Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$48 = [\"color\"];\nvar SquareIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$48);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 1H1.5H13.5H14V1.5V13.5V14H13.5H1.5H1V13.5V1.5V1ZM2 2V13H13V2H2Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$49 = [\"color\"];\nvar StackIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$49);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.75432 1.81954C7.59742 1.72682 7.4025 1.72682 7.24559 1.81954L1.74559 5.06954C1.59336 5.15949 1.49996 5.32317 1.49996 5.5C1.49996 5.67683 1.59336 5.84051 1.74559 5.93046L7.24559 9.18046C7.4025 9.27318 7.59742 9.27318 7.75432 9.18046L13.2543 5.93046C13.4066 5.84051 13.5 5.67683 13.5 5.5C13.5 5.32317 13.4066 5.15949 13.2543 5.06954L7.75432 1.81954ZM7.49996 8.16923L2.9828 5.5L7.49996 2.83077L12.0171 5.5L7.49996 8.16923ZM2.25432 8.31954C2.01658 8.17906 1.70998 8.2579 1.56949 8.49564C1.42901 8.73337 1.50785 9.03998 1.74559 9.18046L7.24559 12.4305C7.4025 12.5232 7.59742 12.5232 7.75432 12.4305L13.2543 9.18046C13.4921 9.03998 13.5709 8.73337 13.4304 8.49564C13.2899 8.2579 12.9833 8.17906 12.7456 8.31954L7.49996 11.4192L2.25432 8.31954Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4a = [\"color\"];\nvar StarIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4a);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.97942 1.25171L6.9585 1.30199L5.58662 4.60039C5.54342 4.70426 5.44573 4.77523 5.3336 4.78422L1.7727 5.0697L1.71841 5.07405L1.38687 5.10063L1.08608 5.12475C0.820085 5.14607 0.712228 5.47802 0.914889 5.65162L1.14406 5.84793L1.39666 6.06431L1.43802 6.09974L4.15105 8.42374C4.23648 8.49692 4.2738 8.61176 4.24769 8.72118L3.41882 12.196L3.40618 12.249L3.32901 12.5725L3.25899 12.866C3.19708 13.1256 3.47945 13.3308 3.70718 13.1917L3.9647 13.0344L4.24854 12.861L4.29502 12.8326L7.34365 10.9705C7.43965 10.9119 7.5604 10.9119 7.6564 10.9705L10.705 12.8326L10.7515 12.861L11.0354 13.0344L11.2929 13.1917C11.5206 13.3308 11.803 13.1256 11.7411 12.866L11.671 12.5725L11.5939 12.249L11.5812 12.196L10.7524 8.72118C10.7263 8.61176 10.7636 8.49692 10.849 8.42374L13.562 6.09974L13.6034 6.06431L13.856 5.84793L14.0852 5.65162C14.2878 5.47802 14.18 5.14607 13.914 5.12475L13.6132 5.10063L13.2816 5.07405L13.2274 5.0697L9.66645 4.78422C9.55432 4.77523 9.45663 4.70426 9.41343 4.60039L8.04155 1.30199L8.02064 1.25171L7.89291 0.944609L7.77702 0.665992C7.67454 0.419604 7.32551 0.419604 7.22303 0.665992L7.10715 0.944609L6.97942 1.25171ZM7.50003 2.60397L6.50994 4.98442C6.32273 5.43453 5.89944 5.74207 5.41351 5.78103L2.84361 5.98705L4.8016 7.66428C5.17183 7.98142 5.33351 8.47903 5.2204 8.95321L4.62221 11.461L6.8224 10.1171C7.23842 9.86302 7.76164 9.86302 8.17766 10.1171L10.3778 11.461L9.77965 8.95321C9.66654 8.47903 9.82822 7.98142 10.1984 7.66428L12.1564 5.98705L9.58654 5.78103C9.10061 5.74207 8.67732 5.43453 8.49011 4.98442L7.50003 2.60397Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4b = [\"color\"];\nvar StarFilledIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4b);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.22303 0.665992C7.32551 0.419604 7.67454 0.419604 7.77702 0.665992L9.41343 4.60039C9.45663 4.70426 9.55432 4.77523 9.66645 4.78422L13.914 5.12475C14.18 5.14607 14.2878 5.47802 14.0852 5.65162L10.849 8.42374C10.7636 8.49692 10.7263 8.61176 10.7524 8.72118L11.7411 12.866C11.803 13.1256 11.5206 13.3308 11.2929 13.1917L7.6564 10.9705C7.5604 10.9119 7.43965 10.9119 7.34365 10.9705L3.70718 13.1917C3.47945 13.3308 3.19708 13.1256 3.25899 12.866L4.24769 8.72118C4.2738 8.61176 4.23648 8.49692 4.15105 8.42374L0.914889 5.65162C0.712228 5.47802 0.820086 5.14607 1.08608 5.12475L5.3336 4.78422C5.44573 4.77523 5.54342 4.70426 5.58662 4.60039L7.22303 0.665992Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$4c = [\"color\"];\nvar StitchesLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4c);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.84998 7.49998C1.84998 7.21321 1.87134 6.93143 1.91256 6.65615L9.56374 2.23875C9.86311 2.35627 10.15 2.49861 10.4219 2.66322L3.77065 6.50332C3.73669 6.52183 3.70482 6.5449 3.67602 6.57238C3.5911 6.65308 3.54245 6.76286 3.53682 6.87658C3.53359 6.9418 3.54451 7.00831 3.57086 7.07137C3.58927 7.1157 3.6149 7.15742 3.64744 7.19458C3.67306 7.22396 3.702 7.24941 3.73337 7.27069L7.32533 9.83813L3.87232 11.8317C2.63604 10.7953 1.84998 9.23944 1.84998 7.49998ZM8.36843 10.2751C8.37682 10.2706 8.38509 10.2659 8.39322 10.2608L9.84091 9.42499C9.84706 9.42163 9.85314 9.41812 9.85915 9.41446L11.3101 8.57677C11.3655 8.54649 11.4154 8.504 11.4554 8.44995C11.6034 8.25031 11.5616 7.96848 11.362 7.82046L7.82779 5.20017L11.2161 3.24393C12.4013 4.27963 13.15 5.80237 13.15 7.49998C13.15 7.83546 13.1207 8.16411 13.0647 8.48353L5.56875 12.8113C5.26138 12.6995 4.96646 12.5618 4.68662 12.4008L8.36843 10.2751ZM8.18149 9.34383L4.81659 6.93868L5.50918 6.53881L8.80604 8.98324L8.18149 9.34383ZM6.35875 6.04832L6.97822 5.69067L10.2751 8.13506L9.6556 8.49275L6.35875 6.04832ZM8.3318 1.91078L2.24263 5.42636C3.06941 3.33188 5.11164 1.84998 7.49998 1.84998C7.78258 1.84998 8.06033 1.87072 8.3318 1.91078ZM6.84684 13.1126C7.06114 13.1373 7.27908 13.15 7.49998 13.15C9.8246 13.15 11.8213 11.7461 12.6886 9.7399L6.84684 13.1126ZM7.49998 0.849976C3.82728 0.849976 0.849976 3.82728 0.849976 7.49998C0.849976 11.1727 3.82728 14.15 7.49998 14.15C11.1727 14.15 14.15 11.1727 14.15 7.49998C14.15 3.82728 11.1727 0.849976 7.49998 0.849976Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4d = [\"color\"];\nvar StopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4d);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 3C2 2.44772 2.44772 2 3 2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H3C2.44772 13 2 12.5523 2 12V3ZM12 3H3V12H12V3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4e = [\"color\"];\nvar StopwatchIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4e);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.49998 0.5C5.49998 0.223858 5.72383 0 5.99998 0H7.49998H8.99998C9.27612 0 9.49998 0.223858 9.49998 0.5C9.49998 0.776142 9.27612 1 8.99998 1H7.99998V2.11922C9.09832 2.20409 10.119 2.56622 10.992 3.13572C11.0116 3.10851 11.0336 3.08252 11.058 3.05806L11.858 2.25806C12.1021 2.01398 12.4978 2.01398 12.7419 2.25806C12.986 2.50214 12.986 2.89786 12.7419 3.14194L11.967 3.91682C13.1595 5.07925 13.9 6.70314 13.9 8.49998C13.9 12.0346 11.0346 14.9 7.49998 14.9C3.96535 14.9 1.09998 12.0346 1.09998 8.49998C1.09998 5.13362 3.69904 2.3743 6.99998 2.11922V1H5.99998C5.72383 1 5.49998 0.776142 5.49998 0.5ZM2.09998 8.49998C2.09998 5.51764 4.51764 3.09998 7.49998 3.09998C10.4823 3.09998 12.9 5.51764 12.9 8.49998C12.9 11.4823 10.4823 13.9 7.49998 13.9C4.51764 13.9 2.09998 11.4823 2.09998 8.49998ZM7.99998 4.5C7.99998 4.22386 7.77612 4 7.49998 4C7.22383 4 6.99998 4.22386 6.99998 4.5V9.5C6.99998 9.77614 7.22383 10 7.49998 10C7.77612 10 7.99998 9.77614 7.99998 9.5V4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4f = [\"color\"];\nvar StretchHorizontallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4f);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14.4999 0.999992C14.2237 0.999992 13.9999 1.22385 13.9999 1.49999L13.9999 5.99995L0.999992 5.99995L0.999992 1.49999C0.999992 1.22385 0.776136 0.999992 0.499996 0.999992C0.223856 0.999992 -9.78509e-09 1.22385 -2.18556e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 8.99992L13.9999 8.99992L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999992 14.4999 0.999992Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4g = [\"color\"];\nvar StretchVerticallyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4g);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1H6H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM9 14V1L6 1V14H1.49988C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4h = [\"color\"];\nvar StrikethroughIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4h);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.00003 3.25C5.00003 2.97386 4.77617 2.75 4.50003 2.75C4.22389 2.75 4.00003 2.97386 4.00003 3.25V7.10003H2.49998C2.27906 7.10003 2.09998 7.27912 2.09998 7.50003C2.09998 7.72094 2.27906 7.90003 2.49998 7.90003H4.00003V8.55C4.00003 10.483 5.56703 12.05 7.50003 12.05C9.43303 12.05 11 10.483 11 8.55V7.90003H12.5C12.7209 7.90003 12.9 7.72094 12.9 7.50003C12.9 7.27912 12.7209 7.10003 12.5 7.10003H11V3.25C11 2.97386 10.7762 2.75 10.5 2.75C10.2239 2.75 10 2.97386 10 3.25V7.10003H5.00003V3.25ZM5.00003 7.90003V8.55C5.00003 9.93071 6.11932 11.05 7.50003 11.05C8.88074 11.05 10 9.93071 10 8.55V7.90003H5.00003Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4i = [\"color\"];\nvar SunIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4i);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4j = [\"color\"];\nvar SwitchIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4j);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10.5 4C8.567 4 7 5.567 7 7.5C7 9.433 8.567 11 10.5 11C12.433 11 14 9.433 14 7.5C14 5.567 12.433 4 10.5 4ZM7.67133 11C6.65183 10.175 6 8.91363 6 7.5C6 6.08637 6.65183 4.82498 7.67133 4H4.5C2.567 4 1 5.567 1 7.5C1 9.433 2.567 11 4.5 11H7.67133ZM0 7.5C0 5.01472 2.01472 3 4.5 3H10.5C12.9853 3 15 5.01472 15 7.5C15 9.98528 12.9853 12 10.5 12H4.5C2.01472 12 0 9.98528 0 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4k = [\"color\"];\nvar SymbolIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4k);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.90321 7.29677C1.90321 10.341 4.11041 12.4147 6.58893 12.8439C6.87255 12.893 7.06266 13.1627 7.01355 13.4464C6.96444 13.73 6.69471 13.9201 6.41109 13.871C3.49942 13.3668 0.86084 10.9127 0.86084 7.29677C0.860839 5.76009 1.55996 4.55245 2.37639 3.63377C2.96124 2.97568 3.63034 2.44135 4.16846 2.03202L2.53205 2.03202C2.25591 2.03202 2.03205 1.80816 2.03205 1.53202C2.03205 1.25588 2.25591 1.03202 2.53205 1.03202L5.53205 1.03202C5.80819 1.03202 6.03205 1.25588 6.03205 1.53202L6.03205 4.53202C6.03205 4.80816 5.80819 5.03202 5.53205 5.03202C5.25591 5.03202 5.03205 4.80816 5.03205 4.53202L5.03205 2.68645L5.03054 2.68759L5.03045 2.68766L5.03044 2.68767L5.03043 2.68767C4.45896 3.11868 3.76059 3.64538 3.15554 4.3262C2.44102 5.13021 1.90321 6.10154 1.90321 7.29677ZM13.0109 7.70321C13.0109 4.69115 10.8505 2.6296 8.40384 2.17029C8.12093 2.11718 7.93465 1.84479 7.98776 1.56188C8.04087 1.27898 8.31326 1.0927 8.59616 1.14581C11.4704 1.68541 14.0532 4.12605 14.0532 7.70321C14.0532 9.23988 13.3541 10.4475 12.5377 11.3662C11.9528 12.0243 11.2837 12.5586 10.7456 12.968L12.3821 12.968C12.6582 12.968 12.8821 13.1918 12.8821 13.468C12.8821 13.7441 12.6582 13.968 12.3821 13.968L9.38205 13.968C9.10591 13.968 8.88205 13.7441 8.88205 13.468L8.88205 10.468C8.88205 10.1918 9.10591 9.96796 9.38205 9.96796C9.65819 9.96796 9.88205 10.1918 9.88205 10.468L9.88205 12.3135L9.88362 12.3123C10.4551 11.8813 11.1535 11.3546 11.7585 10.6738C12.4731 9.86976 13.0109 8.89844 13.0109 7.70321Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4l = [\"color\"];\nvar TableIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4l);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8 2H12.5C12.7761 2 13 2.22386 13 2.5V5H8V2ZM7 5V2H2.5C2.22386 2 2 2.22386 2 2.5V5H7ZM2 6V9H7V6H2ZM8 6H13V9H8V6ZM8 10H13V12.5C13 12.7761 12.7761 13 12.5 13H8V10ZM2 12.5V10H7V13H2.5C2.22386 13 2 12.7761 2 12.5ZM1 2.5C1 1.67157 1.67157 1 2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4m = [\"color\"];\nvar TargetIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4m);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.900024 7.50002C0.900024 3.85495 3.85495 0.900024 7.50002 0.900024C11.1451 0.900024 14.1 3.85495 14.1 7.50002C14.1 11.1451 11.1451 14.1 7.50002 14.1C3.85495 14.1 0.900024 11.1451 0.900024 7.50002ZM7.50002 1.80002C4.35201 1.80002 1.80002 4.35201 1.80002 7.50002C1.80002 10.648 4.35201 13.2 7.50002 13.2C10.648 13.2 13.2 10.648 13.2 7.50002C13.2 4.35201 10.648 1.80002 7.50002 1.80002ZM3.07504 7.50002C3.07504 5.05617 5.05618 3.07502 7.50004 3.07502C9.94388 3.07502 11.925 5.05617 11.925 7.50002C11.925 9.94386 9.94388 11.925 7.50004 11.925C5.05618 11.925 3.07504 9.94386 3.07504 7.50002ZM7.50004 3.92502C5.52562 3.92502 3.92504 5.52561 3.92504 7.50002C3.92504 9.47442 5.52563 11.075 7.50004 11.075C9.47444 11.075 11.075 9.47442 11.075 7.50002C11.075 5.52561 9.47444 3.92502 7.50004 3.92502ZM7.50004 5.25002C6.2574 5.25002 5.25004 6.25739 5.25004 7.50002C5.25004 8.74266 6.2574 9.75002 7.50004 9.75002C8.74267 9.75002 9.75004 8.74266 9.75004 7.50002C9.75004 6.25738 8.74267 5.25002 7.50004 5.25002ZM6.05004 7.50002C6.05004 6.69921 6.69923 6.05002 7.50004 6.05002C8.30084 6.05002 8.95004 6.69921 8.95004 7.50002C8.95004 8.30083 8.30084 8.95002 7.50004 8.95002C6.69923 8.95002 6.05004 8.30083 6.05004 7.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4n = [\"color\"];\nvar TextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4n);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.94993 2.95002L3.94993 4.49998C3.94993 4.74851 3.74845 4.94998 3.49993 4.94998C3.2514 4.94998 3.04993 4.74851 3.04993 4.49998V2.50004C3.04993 2.45246 3.05731 2.40661 3.07099 2.36357C3.12878 2.18175 3.29897 2.05002 3.49993 2.05002H11.4999C11.6553 2.05002 11.7922 2.12872 11.8731 2.24842C11.9216 2.32024 11.9499 2.40682 11.9499 2.50002L11.9499 2.50004V4.49998C11.9499 4.74851 11.7485 4.94998 11.4999 4.94998C11.2514 4.94998 11.0499 4.74851 11.0499 4.49998V2.95002H8.04993V12.05H9.25428C9.50281 12.05 9.70428 12.2515 9.70428 12.5C9.70428 12.7486 9.50281 12.95 9.25428 12.95H5.75428C5.50575 12.95 5.30428 12.7486 5.30428 12.5C5.30428 12.2515 5.50575 12.05 5.75428 12.05H6.94993V2.95002H3.94993Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4o = [\"color\"];\nvar TextAlignBottomIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4o);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.89949 5.50002C3.89949 5.27911 3.7204 5.10003 3.49949 5.10003C3.27857 5.10003 3.09949 5.27911 3.09949 5.50002L3.09949 12.5343L1.78233 11.2172C1.62612 11.061 1.37285 11.061 1.21664 11.2172C1.06043 11.3734 1.06043 11.6267 1.21664 11.7829L3.21664 13.7829C3.29166 13.8579 3.3934 13.9 3.49949 13.9C3.60557 13.9 3.70732 13.8579 3.78233 13.7829L5.78233 11.7829C5.93854 11.6267 5.93854 11.3734 5.78233 11.2172C5.62612 11.061 5.37285 11.061 5.21664 11.2172L3.89949 12.5343L3.89949 5.50002ZM8.49998 13C8.22383 13 7.99998 12.7762 7.99998 12.5C7.99998 12.2239 8.22383 12 8.49998 12H14.5C14.7761 12 15 12.2239 15 12.5C15 12.7762 14.7761 13 14.5 13H8.49998ZM8.49998 10C8.22383 10 7.99998 9.77617 7.99998 9.50002C7.99998 9.22388 8.22383 9.00002 8.49998 9.00002H14.5C14.7761 9.00002 15 9.22388 15 9.50002C15 9.77617 14.7761 10 14.5 10H8.49998ZM7.99998 6.50002C7.99998 6.77617 8.22383 7.00002 8.49998 7.00002H14.5C14.7761 7.00002 15 6.77617 15 6.50002C15 6.22388 14.7761 6.00002 14.5 6.00002H8.49998C8.22383 6.00002 7.99998 6.22388 7.99998 6.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4p = [\"color\"];\nvar TextAlignCenterIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4p);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM4 7.5C4 7.22386 4.22386 7 4.5 7H10.5C10.7761 7 11 7.22386 11 7.5C11 7.77614 10.7761 8 10.5 8H4.5C4.22386 8 4 7.77614 4 7.5ZM3 10.5C3 10.2239 3.22386 10 3.5 10H11.5C11.7761 10 12 10.2239 12 10.5C12 10.7761 11.7761 11 11.5 11H3.5C3.22386 11 3 10.7761 3 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4q = [\"color\"];\nvar TextAlignJustifyIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2.5 4C2.22386 4 2 4.22386 2 4.5C2 4.77614 2.22386 5 2.5 5H12.5C12.7761 5 13 4.77614 13 4.5C13 4.22386 12.7761 4 12.5 4H2.5ZM2 7.5C2 7.22386 2.22386 7 2.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H2.5C2.22386 8 2 7.77614 2 7.5ZM2 10.5C2 10.2239 2.22386 10 2.5 10H12.5C12.7761 10 13 10.2239 13 10.5C13 10.7761 12.7761 11 12.5 11H2.5C2.22386 11 2 10.7761 2 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4r = [\"color\"];\nvar TextAlignLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4r);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM2 7.5C2 7.22386 2.22386 7 2.5 7H7.5C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8H2.5C2.22386 8 2 7.77614 2 7.5ZM2 10.5C2 10.2239 2.22386 10 2.5 10H10.5C10.7761 10 11 10.2239 11 10.5C11 10.7761 10.7761 11 10.5 11H2.5C2.22386 11 2 10.7761 2 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4s = [\"color\"];\nvar TextAlignMiddleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4s);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.49949 14.9C3.7204 14.9 3.89949 14.7209 3.89949 14.5L3.89949 10.4657L5.21664 11.7829C5.37285 11.9391 5.62612 11.9391 5.78233 11.7829C5.93854 11.6267 5.93854 11.3734 5.78233 11.2172L3.78233 9.21718C3.70732 9.14217 3.60557 9.10002 3.49949 9.10002C3.3934 9.10002 3.29166 9.14217 3.21664 9.21718L1.21664 11.2172C1.06043 11.3734 1.06043 11.6267 1.21664 11.7829C1.37285 11.9391 1.62612 11.9391 1.78233 11.7829L3.09949 10.4657L3.09949 14.5C3.09949 14.7209 3.27857 14.9 3.49949 14.9ZM7.99998 10.5C7.99998 10.7762 8.22383 11 8.49998 11H14.5C14.7761 11 15 10.7762 15 10.5C15 10.2239 14.7761 10 14.5 10H8.49998C8.22383 10 7.99998 10.2239 7.99998 10.5ZM7.99998 7.50002C7.99998 7.77617 8.22383 8.00002 8.49998 8.00002H14.5C14.7761 8.00002 15 7.77617 15 7.50002C15 7.22388 14.7761 7.00002 14.5 7.00002H8.49998C8.22383 7.00002 7.99998 7.22388 7.99998 7.50002ZM8.49998 5.00002C8.22383 5.00002 7.99998 4.77617 7.99998 4.50002C7.99998 4.22388 8.22383 4.00002 8.49998 4.00002H14.5C14.7761 4.00002 15 4.22388 15 4.50002C15 4.77617 14.7761 5.00002 14.5 5.00002H8.49998ZM3.89949 0.500025C3.89949 0.279111 3.7204 0.100025 3.49949 0.100025C3.27857 0.100025 3.09949 0.279111 3.09949 0.500025L3.09949 4.53434L1.78233 3.21718C1.62612 3.06097 1.37285 3.06097 1.21664 3.21718C1.06043 3.37339 1.06043 3.62666 1.21664 3.78287L3.21664 5.78287C3.29166 5.85788 3.3934 5.90002 3.49949 5.90002C3.60557 5.90002 3.70732 5.85788 3.78233 5.78287L5.78233 3.78287C5.93854 3.62666 5.93854 3.37339 5.78233 3.21718C5.62612 3.06097 5.37285 3.06097 5.21664 3.21718L3.89949 4.53434L3.89949 0.500025Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4t = [\"color\"];\nvar TextAlignRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4t);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM7 7.5C7 7.22386 7.22386 7 7.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H7.5C7.22386 8 7 7.77614 7 7.5ZM4 10.5C4 10.2239 4.22386 10 4.5 10H12.5C12.7761 10 13 10.2239 13 10.5C13 10.7761 12.7761 11 12.5 11H4.5C4.22386 11 4 10.7761 4 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4u = [\"color\"];\nvar TextAlignTopIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4u);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M3.89949 9.49998C3.89949 9.72089 3.7204 9.89997 3.49949 9.89997C3.27857 9.89997 3.09949 9.72089 3.09949 9.49998L3.09949 2.46566L1.78233 3.78282C1.62612 3.93903 1.37285 3.93903 1.21664 3.78282C1.06043 3.62661 1.06043 3.37334 1.21664 3.21713L3.21664 1.21713C3.29166 1.14212 3.3934 1.09998 3.49949 1.09998C3.60557 1.09998 3.70732 1.14212 3.78233 1.21713L5.78233 3.21713C5.93854 3.37334 5.93854 3.62661 5.78233 3.78282C5.62612 3.93903 5.37285 3.93903 5.21664 3.78282L3.89949 2.46566L3.89949 9.49998ZM8.49998 1.99998C8.22383 1.99998 7.99998 2.22383 7.99998 2.49998C7.99998 2.77612 8.22383 2.99998 8.49998 2.99998H14.5C14.7761 2.99998 15 2.77612 15 2.49998C15 2.22383 14.7761 1.99998 14.5 1.99998H8.49998ZM8.49998 4.99998C8.22383 4.99998 7.99998 5.22383 7.99998 5.49998C7.99998 5.77612 8.22383 5.99998 8.49998 5.99998H14.5C14.7761 5.99998 15 5.77612 15 5.49998C15 5.22383 14.7761 4.99998 14.5 4.99998H8.49998ZM7.99998 8.49998C7.99998 8.22383 8.22383 7.99998 8.49998 7.99998H14.5C14.7761 7.99998 15 8.22383 15 8.49998C15 8.77612 14.7761 8.99998 14.5 8.99998H8.49998C8.22383 8.99998 7.99998 8.77612 7.99998 8.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4v = [\"color\"];\nvar TextNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4v);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L11.9291 2.36383C11.9159 2.32246 11.897 2.28368 11.8732 2.24845C11.7923 2.12875 11.6554 2.05005 11.5001 2.05005H3.50005C3.29909 2.05005 3.1289 2.18178 3.07111 2.3636C3.05743 2.40665 3.05005 2.45249 3.05005 2.50007V4.50001C3.05005 4.74854 3.25152 4.95001 3.50005 4.95001C3.74858 4.95001 3.95005 4.74854 3.95005 4.50001V2.95005H6.95006V7.34284L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L6.95006 8.75705V12.0501H5.7544C5.50587 12.0501 5.3044 12.2515 5.3044 12.5001C5.3044 12.7486 5.50587 12.9501 5.7544 12.9501H9.2544C9.50293 12.9501 9.7044 12.7486 9.7044 12.5001C9.7044 12.2515 9.50293 12.0501 9.2544 12.0501H8.05006V7.65705L13.3536 2.35355ZM8.05006 6.24284L11.0501 3.24283V2.95005H8.05006V6.24284Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4w = [\"color\"];\nvar ThickArrowDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4w);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5 3.5C5 3.22386 5.22386 3 5.5 3H9.5C9.77614 3 10 3.22386 10 3.5V6H12.5C12.6873 6 12.8589 6.10467 12.9446 6.27121C13.0303 6.43774 13.0157 6.63821 12.9069 6.79062L7.90687 13.7906C7.81301 13.922 7.66148 14 7.5 14C7.33853 14 7.18699 13.922 7.09314 13.7906L2.09314 6.79062C1.98427 6.63821 1.96972 6.43774 2.05542 6.27121C2.14112 6.10467 2.31271 6 2.5 6H5V3.5ZM6 4V6.5C6 6.77614 5.77614 7 5.5 7H3.4716L7.5 12.6398L11.5284 7H9.5C9.22386 7 9 6.77614 9 6.5V4H6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4x = [\"color\"];\nvar ThickArrowLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4x);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1 7.5C1 7.66148 1.07798 7.81301 1.20938 7.90687L8.20938 12.9069C8.36179 13.0157 8.56226 13.0303 8.72879 12.9446C8.89533 12.8589 9 12.6873 9 12.5L9 10L11.5 10C11.7761 10 12 9.77614 12 9.5L12 5.5C12 5.22386 11.7761 5 11.5 5L9 5L9 2.5C9 2.31271 8.89533 2.14112 8.72879 2.05542C8.56226 1.96972 8.36179 1.98427 8.20938 2.09313L1.20938 7.09314C1.07798 7.18699 1 7.33853 1 7.5ZM8 3.4716L8 5.5C8 5.77614 8.22386 6 8.5 6L11 6L11 9L8.5 9C8.22386 9 8 9.22386 8 9.5L8 11.5284L2.36023 7.5L8 3.4716Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4y = [\"color\"];\nvar ThickArrowRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14 7.5C14 7.66148 13.922 7.81301 13.7906 7.90687L6.79062 12.9069C6.63821 13.0157 6.43774 13.0303 6.27121 12.9446C6.10467 12.8589 6 12.6873 6 12.5L6 10L3.5 10C3.22386 10 3 9.77614 3 9.5L3 5.5C3 5.22386 3.22386 5 3.5 5L6 5L6 2.5C6 2.31271 6.10467 2.14112 6.27121 2.05542C6.43774 1.96972 6.63821 1.98427 6.79062 2.09313L13.7906 7.09314C13.922 7.18699 14 7.33853 14 7.5ZM7 3.4716L7 5.5C7 5.77614 6.77614 6 6.5 6L4 6L4 9L6.5 9C6.77614 9 7 9.22386 7 9.5L7 11.5284L12.6398 7.5L7 3.4716Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4z = [\"color\"];\nvar ThickArrowUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.5 1C7.66148 1 7.81301 1.07798 7.90687 1.20938L12.9069 8.20938C13.0157 8.36179 13.0303 8.56226 12.9446 8.72879C12.8589 8.89533 12.6873 9 12.5 9H10V11.5C10 11.7761 9.77614 12 9.5 12H5.5C5.22386 12 5 11.7761 5 11.5V9H2.5C2.31271 9 2.14112 8.89533 2.05542 8.72879C1.96972 8.56226 1.98427 8.36179 2.09314 8.20938L7.09314 1.20938C7.18699 1.07798 7.33853 1 7.5 1ZM3.4716 8H5.5C5.77614 8 6 8.22386 6 8.5V11H9V8.5C9 8.22386 9.22386 8 9.5 8H11.5284L7.5 2.36023L3.4716 8Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4A = [\"color\"];\nvar TimerIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4A);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49998 0.849976C7.22383 0.849976 6.99998 1.07383 6.99998 1.34998V3.52234C6.99998 3.79848 7.22383 4.02234 7.49998 4.02234C7.77612 4.02234 7.99998 3.79848 7.99998 3.52234V1.8718C10.8862 2.12488 13.15 4.54806 13.15 7.49998C13.15 10.6204 10.6204 13.15 7.49998 13.15C4.37957 13.15 1.84998 10.6204 1.84998 7.49998C1.84998 6.10612 2.35407 4.83128 3.19049 3.8459C3.36919 3.63538 3.34339 3.31985 3.13286 3.14115C2.92234 2.96245 2.60681 2.98825 2.42811 3.19877C1.44405 4.35808 0.849976 5.86029 0.849976 7.49998C0.849976 11.1727 3.82728 14.15 7.49998 14.15C11.1727 14.15 14.15 11.1727 14.15 7.49998C14.15 3.82728 11.1727 0.849976 7.49998 0.849976ZM6.74049 8.08072L4.22363 4.57237C4.15231 4.47295 4.16346 4.33652 4.24998 4.25C4.33649 4.16348 4.47293 4.15233 4.57234 4.22365L8.08069 6.74051C8.56227 7.08599 8.61906 7.78091 8.19998 8.2C7.78089 8.61909 7.08597 8.56229 6.74049 8.08072Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4B = [\"color\"];\nvar TokensIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4B);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.5 2C3.11929 2 2 3.11929 2 4.5C2 5.88072 3.11929 7 4.5 7C5.88072 7 7 5.88072 7 4.5C7 3.11929 5.88072 2 4.5 2ZM3 4.5C3 3.67157 3.67157 3 4.5 3C5.32843 3 6 3.67157 6 4.5C6 5.32843 5.32843 6 4.5 6C3.67157 6 3 5.32843 3 4.5ZM10.5 2C9.11929 2 8 3.11929 8 4.5C8 5.88072 9.11929 7 10.5 7C11.8807 7 13 5.88072 13 4.5C13 3.11929 11.8807 2 10.5 2ZM9 4.5C9 3.67157 9.67157 3 10.5 3C11.3284 3 12 3.67157 12 4.5C12 5.32843 11.3284 6 10.5 6C9.67157 6 9 5.32843 9 4.5ZM2 10.5C2 9.11929 3.11929 8 4.5 8C5.88072 8 7 9.11929 7 10.5C7 11.8807 5.88072 13 4.5 13C3.11929 13 2 11.8807 2 10.5ZM4.5 9C3.67157 9 3 9.67157 3 10.5C3 11.3284 3.67157 12 4.5 12C5.32843 12 6 11.3284 6 10.5C6 9.67157 5.32843 9 4.5 9ZM10.5 8C9.11929 8 8 9.11929 8 10.5C8 11.8807 9.11929 13 10.5 13C11.8807 13 13 11.8807 13 10.5C13 9.11929 11.8807 8 10.5 8ZM9 10.5C9 9.67157 9.67157 9 10.5 9C11.3284 9 12 9.67157 12 10.5C12 11.3284 11.3284 12 10.5 12C9.67157 12 9 11.3284 9 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4C = [\"color\"];\nvar TrackNextIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4C);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M13.0502 2.74989C13.0502 2.44613 12.804 2.19989 12.5002 2.19989C12.1965 2.19989 11.9502 2.44613 11.9502 2.74989V7.2825C11.9046 7.18802 11.8295 7.10851 11.7334 7.05776L2.73338 2.30776C2.5784 2.22596 2.3919 2.23127 2.24182 2.32176C2.09175 2.41225 2 2.57471 2 2.74995V12.25C2 12.4252 2.09175 12.5877 2.24182 12.6781C2.3919 12.7686 2.5784 12.7739 2.73338 12.6921L11.7334 7.94214C11.8295 7.89139 11.9046 7.81188 11.9502 7.7174V12.2499C11.9502 12.5536 12.1965 12.7999 12.5002 12.7999C12.804 12.7999 13.0502 12.5536 13.0502 12.2499V2.74989ZM3 11.4207V3.5792L10.4288 7.49995L3 11.4207Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4D = [\"color\"];\nvar TrackPreviousIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4D);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.94976 2.74989C1.94976 2.44613 2.196 2.19989 2.49976 2.19989C2.80351 2.19989 3.04976 2.44613 3.04976 2.74989V7.2825C3.0954 7.18802 3.17046 7.10851 3.26662 7.05776L12.2666 2.30776C12.4216 2.22596 12.6081 2.23127 12.7582 2.32176C12.9083 2.41225 13 2.57471 13 2.74995V12.25C13 12.4252 12.9083 12.5877 12.7582 12.6781C12.6081 12.7686 12.4216 12.7739 12.2666 12.6921L3.26662 7.94214C3.17046 7.89139 3.0954 7.81188 3.04976 7.7174V12.2499C3.04976 12.5536 2.80351 12.7999 2.49976 12.7999C2.196 12.7999 1.94976 12.5536 1.94976 12.2499V2.74989ZM4.57122 7.49995L12 11.4207V3.5792L4.57122 7.49995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4E = [\"color\"];\nvar TransformIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4E);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.849976 1.74998C0.849976 1.25292 1.25292 0.849976 1.74998 0.849976H3.24998C3.74703 0.849976 4.14998 1.25292 4.14998 1.74998V2.04998H10.85V1.74998C10.85 1.25292 11.2529 0.849976 11.75 0.849976H13.25C13.747 0.849976 14.15 1.25292 14.15 1.74998V3.24998C14.15 3.74703 13.747 4.14998 13.25 4.14998H12.95V10.85H13.25C13.747 10.85 14.15 11.2529 14.15 11.75V13.25C14.15 13.747 13.747 14.15 13.25 14.15H11.75C11.2529 14.15 10.85 13.747 10.85 13.25V12.95H4.14998V13.25C4.14998 13.747 3.74703 14.15 3.24998 14.15H1.74998C1.25292 14.15 0.849976 13.747 0.849976 13.25V11.75C0.849976 11.2529 1.25292 10.85 1.74998 10.85H2.04998V4.14998H1.74998C1.25292 4.14998 0.849976 3.74703 0.849976 3.24998V1.74998ZM2.94998 4.14998V10.85H3.24998C3.74703 10.85 4.14998 11.2529 4.14998 11.75V12.05H10.85V11.75C10.85 11.2529 11.2529 10.85 11.75 10.85H12.05V4.14998H11.75C11.2529 4.14998 10.85 3.74703 10.85 3.24998V2.94998H4.14998V3.24998C4.14998 3.74703 3.74703 4.14998 3.24998 4.14998H2.94998ZM2.34998 1.74998H1.74998V2.34998V2.64998V3.24998H2.34998H2.64998H3.24998V2.64998V2.34998V1.74998H2.64998H2.34998ZM5.09998 5.99998C5.09998 5.50292 5.50292 5.09998 5.99998 5.09998H6.99998C7.49703 5.09998 7.89998 5.50292 7.89998 5.99998V6.99998C7.89998 7.03591 7.89787 7.07134 7.89378 7.10618C7.92861 7.10208 7.96405 7.09998 7.99998 7.09998H8.99998C9.49703 7.09998 9.89998 7.50292 9.89998 7.99998V8.99998C9.89998 9.49703 9.49703 9.89998 8.99998 9.89998H7.99998C7.50292 9.89998 7.09998 9.49703 7.09998 8.99998V7.99998C7.09998 7.96405 7.10208 7.92861 7.10618 7.89378C7.07134 7.89787 7.03591 7.89998 6.99998 7.89998H5.99998C5.50292 7.89998 5.09998 7.49703 5.09998 6.99998V5.99998ZM6.09998 5.99998H5.99998V6.09998V6.89998V6.99998H6.09998H6.89998H6.99998V6.89998V6.09998V5.99998H6.89998H6.09998ZM7.99998 7.99998H8.09998H8.89998H8.99998V8.09998V8.89998V8.99998H8.89998H8.09998H7.99998V8.89998V8.09998V7.99998ZM2.64998 11.75H2.34998H1.74998V12.35V12.65V13.25H2.34998H2.64998H3.24998V12.65V12.35V11.75H2.64998ZM11.75 1.74998H12.35H12.65H13.25V2.34998V2.64998V3.24998H12.65H12.35H11.75V2.64998V2.34998V1.74998ZM12.65 11.75H12.35H11.75V12.35V12.65V13.25H12.35H12.65H13.25V12.65V12.35V11.75H12.65Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4F = [\"color\"];\nvar TransparencyGridIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4F);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    opacity: \".25\",\n    d: \"M0 0H3V3H0V0ZM6 3H3V6H0V9H3V12H0V15H3V12H6V15H9V12H12V15H15V12H12V9H15V6H12V3H15V0H12V3H9V0H6V3ZM6 6V3H9V6H6ZM6 9H3V6H6V9ZM9 9V6H12V9H9ZM9 9H6V12H9V9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4G = [\"color\"];\nvar TrashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4G);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.5 1C5.22386 1 5 1.22386 5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5ZM3 3.5C3 3.22386 3.22386 3 3.5 3H5H10H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5ZM5 4H10V12H5V4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4H = [\"color\"];\nvar TriangleDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4H);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4 6H11L7.5 10.5L4 6Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$4I = [\"color\"];\nvar TriangleLeftIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4I);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M9 4L9 11L4.5 7.5L9 4Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$4J = [\"color\"];\nvar TriangleRightIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4J);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6 11L6 4L10.5 7.5L6 11Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$4K = [\"color\"];\nvar TriangleUpIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4K);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4 9H11L7.5 4.5L4 9Z\",\n    fill: color\n  }));\n});\n\nvar _excluded$4L = [\"color\"];\nvar TwitterLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4L);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.23336 4.69629C7.23336 2.96884 8.63335 1.56857 10.36 1.56857C11.3736 1.56857 12.183 2.04804 12.7254 2.74385C13.3079 2.62467 13.8557 2.40913 14.3513 2.11508C14.1559 2.72598 13.7424 3.2396 13.2033 3.56463C13.2038 3.56568 13.2042 3.56674 13.2047 3.56779C13.7334 3.50361 14.2364 3.36302 14.7048 3.15546L14.7037 3.15715C14.3667 3.66183 13.9431 4.10736 13.4561 4.47034C13.4823 4.64672 13.4956 4.82427 13.4956 5.00079C13.4956 8.6871 10.6873 12.9746 5.52122 12.9746C3.93906 12.9746 2.46544 12.511 1.22505 11.7152C0.992632 11.5661 0.925108 11.2568 1.07423 11.0244C1.0874 11.0038 1.10183 10.9846 1.11734 10.9666C1.20582 10.8202 1.37438 10.7309 1.5554 10.7522C2.47066 10.8601 3.38568 10.7485 4.19219 10.3962C3.39226 10.0434 2.77129 9.35975 2.50204 8.51974C2.45359 8.3686 2.48835 8.20311 2.59351 8.08422C2.59716 8.0801 2.60087 8.07606 2.60464 8.0721C1.96391 7.50819 1.55973 6.68208 1.55973 5.76143V5.72759C1.55973 5.56814 1.64411 5.42059 1.78155 5.33974C1.82671 5.31317 1.87537 5.29511 1.92532 5.28558C1.70549 4.86154 1.58116 4.37984 1.58116 3.86958C1.58116 3.40165 1.58384 2.81192 1.91332 2.28081C1.98718 2.16175 2.10758 2.08915 2.2364 2.07195C2.42588 2.01237 2.64087 2.06969 2.77406 2.23302C3.86536 3.57126 5.44066 4.49583 7.23366 4.73961L7.23336 4.69629ZM5.52122 11.9746C4.73387 11.9746 3.97781 11.8435 3.27248 11.6023C4.13012 11.4538 4.95307 11.1159 5.66218 10.5602C5.81211 10.4427 5.87182 10.2435 5.81126 10.0629C5.7507 9.88234 5.583 9.75943 5.39255 9.75607C4.68968 9.74366 4.06712 9.39716 3.67793 8.86845C3.86828 8.85306 4.05428 8.82039 4.23445 8.77167C4.43603 8.71716 4.57363 8.53114 4.56674 8.32243C4.55985 8.11372 4.41029 7.93718 4.20555 7.89607C3.42694 7.73977 2.79883 7.16764 2.56169 6.42174C2.76255 6.47025 2.97102 6.4991 3.18482 6.5061C3.38563 6.51267 3.56646 6.38533 3.62795 6.19405C3.68943 6.00277 3.61666 5.79391 3.44963 5.68224C2.86523 5.29155 2.48116 4.62464 2.48116 3.86958C2.48116 3.70213 2.48352 3.55268 2.49355 3.41719C3.85115 4.79913 5.70873 5.68931 7.77588 5.79338C7.93225 5.80126 8.08328 5.73543 8.18395 5.61553C8.28463 5.49562 8.32332 5.33548 8.28851 5.18284C8.25255 5.02517 8.23336 4.86284 8.23336 4.69629C8.23336 3.52085 9.18591 2.56857 10.36 2.56857C11.5943 2.56857 12.4956 3.71208 12.4956 5.00079C12.4956 8.25709 10.0202 11.9746 5.52122 11.9746Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4M = [\"color\"];\nvar UnderlineIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4M);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M5.00001 2.75C5.00001 2.47386 4.77615 2.25 4.50001 2.25C4.22387 2.25 4.00001 2.47386 4.00001 2.75V8.05C4.00001 9.983 5.56702 11.55 7.50001 11.55C9.43301 11.55 11 9.983 11 8.05V2.75C11 2.47386 10.7762 2.25 10.5 2.25C10.2239 2.25 10 2.47386 10 2.75V8.05C10 9.43071 8.88072 10.55 7.50001 10.55C6.1193 10.55 5.00001 9.43071 5.00001 8.05V2.75ZM3.49998 13.1001C3.27906 13.1001 3.09998 13.2791 3.09998 13.5001C3.09998 13.721 3.27906 13.9001 3.49998 13.9001H11.5C11.7209 13.9001 11.9 13.721 11.9 13.5001C11.9 13.2791 11.7209 13.1001 11.5 13.1001H3.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4N = [\"color\"];\nvar UpdateIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4N);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.90321 7.29677C1.90321 10.341 4.11041 12.4147 6.58893 12.8439C6.87255 12.893 7.06266 13.1627 7.01355 13.4464C6.96444 13.73 6.69471 13.9201 6.41109 13.871C3.49942 13.3668 0.86084 10.9127 0.86084 7.29677C0.860839 5.76009 1.55996 4.55245 2.37639 3.63377C2.96124 2.97568 3.63034 2.44135 4.16846 2.03202L2.53205 2.03202C2.25591 2.03202 2.03205 1.80816 2.03205 1.53202C2.03205 1.25588 2.25591 1.03202 2.53205 1.03202L5.53205 1.03202C5.80819 1.03202 6.03205 1.25588 6.03205 1.53202L6.03205 4.53202C6.03205 4.80816 5.80819 5.03202 5.53205 5.03202C5.25591 5.03202 5.03205 4.80816 5.03205 4.53202L5.03205 2.68645L5.03054 2.68759L5.03045 2.68766L5.03044 2.68767L5.03043 2.68767C4.45896 3.11868 3.76059 3.64538 3.15554 4.3262C2.44102 5.13021 1.90321 6.10154 1.90321 7.29677ZM13.0109 7.70321C13.0109 4.69115 10.8505 2.6296 8.40384 2.17029C8.12093 2.11718 7.93465 1.84479 7.98776 1.56188C8.04087 1.27898 8.31326 1.0927 8.59616 1.14581C11.4704 1.68541 14.0532 4.12605 14.0532 7.70321C14.0532 9.23988 13.3541 10.4475 12.5377 11.3662C11.9528 12.0243 11.2837 12.5586 10.7456 12.968L12.3821 12.968C12.6582 12.968 12.8821 13.1918 12.8821 13.468C12.8821 13.7441 12.6582 13.968 12.3821 13.968L9.38205 13.968C9.10591 13.968 8.88205 13.7441 8.88205 13.468L8.88205 10.468C8.88205 10.1918 9.10591 9.96796 9.38205 9.96796C9.65819 9.96796 9.88205 10.1918 9.88205 10.468L9.88205 12.3135L9.88362 12.3123C10.4551 11.8813 11.1535 11.3546 11.7585 10.6738C12.4731 9.86976 13.0109 8.89844 13.0109 7.70321Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4O = [\"color\"];\nvar UploadIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4O);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.81825 1.18188C7.64251 1.00615 7.35759 1.00615 7.18185 1.18188L4.18185 4.18188C4.00611 4.35762 4.00611 4.64254 4.18185 4.81828C4.35759 4.99401 4.64251 4.99401 4.81825 4.81828L7.05005 2.58648V9.49996C7.05005 9.74849 7.25152 9.94996 7.50005 9.94996C7.74858 9.94996 7.95005 9.74849 7.95005 9.49996V2.58648L10.1819 4.81828C10.3576 4.99401 10.6425 4.99401 10.8182 4.81828C10.994 4.64254 10.994 4.35762 10.8182 4.18188L7.81825 1.18188ZM2.5 9.99997C2.77614 9.99997 3 10.2238 3 10.5V12C3 12.5538 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2238 12.2239 9.99997 12.5 9.99997C12.7761 9.99997 13 10.2238 13 10.5V12C13 13.104 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2238 2.22386 9.99997 2.5 9.99997Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4P = [\"color\"];\nvar ValueIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4P);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4Q = [\"color\"];\nvar ValueNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4Q);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 9.1488 1.47963 10.657 2.47665 11.8162L1.64643 12.6464C1.45117 12.8417 1.45117 13.1583 1.64643 13.3535C1.8417 13.5488 2.15828 13.5488 2.35354 13.3535L3.18377 12.5233C4.34296 13.5202 5.85104 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 5.85107 13.5202 4.34299 12.5233 3.1838L13.3535 2.35354C13.5488 2.15827 13.5488 1.84169 13.3535 1.64643C13.1583 1.45117 12.8417 1.45117 12.6464 1.64643L11.8162 2.47668C10.657 1.47966 9.14877 0.877045 7.49985 0.877045ZM11.1422 3.15066C10.1567 2.32449 8.88639 1.82704 7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.88642 2.32446 10.1568 3.15063 11.1422L11.1422 3.15066ZM3.85776 11.8493C4.84317 12.6753 6.11343 13.1727 7.49985 13.1727C10.6328 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 6.11346 12.6753 4.8432 11.8493 3.85779L3.85776 11.8493Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4R = [\"color\"];\nvar VercelLogoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4R);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7.49998 1L6.92321 2.00307L1.17498 12L0.599976 13H1.7535H13.2464H14.4L13.825 12L8.07674 2.00307L7.49998 1ZM7.49998 3.00613L2.3285 12H12.6714L7.49998 3.00613Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4S = [\"color\"];\nvar VideoIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4S);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.76447 3.12199C5.63151 3.04859 6.56082 3 7.5 3C8.43918 3 9.36849 3.04859 10.2355 3.12199C11.2796 3.21037 11.9553 3.27008 12.472 3.39203C12.9425 3.50304 13.2048 3.64976 13.4306 3.88086C13.4553 3.90618 13.4902 3.94414 13.5133 3.97092C13.7126 4.20149 13.8435 4.4887 13.918 5.03283C13.9978 5.6156 14 6.37644 14 7.52493C14 8.66026 13.9978 9.41019 13.9181 9.98538C13.8439 10.5206 13.7137 10.8061 13.5125 11.0387C13.4896 11.0651 13.4541 11.1038 13.4296 11.1287C13.2009 11.3625 12.9406 11.5076 12.4818 11.6164C11.9752 11.7365 11.3143 11.7942 10.2878 11.8797C9.41948 11.9521 8.47566 12 7.5 12C6.52434 12 5.58052 11.9521 4.7122 11.8797C3.68572 11.7942 3.02477 11.7365 2.51816 11.6164C2.05936 11.5076 1.7991 11.3625 1.57037 11.1287C1.54593 11.1038 1.51035 11.0651 1.48748 11.0387C1.28628 10.8061 1.15612 10.5206 1.08193 9.98538C1.00221 9.41019 1 8.66026 1 7.52493C1 6.37644 1.00216 5.6156 1.082 5.03283C1.15654 4.4887 1.28744 4.20149 1.48666 3.97092C1.5098 3.94414 1.54468 3.90618 1.56942 3.88086C1.7952 3.64976 2.05752 3.50304 2.52796 3.39203C3.04473 3.27008 3.7204 3.21037 4.76447 3.12199ZM0 7.52493C0 5.28296 0 4.16198 0.729985 3.31713C0.766457 3.27491 0.815139 3.22194 0.854123 3.18204C1.63439 2.38339 2.64963 2.29744 4.68012 2.12555C5.56923 2.05028 6.52724 2 7.5 2C8.47276 2 9.43077 2.05028 10.3199 2.12555C12.3504 2.29744 13.3656 2.38339 14.1459 3.18204C14.1849 3.22194 14.2335 3.27491 14.27 3.31713C15 4.16198 15 5.28296 15 7.52493C15 9.74012 15 10.8477 14.2688 11.6929C14.2326 11.7348 14.1832 11.7885 14.1444 11.8281C13.3629 12.6269 12.3655 12.71 10.3709 12.8763C9.47971 12.9505 8.50782 13 7.5 13C6.49218 13 5.52028 12.9505 4.62915 12.8763C2.63446 12.71 1.63712 12.6269 0.855558 11.8281C0.816844 11.7885 0.767442 11.7348 0.731221 11.6929C0 10.8477 0 9.74012 0 7.52493ZM5.25 5.38264C5.25 5.20225 5.43522 5.08124 5.60041 5.15369L10.428 7.27105C10.6274 7.35853 10.6274 7.64147 10.428 7.72895L5.60041 9.84631C5.43522 9.91876 5.25 9.79775 5.25 9.61736V5.38264Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4T = [\"color\"];\nvar ViewGridIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4T);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M7 2H1.5C1.22386 2 1 2.22386 1 2.5V7H7V2ZM8 2V7H14V2.5C14 2.22386 13.7761 2 13.5 2H8ZM7 8H1V12.5C1 12.7761 1.22386 13 1.5 13H7V8ZM8 13V8H14V12.5C14 12.7761 13.7761 13 13.5 13H8ZM1.5 1C0.671573 1 0 1.67157 0 2.5V12.5C0 13.3284 0.671573 14 1.5 14H13.5C14.3284 14 15 13.3284 15 12.5V2.5C15 1.67157 14.3284 1 13.5 1H1.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4U = [\"color\"];\nvar ViewHorizontalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4U);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M1.5 2H13.5C13.7761 2 14 2.22386 14 2.5V7H1V2.5C1 2.22386 1.22386 2 1.5 2ZM1 8V12.5C1 12.7761 1.22386 13 1.5 13H13.5C13.7761 13 14 12.7761 14 12.5V8H1ZM0 2.5C0 1.67157 0.671573 1 1.5 1H13.5C14.3284 1 15 1.67157 15 2.5V12.5C15 13.3284 14.3284 14 13.5 14H1.5C0.671573 14 0 13.3284 0 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4V = [\"color\"];\nvar ViewNoneIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4V);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M14 2.58711L1.85163 13H13.5C13.7761 13 14 12.7761 14 12.5V2.58711ZM0.762879 13.8067L0.825396 13.8796L0.854717 13.8545C1.05017 13.9478 1.26899 14 1.5 14H13.5C14.3284 14 15 13.3284 15 12.5V2.5C15 1.93949 14.6926 1.45078 14.2371 1.19331L14.1746 1.12037L14.1453 1.1455C13.9498 1.05222 13.731 1 13.5 1H1.5C0.671573 1 0 1.67157 0 2.5V12.5C0 13.0605 0.307435 13.5492 0.762879 13.8067ZM1 12.4129L13.1484 2H1.5C1.22386 2 1 2.22386 1 2.5V12.4129Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4W = [\"color\"];\nvar ViewVerticalIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4W);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M8 2H13.5C13.7761 2 14 2.22386 14 2.5V12.5C14 12.7761 13.7761 13 13.5 13H8V2ZM7 2H1.5C1.22386 2 1 2.22386 1 2.5V12.5C1 12.7761 1.22386 13 1.5 13H7V2ZM0 2.5C0 1.67157 0.671573 1 1.5 1H13.5C14.3284 1 15 1.67157 15 2.5V12.5C15 13.3284 14.3284 14 13.5 14H1.5C0.671573 14 0 13.3284 0 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4X = [\"color\"];\nvar WidthIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4X);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M4.81812 4.68161C4.99386 4.85734 4.99386 5.14227 4.81812 5.318L3.08632 7.0498H11.9135L10.1817 5.318C10.006 5.14227 10.006 4.85734 10.1817 4.68161C10.3575 4.50587 10.6424 4.50587 10.8181 4.68161L13.3181 7.18161C13.4939 7.35734 13.4939 7.64227 13.3181 7.818L10.8181 10.318C10.6424 10.4937 10.3575 10.4937 10.1817 10.318C10.006 10.1423 10.006 9.85734 10.1817 9.68161L11.9135 7.9498H3.08632L4.81812 9.68161C4.99386 9.85734 4.99386 10.1423 4.81812 10.318C4.64239 10.4937 4.35746 10.4937 4.18173 10.318L1.68173 7.818C1.50599 7.64227 1.50599 7.35734 1.68173 7.18161L4.18173 4.68161C4.35746 4.50587 4.64239 4.50587 4.81812 4.68161Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4Y = [\"color\"];\nvar ZoomInIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4Y);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159ZM4.25 6.5C4.25 6.22386 4.47386 6 4.75 6H6V4.75C6 4.47386 6.22386 4.25 6.5 4.25C6.77614 4.25 7 4.47386 7 4.75V6H8.25C8.52614 6 8.75 6.22386 8.75 6.5C8.75 6.77614 8.52614 7 8.25 7H7V8.25C7 8.52614 6.77614 8.75 6.5 8.75C6.22386 8.75 6 8.52614 6 8.25V7H4.75C4.47386 7 4.25 6.77614 4.25 6.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nvar _excluded$4Z = [\"color\"];\nvar ZoomOutIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n  var _ref$color = _ref.color,\n      color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$4Z);\n\n  return createElement(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), createElement(\"path\", {\n    d: \"M6.5 10C8.433 10 10 8.433 10 6.5C10 4.567 8.433 3 6.5 3C4.567 3 3 4.567 3 6.5C3 8.433 4.567 10 6.5 10ZM6.5 11C7.56251 11 8.53901 10.6318 9.30884 10.0159L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L10.0159 9.30884C10.6318 8.53901 11 7.56251 11 6.5C11 4.01472 8.98528 2 6.5 2C4.01472 2 2 4.01472 2 6.5C2 8.98528 4.01472 11 6.5 11ZM4.75 6C4.47386 6 4.25 6.22386 4.25 6.5C4.25 6.77614 4.47386 7 4.75 7H8.25C8.52614 7 8.75 6.77614 8.75 6.5C8.75 6.22386 8.52614 6 8.25 6H4.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\nexport { AccessibilityIcon, ActivityLogIcon, AlignBaselineIcon, AlignBottomIcon, AlignCenterHorizontallyIcon, AlignCenterVerticallyIcon, AlignLeftIcon, AlignRightIcon, AlignTopIcon, AllSidesIcon, AngleIcon, ArchiveIcon, ArrowBottomLeftIcon, ArrowBottomRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowTopLeftIcon, ArrowTopRightIcon, ArrowUpIcon, AspectRatioIcon, AvatarIcon, BackpackIcon, BadgeIcon, BarChartIcon, BellIcon, BlendingModeIcon, BookmarkFilledIcon, BookmarkIcon, BorderAllIcon, BorderBottomIcon, BorderDashedIcon, BorderDottedIcon, BorderLeftIcon, BorderNoneIcon, BorderRightIcon, BorderSolidIcon, BorderSplitIcon, BorderStyleIcon, BorderTopIcon, BorderWidthIcon, BoxIcon, BoxModelIcon, ButtonIcon, CalendarIcon, CameraIcon, CardStackIcon, CardStackMinusIcon, CardStackPlusIcon, CaretDownIcon, CaretLeftIcon, CaretRightIcon, CaretSortIcon, CaretUpIcon, ChatBubbleIcon, CheckCircledIcon, CheckIcon, CheckboxIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleBackslashIcon, CircleIcon, ClipboardCopyIcon, ClipboardIcon, ClockIcon, CodeIcon, CodeSandboxLogoIcon, ColorWheelIcon, ColumnSpacingIcon, ColumnsIcon, CommitIcon, Component1Icon, Component2Icon, ComponentBooleanIcon, ComponentInstanceIcon, ComponentNoneIcon, ComponentPlaceholderIcon, ContainerIcon, CookieIcon, CopyIcon, CornerBottomLeftIcon, CornerBottomRightIcon, CornerTopLeftIcon, CornerTopRightIcon, CornersIcon, CountdownTimerIcon, CounterClockwiseClockIcon, CropIcon, Cross1Icon, Cross2Icon, CrossCircledIcon, Crosshair1Icon, Crosshair2Icon, CrumpledPaperIcon, CubeIcon, CursorArrowIcon, CursorTextIcon, DashIcon, DashboardIcon, DesktopIcon, DimensionsIcon, DiscIcon, DiscordLogoIcon, DividerHorizontalIcon, DividerVerticalIcon, DotFilledIcon, DotIcon, DotsHorizontalIcon, DotsVerticalIcon, DoubleArrowDownIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, DoubleArrowUpIcon, DownloadIcon, DragHandleDots1Icon, DragHandleDots2Icon, DragHandleHorizontalIcon, DragHandleVerticalIcon, DrawingPinFilledIcon, DrawingPinIcon, DropdownMenuIcon, EnterFullScreenIcon, EnterIcon, EnvelopeClosedIcon, EnvelopeOpenIcon, EraserIcon, ExclamationTriangleIcon, ExitFullScreenIcon, ExitIcon, ExternalLinkIcon, EyeClosedIcon, EyeNoneIcon, EyeOpenIcon, FaceIcon, FigmaLogoIcon, FileIcon, FileMinusIcon, FilePlusIcon, FileTextIcon, FontBoldIcon, FontFamilyIcon, FontItalicIcon, FontRomanIcon, FontSizeIcon, FontStyleIcon, FrameIcon, FramerLogoIcon, GearIcon, GitHubLogoIcon, GlobeIcon, GridIcon, GroupIcon, Half1Icon, Half2Icon, HamburgerMenuIcon, HandIcon, HeadingIcon, HeartFilledIcon, HeartIcon, HeightIcon, HobbyKnifeIcon, HomeIcon, IconJarLogoIcon, IdCardIcon, ImageIcon, InfoCircledIcon, InputIcon, InstagramLogoIcon, KeyboardIcon, LapTimerIcon, LaptopIcon, LayersIcon, LayoutIcon, LetterCaseCapitalizeIcon, LetterCaseLowercaseIcon, LetterCaseToggleIcon, LetterCaseUppercaseIcon, LetterSpacingIcon, LightningBoltIcon, LineHeightIcon, Link1Icon, Link2Icon, LinkBreak1Icon, LinkBreak2Icon, LinkNone1Icon, LinkNone2Icon, LinkedInLogoIcon, ListBulletIcon, LockClosedIcon, LockOpen1Icon, LockOpen2Icon, LoopIcon, MagicWandIcon, MagnifyingGlassIcon, MarginIcon, MaskOffIcon, MaskOnIcon, MinusCircledIcon, MinusIcon, MixIcon, MixerHorizontalIcon, MixerVerticalIcon, MobileIcon, ModulzLogoIcon, MoonIcon, MoveIcon, NotionLogoIcon, OpacityIcon, OpenInNewWindowIcon, OverlineIcon, PaddingIcon, PaperPlaneIcon, PauseIcon, Pencil1Icon, Pencil2Icon, PersonIcon, PieChartIcon, PilcrowIcon, PinBottomIcon, PinLeftIcon, PinRightIcon, PinTopIcon, PlayIcon, PlusCircledIcon, PlusIcon, QuestionMarkCircledIcon, QuestionMarkIcon, QuoteIcon, RadiobuttonIcon, ReaderIcon, ReloadIcon, ResetIcon, ResumeIcon, RocketIcon, RotateCounterClockwiseIcon, RowSpacingIcon, RowsIcon, RulerHorizontalIcon, RulerSquareIcon, ScissorsIcon, SectionIcon, SewingPinFilledIcon, SewingPinIcon, ShadowIcon, ShadowInnerIcon, ShadowNoneIcon, ShadowOuterIcon, Share1Icon, Share2Icon, ShuffleIcon, SizeIcon, SketchLogoIcon, SlashIcon, SliderIcon, SpaceBetweenHorizontallyIcon, SpaceBetweenVerticallyIcon, SpaceEvenlyHorizontallyIcon, SpaceEvenlyVerticallyIcon, SpeakerLoudIcon, SpeakerModerateIcon, SpeakerOffIcon, SpeakerQuietIcon, SquareIcon, StackIcon, StarFilledIcon, StarIcon, StitchesLogoIcon, StopIcon, StopwatchIcon, StretchHorizontallyIcon, StretchVerticallyIcon, StrikethroughIcon, SunIcon, SwitchIcon, SymbolIcon, TableIcon, TargetIcon, TextAlignBottomIcon, TextAlignCenterIcon, TextAlignJustifyIcon, TextAlignLeftIcon, TextAlignMiddleIcon, TextAlignRightIcon, TextAlignTopIcon, TextIcon, TextNoneIcon, ThickArrowDownIcon, ThickArrowLeftIcon, ThickArrowRightIcon, ThickArrowUpIcon, TimerIcon, TokensIcon, TrackNextIcon, TrackPreviousIcon, TransformIcon, TransparencyGridIcon, TrashIcon, TriangleDownIcon, TriangleLeftIcon, TriangleRightIcon, TriangleUpIcon, TwitterLogoIcon, UnderlineIcon, UpdateIcon, UploadIcon, ValueIcon, ValueNoneIcon, VercelLogoIcon, VideoIcon, ViewGridIcon, ViewHorizontalIcon, ViewNoneIcon, ViewVerticalIcon, WidthIcon, ZoomInIcon, ZoomOutIcon };\n//# sourceMappingURL=react-icons.esm.js.map\n","function SDFGenerator() {\nvar exports = (function (exports) {\n\n  /**\n   * Find the point on a quadratic bezier curve at t where t is in the range [0, 1]\n   */\n  function pointOnQuadraticBezier (x0, y0, x1, y1, x2, y2, t, pointOut) {\n    var t2 = 1 - t;\n    pointOut.x = t2 * t2 * x0 + 2 * t2 * t * x1 + t * t * x2;\n    pointOut.y = t2 * t2 * y0 + 2 * t2 * t * y1 + t * t * y2;\n  }\n\n  /**\n   * Find the point on a cubic bezier curve at t where t is in the range [0, 1]\n   */\n  function pointOnCubicBezier (x0, y0, x1, y1, x2, y2, x3, y3, t, pointOut) {\n    var t2 = 1 - t;\n    pointOut.x = t2 * t2 * t2 * x0 + 3 * t2 * t2 * t * x1 + 3 * t2 * t * t * x2 + t * t * t * x3;\n    pointOut.y = t2 * t2 * t2 * y0 + 3 * t2 * t2 * t * y1 + 3 * t2 * t * t * y2 + t * t * t * y3;\n  }\n\n  /**\n   * Parse a path string into its constituent line/curve commands, invoking a callback for each.\n   * @param {string} pathString - An SVG-like path string to parse; should only contain commands: M/L/Q/C/Z\n   * @param {function(\n   *   command: 'L'|'Q'|'C',\n   *   startX: number,\n   *   startY: number,\n   *   endX: number,\n   *   endY: number,\n   *   ctrl1X?: number,\n   *   ctrl1Y?: number,\n   *   ctrl2X?: number,\n   *   ctrl2Y?: number\n   * )} commandCallback - A callback function that will be called once for each parsed path command, passing the\n   *                      command identifier (only L/Q/C commands) and its numeric arguments.\n   */\n  function forEachPathCommand(pathString, commandCallback) {\n    var segmentRE = /([MLQCZ])([^MLQCZ]*)/g;\n    var match, firstX, firstY, prevX, prevY;\n    while ((match = segmentRE.exec(pathString))) {\n      var args = match[2]\n        .replace(/^\\s*|\\s*$/g, '')\n        .split(/[,\\s]+/)\n        .map(function (v) { return parseFloat(v); });\n      switch (match[1]) {\n        case 'M':\n          prevX = firstX = args[0];\n          prevY = firstY = args[1];\n          break\n        case 'L':\n          if (args[0] !== prevX || args[1] !== prevY) { // yup, some fonts have zero-length line commands\n            commandCallback('L', prevX, prevY, (prevX = args[0]), (prevY = args[1]));\n          }\n          break\n        case 'Q': {\n          commandCallback('Q', prevX, prevY, (prevX = args[2]), (prevY = args[3]), args[0], args[1]);\n          break\n        }\n        case 'C': {\n          commandCallback('C', prevX, prevY, (prevX = args[4]), (prevY = args[5]), args[0], args[1], args[2], args[3]);\n          break\n        }\n        case 'Z':\n          if (prevX !== firstX || prevY !== firstY) {\n            commandCallback('L', prevX, prevY, firstX, firstY);\n          }\n          break\n      }\n    }\n  }\n\n  /**\n   * Convert a path string to a series of straight line segments\n   * @param {string} pathString - An SVG-like path string to parse; should only contain commands: M/L/Q/C/Z\n   * @param {function(x1:number, y1:number, x2:number, y2:number)} segmentCallback - A callback\n   *        function that will be called once for every line segment\n   * @param {number} [curvePoints] - How many straight line segments to use when approximating a\n   *        bezier curve in the path. Defaults to 16.\n   */\n  function pathToLineSegments (pathString, segmentCallback, curvePoints) {\n    if ( curvePoints === void 0 ) curvePoints = 16;\n\n    var tempPoint = { x: 0, y: 0 };\n    forEachPathCommand(pathString, function (command, startX, startY, endX, endY, ctrl1X, ctrl1Y, ctrl2X, ctrl2Y) {\n      switch (command) {\n        case 'L':\n          segmentCallback(startX, startY, endX, endY);\n          break\n        case 'Q': {\n          var prevCurveX = startX;\n          var prevCurveY = startY;\n          for (var i = 1; i < curvePoints; i++) {\n            pointOnQuadraticBezier(\n              startX, startY,\n              ctrl1X, ctrl1Y,\n              endX, endY,\n              i / (curvePoints - 1),\n              tempPoint\n            );\n            segmentCallback(prevCurveX, prevCurveY, tempPoint.x, tempPoint.y);\n            prevCurveX = tempPoint.x;\n            prevCurveY = tempPoint.y;\n          }\n          break\n        }\n        case 'C': {\n          var prevCurveX$1 = startX;\n          var prevCurveY$1 = startY;\n          for (var i$1 = 1; i$1 < curvePoints; i$1++) {\n            pointOnCubicBezier(\n              startX, startY,\n              ctrl1X, ctrl1Y,\n              ctrl2X, ctrl2Y,\n              endX, endY,\n              i$1 / (curvePoints - 1),\n              tempPoint\n            );\n            segmentCallback(prevCurveX$1, prevCurveY$1, tempPoint.x, tempPoint.y);\n            prevCurveX$1 = tempPoint.x;\n            prevCurveY$1 = tempPoint.y;\n          }\n          break\n        }\n      }\n    });\n  }\n\n  var viewportQuadVertex = \"precision highp float;attribute vec2 aUV;varying vec2 vUV;void main(){vUV=aUV;gl_Position=vec4(mix(vec2(-1.0),vec2(1.0),aUV),0.0,1.0);}\";\n\n  var copyTexFragment = \"precision highp float;uniform sampler2D tex;varying vec2 vUV;void main(){gl_FragColor=texture2D(tex,vUV);}\";\n\n  var cache = new WeakMap();\n\n  var glContextParams = {\n    premultipliedAlpha: false,\n    preserveDrawingBuffer: true,\n    antialias: false,\n    depth: false,\n  };\n\n  /**\n   * This is a little helper library for WebGL. It assists with state management for a GL context.\n   * It's pretty tightly wrapped to the needs of this package, not very general-purpose.\n   *\n   * @param { WebGLRenderingContext | HTMLCanvasElement | OffscreenCanvas } glOrCanvas - the GL context to wrap\n   * @param { ({gl, getExtension, withProgram, withTexture, withTextureFramebuffer, handleContextLoss}) => void } callback\n   */\n  function withWebGLContext (glOrCanvas, callback) {\n    var gl = glOrCanvas.getContext ? glOrCanvas.getContext('webgl', glContextParams) : glOrCanvas;\n    var wrapper = cache.get(gl);\n    if (!wrapper) {\n      var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n      var extensions = {};\n      var programs = {};\n      var textures = {};\n      var textureUnit = -1;\n      var framebufferStack = [];\n\n      gl.canvas.addEventListener('webglcontextlost', function (e) {\n        handleContextLoss();\n        e.preventDefault();\n      }, false);\n\n      function getExtension (name) {\n        var ext = extensions[name];\n        if (!ext) {\n          ext = extensions[name] = gl.getExtension(name);\n          if (!ext) {\n            throw new Error((name + \" not supported\"))\n          }\n        }\n        return ext\n      }\n\n      function compileShader (src, type) {\n        var shader = gl.createShader(type);\n        gl.shaderSource(shader, src);\n        gl.compileShader(shader);\n        // const status = gl.getShaderParameter(shader, gl.COMPILE_STATUS)\n        // if (!status && !gl.isContextLost()) {\n        //   throw new Error(gl.getShaderInfoLog(shader).trim())\n        // }\n        return shader\n      }\n\n      function withProgram (name, vert, frag, func) {\n        if (!programs[name]) {\n          var attributes = {};\n          var uniforms = {};\n          var program = gl.createProgram();\n          gl.attachShader(program, compileShader(vert, gl.VERTEX_SHADER));\n          gl.attachShader(program, compileShader(frag, gl.FRAGMENT_SHADER));\n          gl.linkProgram(program);\n\n          programs[name] = {\n            program: program,\n            transaction: function transaction (func) {\n              gl.useProgram(program);\n              func({\n                setUniform: function setUniform (type, name) {\n                  var values = [], len = arguments.length - 2;\n                  while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n                  var uniformLoc = uniforms[name] || (uniforms[name] = gl.getUniformLocation(program, name));\n                  gl[(\"uniform\" + type)].apply(gl, [ uniformLoc ].concat( values ));\n                },\n\n                setAttribute: function setAttribute (name, size, usage, instancingDivisor, data) {\n                  var attr = attributes[name];\n                  if (!attr) {\n                    attr = attributes[name] = {\n                      buf: gl.createBuffer(), // TODO should we destroy our buffers?\n                      loc: gl.getAttribLocation(program, name),\n                      data: null\n                    };\n                  }\n                  gl.bindBuffer(gl.ARRAY_BUFFER, attr.buf);\n                  gl.vertexAttribPointer(attr.loc, size, gl.FLOAT, false, 0, 0);\n                  gl.enableVertexAttribArray(attr.loc);\n                  if (isWebGL2) {\n                    gl.vertexAttribDivisor(attr.loc, instancingDivisor);\n                  } else {\n                    getExtension('ANGLE_instanced_arrays').vertexAttribDivisorANGLE(attr.loc, instancingDivisor);\n                  }\n                  if (data !== attr.data) {\n                    gl.bufferData(gl.ARRAY_BUFFER, data, usage);\n                    attr.data = data;\n                  }\n                }\n              });\n            }\n          };\n        }\n\n        programs[name].transaction(func);\n      }\n\n      function withTexture (name, func) {\n        textureUnit++;\n        try {\n          gl.activeTexture(gl.TEXTURE0 + textureUnit);\n          var texture = textures[name];\n          if (!texture) {\n            texture = textures[name] = gl.createTexture();\n            gl.bindTexture(gl.TEXTURE_2D, texture);\n            gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n            gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n          }\n          gl.bindTexture(gl.TEXTURE_2D, texture);\n          func(texture, textureUnit);\n        } finally {\n          textureUnit--;\n        }\n      }\n\n      function withTextureFramebuffer (texture, textureUnit, func) {\n        var framebuffer = gl.createFramebuffer();\n        framebufferStack.push(framebuffer);\n        gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n        gl.activeTexture(gl.TEXTURE0 + textureUnit);\n        gl.bindTexture(gl.TEXTURE_2D, texture);\n        gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n        try {\n          func(framebuffer);\n        } finally {\n          gl.deleteFramebuffer(framebuffer);\n          gl.bindFramebuffer(gl.FRAMEBUFFER, framebufferStack[--framebufferStack.length - 1] || null);\n        }\n      }\n\n      function handleContextLoss () {\n        extensions = {};\n        programs = {};\n        textures = {};\n        textureUnit = -1;\n        framebufferStack.length = 0;\n      }\n\n      cache.set(gl, wrapper = {\n        gl: gl,\n        isWebGL2: isWebGL2,\n        getExtension: getExtension,\n        withProgram: withProgram,\n        withTexture: withTexture,\n        withTextureFramebuffer: withTextureFramebuffer,\n        handleContextLoss: handleContextLoss,\n      });\n    }\n    callback(wrapper);\n  }\n\n\n  function renderImageData(glOrCanvas, imageData, x, y, width, height, channels, framebuffer) {\n    if ( channels === void 0 ) channels = 15;\n    if ( framebuffer === void 0 ) framebuffer = null;\n\n    withWebGLContext(glOrCanvas, function (ref) {\n      var gl = ref.gl;\n      var withProgram = ref.withProgram;\n      var withTexture = ref.withTexture;\n\n      withTexture('copy', function (tex, texUnit) {\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, imageData);\n        withProgram('copy', viewportQuadVertex, copyTexFragment, function (ref) {\n          var setUniform = ref.setUniform;\n          var setAttribute = ref.setAttribute;\n\n          setAttribute('aUV', 2, gl.STATIC_DRAW, 0, new Float32Array([0, 0, 2, 0, 0, 2]));\n          setUniform('1i', 'image', texUnit);\n          gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer || null);\n          gl.disable(gl.BLEND);\n          gl.colorMask(channels & 8, channels & 4, channels & 2, channels & 1);\n          gl.viewport(x, y, width, height);\n          gl.scissor(x, y, width, height);\n          gl.drawArrays(gl.TRIANGLES, 0, 3);\n        });\n      });\n    });\n  }\n\n  /**\n   * Resizing a canvas clears its contents; this utility copies the previous contents over.\n   * @param canvas\n   * @param newWidth\n   * @param newHeight\n   */\n  function resizeWebGLCanvasWithoutClearing(canvas, newWidth, newHeight) {\n    var width = canvas.width;\n    var height = canvas.height;\n    withWebGLContext(canvas, function (ref) {\n      var gl = ref.gl;\n\n      var data = new Uint8Array(width * height * 4);\n      gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);\n      canvas.width = newWidth;\n      canvas.height = newHeight;\n      renderImageData(gl, data, 0, 0, width, height);\n    });\n  }\n\n  var webglUtils = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    withWebGLContext: withWebGLContext,\n    renderImageData: renderImageData,\n    resizeWebGLCanvasWithoutClearing: resizeWebGLCanvasWithoutClearing\n  });\n\n  function generate$2 (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent) {\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n\n    var textureData = new Uint8Array(sdfWidth * sdfHeight);\n\n    var viewBoxWidth = viewBox[2] - viewBox[0];\n    var viewBoxHeight = viewBox[3] - viewBox[1];\n\n    // Decompose all paths into straight line segments and add them to an index\n    var segments = [];\n    pathToLineSegments(path, function (x1, y1, x2, y2) {\n      segments.push({\n        x1: x1, y1: y1, x2: x2, y2: y2,\n        minX: Math.min(x1, x2),\n        minY: Math.min(y1, y2),\n        maxX: Math.max(x1, x2),\n        maxY: Math.max(y1, y2)\n      });\n    });\n\n    // Sort segments by maxX, this will let us short-circuit some loops below\n    segments.sort(function (a, b) { return a.maxX - b.maxX; });\n\n    // For each target SDF texel, find the distance from its center to its nearest line segment,\n    // map that distance to an alpha value, and write that alpha to the texel\n    for (var sdfX = 0; sdfX < sdfWidth; sdfX++) {\n      for (var sdfY = 0; sdfY < sdfHeight; sdfY++) {\n        var signedDist = findNearestSignedDistance(\n          viewBox[0] + viewBoxWidth * (sdfX + 0.5) / sdfWidth,\n          viewBox[1] + viewBoxHeight * (sdfY + 0.5) / sdfHeight\n        );\n\n        // Use an exponential scale to ensure the texels very near the glyph path have adequate\n        // precision, while allowing the distance field to cover the entire texture, given that\n        // there are only 8 bits available. Formula visualized: https://www.desmos.com/calculator/uiaq5aqiam\n        var alpha = Math.pow((1 - Math.abs(signedDist) / maxDistance), sdfExponent) / 2;\n        if (signedDist < 0) {\n          alpha = 1 - alpha;\n        }\n\n        alpha = Math.max(0, Math.min(255, Math.round(alpha * 255))); //clamp\n        textureData[sdfY * sdfWidth + sdfX] = alpha;\n      }\n    }\n\n    return textureData\n\n    /**\n     * For a given x/y, search the index for the closest line segment and return\n     * its signed distance. Negative = inside, positive = outside, zero = on edge\n     * @param x\n     * @param y\n     * @returns {number}\n     */\n    function findNearestSignedDistance (x, y) {\n      var closestDistSq = Infinity;\n      var closestDist = Infinity;\n\n      for (var i = segments.length; i--;) {\n        var seg = segments[i];\n        if (seg.maxX + closestDist <= x) { break } //sorting by maxX means no more can be closer, so we can short-circuit\n        if (x + closestDist > seg.minX && y - closestDist < seg.maxY && y + closestDist > seg.minY) {\n          var distSq = absSquareDistanceToLineSegment(x, y, seg.x1, seg.y1, seg.x2, seg.y2);\n          if (distSq < closestDistSq) {\n            closestDistSq = distSq;\n            closestDist = Math.sqrt(closestDistSq);\n          }\n        }\n      }\n\n      // Flip to negative distance if inside the poly\n      if (isPointInPoly(x, y)) {\n        closestDist = -closestDist;\n      }\n      return closestDist\n    }\n\n    /**\n     * Determine whether the given point lies inside or outside the glyph. Uses a simple\n     * winding-number ray casting algorithm using a ray pointing east from the point.\n     */\n    function isPointInPoly (x, y) {\n      var winding = 0;\n      for (var i = segments.length; i--;) {\n        var seg = segments[i];\n        if (seg.maxX <= x) { break } //sorting by maxX means no more can cross, so we can short-circuit\n        var intersects = ((seg.y1 > y) !== (seg.y2 > y)) && (x < (seg.x2 - seg.x1) * (y - seg.y1) / (seg.y2 - seg.y1) + seg.x1);\n        if (intersects) {\n          winding += seg.y1 < seg.y2 ? 1 : -1;\n        }\n      }\n      return winding !== 0\n    }\n  }\n\n  function generateIntoCanvas$2(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, x, y, channel) {\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n    if ( x === void 0 ) x = 0;\n    if ( y === void 0 ) y = 0;\n    if ( channel === void 0 ) channel = 0;\n\n    generateIntoFramebuffer$1(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, null, x, y, channel);\n  }\n\n  function generateIntoFramebuffer$1 (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, glOrCanvas, framebuffer, x, y, channel) {\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n    if ( x === void 0 ) x = 0;\n    if ( y === void 0 ) y = 0;\n    if ( channel === void 0 ) channel = 0;\n\n    var data = generate$2(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent);\n    // Expand single-channel data to rbga\n    var rgbaData = new Uint8Array(data.length * 4);\n    for (var i = 0; i < data.length; i++) {\n      rgbaData[i * 4 + channel] = data[i];\n    }\n    renderImageData(glOrCanvas, rgbaData, x, y, sdfWidth, sdfHeight, 1 << (3 - channel), framebuffer);\n  }\n\n  /**\n   * Find the absolute distance from a point to a line segment at closest approach\n   */\n  function absSquareDistanceToLineSegment (x, y, lineX0, lineY0, lineX1, lineY1) {\n    var ldx = lineX1 - lineX0;\n    var ldy = lineY1 - lineY0;\n    var lengthSq = ldx * ldx + ldy * ldy;\n    var t = lengthSq ? Math.max(0, Math.min(1, ((x - lineX0) * ldx + (y - lineY0) * ldy) / lengthSq)) : 0;\n    var dx = x - (lineX0 + t * ldx);\n    var dy = y - (lineY0 + t * ldy);\n    return dx * dx + dy * dy\n  }\n\n  var javascript = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    generate: generate$2,\n    generateIntoCanvas: generateIntoCanvas$2,\n    generateIntoFramebuffer: generateIntoFramebuffer$1\n  });\n\n  var mainVertex = \"precision highp float;uniform vec4 uGlyphBounds;attribute vec2 aUV;attribute vec4 aLineSegment;varying vec4 vLineSegment;varying vec2 vGlyphXY;void main(){vLineSegment=aLineSegment;vGlyphXY=mix(uGlyphBounds.xy,uGlyphBounds.zw,aUV);gl_Position=vec4(mix(vec2(-1.0),vec2(1.0),aUV),0.0,1.0);}\";\n\n  var mainFragment = \"precision highp float;uniform vec4 uGlyphBounds;uniform float uMaxDistance;uniform float uExponent;varying vec4 vLineSegment;varying vec2 vGlyphXY;float absDistToSegment(vec2 point,vec2 lineA,vec2 lineB){vec2 lineDir=lineB-lineA;float lenSq=dot(lineDir,lineDir);float t=lenSq==0.0 ? 0.0 : clamp(dot(point-lineA,lineDir)/lenSq,0.0,1.0);vec2 linePt=lineA+t*lineDir;return distance(point,linePt);}void main(){vec4 seg=vLineSegment;vec2 p=vGlyphXY;float dist=absDistToSegment(p,seg.xy,seg.zw);float val=pow(1.0-clamp(dist/uMaxDistance,0.0,1.0),uExponent)*0.5;bool crossing=(seg.y>p.y!=seg.w>p.y)&&(p.x<(seg.z-seg.x)*(p.y-seg.y)/(seg.w-seg.y)+seg.x);bool crossingUp=crossing&&vLineSegment.y<vLineSegment.w;gl_FragColor=vec4(crossingUp ? 1.0/255.0 : 0.0,crossing&&!crossingUp ? 1.0/255.0 : 0.0,0.0,val);}\";\n\n  var postFragment = \"precision highp float;uniform sampler2D tex;varying vec2 vUV;void main(){vec4 color=texture2D(tex,vUV);bool inside=color.r!=color.g;float val=inside ? 1.0-color.a : color.a;gl_FragColor=vec4(val);}\";\n\n  // Single triangle covering viewport\n  var viewportUVs = new Float32Array([0, 0, 2, 0, 0, 2]);\n\n  var implicitContext = null;\n  var isTestingSupport = false;\n  var NULL_OBJECT = {};\n  var supportByCanvas = new WeakMap(); // canvas -> bool\n\n  function validateSupport (glOrCanvas) {\n    if (!isTestingSupport && !isSupported(glOrCanvas)) {\n      throw new Error('WebGL generation not supported')\n    }\n  }\n\n  function generate$1 (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, glOrCanvas) {\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n    if ( glOrCanvas === void 0 ) glOrCanvas = null;\n\n    if (!glOrCanvas) {\n      glOrCanvas = implicitContext;\n      if (!glOrCanvas) {\n        var canvas = typeof OffscreenCanvas === 'function'\n          ? new OffscreenCanvas(1, 1)\n          : typeof document !== 'undefined'\n            ? document.createElement('canvas')\n            : null;\n        if (!canvas) {\n          throw new Error('OffscreenCanvas or DOM canvas not supported')\n        }\n        glOrCanvas = implicitContext = canvas.getContext('webgl', { depth: false });\n      }\n    }\n\n    validateSupport(glOrCanvas);\n\n    var rgbaData = new Uint8Array(sdfWidth * sdfHeight * 4); //not Uint8ClampedArray, cuz Safari\n\n    // Render into a background texture framebuffer\n    withWebGLContext(glOrCanvas, function (ref) {\n      var gl = ref.gl;\n      var withTexture = ref.withTexture;\n      var withTextureFramebuffer = ref.withTextureFramebuffer;\n\n      withTexture('readable', function (texture, textureUnit) {\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sdfWidth, sdfHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n        withTextureFramebuffer(texture, textureUnit, function (framebuffer) {\n          generateIntoFramebuffer(\n            sdfWidth,\n            sdfHeight,\n            path,\n            viewBox,\n            maxDistance,\n            sdfExponent,\n            gl,\n            framebuffer,\n            0,\n            0,\n            0 // red channel\n          );\n          gl.readPixels(0, 0, sdfWidth, sdfHeight, gl.RGBA, gl.UNSIGNED_BYTE, rgbaData);\n        });\n      });\n    });\n\n    // Throw away all but the red channel\n    var data = new Uint8Array(sdfWidth * sdfHeight);\n    for (var i = 0, j = 0; i < rgbaData.length; i += 4) {\n      data[j++] = rgbaData[i];\n    }\n\n    return data\n  }\n\n  function generateIntoCanvas$1(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, x, y, channel) {\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n    if ( x === void 0 ) x = 0;\n    if ( y === void 0 ) y = 0;\n    if ( channel === void 0 ) channel = 0;\n\n    generateIntoFramebuffer(sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, canvas, null, x, y, channel);\n  }\n\n  function generateIntoFramebuffer (sdfWidth, sdfHeight, path, viewBox, maxDistance, sdfExponent, glOrCanvas, framebuffer, x, y, channel) {\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n    if ( x === void 0 ) x = 0;\n    if ( y === void 0 ) y = 0;\n    if ( channel === void 0 ) channel = 0;\n\n    // Verify support\n    validateSupport(glOrCanvas);\n\n    // Compute path segments\n    var lineSegmentCoords = [];\n    pathToLineSegments(path, function (x1, y1, x2, y2) {\n      lineSegmentCoords.push(x1, y1, x2, y2);\n    });\n    lineSegmentCoords = new Float32Array(lineSegmentCoords);\n\n    withWebGLContext(glOrCanvas, function (ref) {\n      var gl = ref.gl;\n      var isWebGL2 = ref.isWebGL2;\n      var getExtension = ref.getExtension;\n      var withProgram = ref.withProgram;\n      var withTexture = ref.withTexture;\n      var withTextureFramebuffer = ref.withTextureFramebuffer;\n      var handleContextLoss = ref.handleContextLoss;\n\n      withTexture('rawDistances', function (intermediateTexture, intermediateTextureUnit) {\n        if (sdfWidth !== intermediateTexture._lastWidth || sdfHeight !== intermediateTexture._lastHeight) {\n          gl.texImage2D(\n            gl.TEXTURE_2D, 0, gl.RGBA,\n            intermediateTexture._lastWidth = sdfWidth,\n            intermediateTexture._lastHeight = sdfHeight,\n            0, gl.RGBA, gl.UNSIGNED_BYTE, null\n          );\n        }\n\n        // Unsigned distance pass\n        withProgram('main', mainVertex, mainFragment, function (ref) {\n          var setAttribute = ref.setAttribute;\n          var setUniform = ref.setUniform;\n\n          // Init extensions\n          var instancingExtension = !isWebGL2 && getExtension('ANGLE_instanced_arrays');\n          var blendMinMaxExtension = !isWebGL2 && getExtension('EXT_blend_minmax');\n\n          // Init/update attributes\n          setAttribute('aUV', 2, gl.STATIC_DRAW, 0, viewportUVs);\n          setAttribute('aLineSegment', 4, gl.DYNAMIC_DRAW, 1, lineSegmentCoords);\n\n          // Init/update uniforms\n          setUniform.apply(void 0, [ '4f', 'uGlyphBounds' ].concat( viewBox ));\n          setUniform('1f', 'uMaxDistance', maxDistance);\n          setUniform('1f', 'uExponent', sdfExponent);\n\n          // Render initial unsigned distance / winding number info to a texture\n          withTextureFramebuffer(intermediateTexture, intermediateTextureUnit, function (framebuffer) {\n            gl.enable(gl.BLEND);\n            gl.colorMask(true, true, true, true);\n            gl.viewport(0, 0, sdfWidth, sdfHeight);\n            gl.scissor(0, 0, sdfWidth, sdfHeight);\n            gl.blendFunc(gl.ONE, gl.ONE);\n            // Red+Green channels are incremented (FUNC_ADD) for segment-ray crossings to give a \"winding number\".\n            // Alpha holds the closest (MAX) unsigned distance.\n            gl.blendEquationSeparate(gl.FUNC_ADD, isWebGL2 ? gl.MAX : blendMinMaxExtension.MAX_EXT);\n            gl.clear(gl.COLOR_BUFFER_BIT);\n            if (isWebGL2) {\n              gl.drawArraysInstanced(gl.TRIANGLES, 0, 3, lineSegmentCoords.length / 4);\n            } else {\n              instancingExtension.drawArraysInstancedANGLE(gl.TRIANGLES, 0, 3, lineSegmentCoords.length / 4);\n            }\n            // Debug\n            // const debug = new Uint8Array(sdfWidth * sdfHeight * 4)\n            // gl.readPixels(0, 0, sdfWidth, sdfHeight, gl.RGBA, gl.UNSIGNED_BYTE, debug)\n            // console.log('intermediate texture data: ', debug)\n          });\n        });\n\n        // Use the data stored in the texture to apply inside/outside and write to the output framebuffer rect+channel.\n        withProgram('post', viewportQuadVertex, postFragment, function (program) {\n          program.setAttribute('aUV', 2, gl.STATIC_DRAW, 0, viewportUVs);\n          program.setUniform('1i', 'tex', intermediateTextureUnit);\n          gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n          gl.disable(gl.BLEND);\n          gl.colorMask(channel === 0, channel === 1, channel === 2, channel === 3);\n          gl.viewport(x, y, sdfWidth, sdfHeight);\n          gl.scissor(x, y, sdfWidth, sdfHeight);\n          gl.drawArrays(gl.TRIANGLES, 0, 3);\n        });\n      });\n\n      // Handle context loss occurring during any of the above calls\n      if (gl.isContextLost()) {\n        handleContextLoss();\n        throw new Error('webgl context lost')\n      }\n    });\n  }\n\n  function isSupported (glOrCanvas) {\n    var key = (!glOrCanvas || glOrCanvas === implicitContext) ? NULL_OBJECT : (glOrCanvas.canvas || glOrCanvas);\n    var supported = supportByCanvas.get(key);\n    if (supported === undefined) {\n      isTestingSupport = true;\n      var failReason = null;\n      try {\n        // Since we can't detect all failure modes up front, let's just do a trial run of a\n        // simple path and compare what we get back to the correct expected result. This will\n        // also serve to prime the shader compilation.\n        var expectedResult = [\n          97, 106, 97, 61,\n          99, 137, 118, 80,\n          80, 118, 137, 99,\n          61, 97, 106, 97\n        ];\n        var testResult = generate$1(\n          4,\n          4,\n          'M8,8L16,8L24,24L16,24Z',\n          [0, 0, 32, 32],\n          24,\n          1,\n          glOrCanvas\n        );\n        supported = testResult && expectedResult.length === testResult.length &&\n          testResult.every(function (val, i) { return val === expectedResult[i]; });\n        if (!supported) {\n          failReason = 'bad trial run results';\n          console.info(expectedResult, testResult);\n        }\n      } catch (err) {\n        // TODO if it threw due to webgl context loss, should we maybe leave isSupported as null and try again later?\n        supported = false;\n        failReason = err.message;\n      }\n      if (failReason) {\n        console.warn('WebGL SDF generation not supported:', failReason);\n      }\n      isTestingSupport = false;\n      supportByCanvas.set(key, supported);\n    }\n    return supported\n  }\n\n  var webgl = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    generate: generate$1,\n    generateIntoCanvas: generateIntoCanvas$1,\n    generateIntoFramebuffer: generateIntoFramebuffer,\n    isSupported: isSupported\n  });\n\n  /**\n   * Generate an SDF texture image for a 2D path.\n   *\n   * @param {number} sdfWidth - width of the SDF output image in pixels.\n   * @param {number} sdfHeight - height of the SDF output image in pixels.\n   * @param {string} path - an SVG-like path string describing the glyph; should only contain commands: M/L/Q/C/Z.\n   * @param {number[]} viewBox - [minX, minY, maxX, maxY] in font units aligning with the texture's edges.\n   * @param {number} maxDistance - the maximum distance from the glyph path in font units that will be encoded; defaults\n   *        to half the maximum viewBox dimension.\n   * @param {number} [sdfExponent] - specifies an exponent for encoding the SDF's distance values; higher exponents\n   *        will give greater precision nearer the glyph's path.\n   * @return {Uint8Array}\n   */\n  function generate(\n    sdfWidth,\n    sdfHeight,\n    path,\n    viewBox,\n    maxDistance,\n    sdfExponent\n  ) {\n    if ( maxDistance === void 0 ) maxDistance = Math.max(viewBox[2] - viewBox[0], viewBox[3] - viewBox[1]) / 2;\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n\n    try {\n      return generate$1.apply(webgl, arguments)\n    } catch(e) {\n      console.info('WebGL SDF generation failed, falling back to JS', e);\n      return generate$2.apply(javascript, arguments)\n    }\n  }\n\n  /**\n   * Generate an SDF texture image for a 2D path, inserting the result into a WebGL `canvas` at a given x/y position\n   * and color channel. This is generally much faster than calling `generate` because it does not require reading pixels\n   * back from the GPU->CPU -- the `canvas` can be used directly as a WebGL texture image, so it all stays on the GPU.\n   *\n   * @param {number} sdfWidth - width of the SDF output image in pixels.\n   * @param {number} sdfHeight - height of the SDF output image in pixels.\n   * @param {string} path - an SVG-like path string describing the glyph; should only contain commands: M/L/Q/C/Z.\n   * @param {number[]} viewBox - [minX, minY, maxX, maxY] in font units aligning with the texture's edges.\n   * @param {number} maxDistance - the maximum distance from the glyph path in font units that will be encoded; defaults\n   *        to half the maximum viewBox dimension.\n   * @param {number} [sdfExponent] - specifies an exponent for encoding the SDF's distance values; higher exponents\n   *        will give greater precision nearer the glyph's path.\n   * @param {HTMLCanvasElement|OffscreenCanvas} canvas - a WebGL-enabled canvas into which the SDF will be rendered.\n   *        Only the relevant rect/channel will be modified, the rest will be preserved. To avoid unpredictable results\n   *        due to shared GL context state, this canvas should be dedicated to use by this library alone.\n   * @param {number} x - the x position at which to render the SDF.\n   * @param {number} y - the y position at which to render the SDF.\n   * @param {number} channel - the color channel index (0-4) into which the SDF will be rendered.\n   * @return {Uint8Array}\n   */\n  function generateIntoCanvas(\n    sdfWidth,\n    sdfHeight,\n    path,\n    viewBox,\n    maxDistance,\n    sdfExponent,\n    canvas,\n    x,\n    y,\n    channel\n  ) {\n    if ( maxDistance === void 0 ) maxDistance = Math.max(viewBox[2] - viewBox[0], viewBox[3] - viewBox[1]) / 2;\n    if ( sdfExponent === void 0 ) sdfExponent = 1;\n    if ( x === void 0 ) x = 0;\n    if ( y === void 0 ) y = 0;\n    if ( channel === void 0 ) channel = 0;\n\n    try {\n      return generateIntoCanvas$1.apply(webgl, arguments)\n    } catch(e) {\n      console.info('WebGL SDF generation failed, falling back to JS', e);\n      return generateIntoCanvas$2.apply(javascript, arguments)\n    }\n  }\n\n  exports.forEachPathCommand = forEachPathCommand;\n  exports.generate = generate;\n  exports.generateIntoCanvas = generateIntoCanvas;\n  exports.javascript = javascript;\n  exports.pathToLineSegments = pathToLineSegments;\n  exports.webgl = webgl;\n  exports.webglUtils = webglUtils;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n}({}));\nreturn exports\n}\n\nexport { SDFGenerator as default };\n","function bidiFactory() {\nvar bidi = (function (exports) {\n\n  // Bidi character types data, auto generated\n  var DATA = {\n    \"R\": \"13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73\",\n    \"EN\": \"1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9\",\n    \"ES\": \"17,2,6dp+1,f+1,av,16vr,mx+1,4o,2\",\n    \"ET\": \"z+2,3h+3,b+1,ym,3e+1,2o,p4+1,8,6u,7c,g6,1wc,1n9+4,30+1b,2n,6d,qhx+1,h0m,a+1,49+2,63+1,4+1,6bb+3,12jj\",\n    \"AN\": \"16o+5,2j+9,2+1,35,ed,1ff2+9,87+u\",\n    \"CS\": \"18,2+1,b,2u,12k,55v,l,17v0,2,3,53,2+1,b\",\n    \"B\": \"a,3,f+2,2v,690\",\n    \"S\": \"9,2,k\",\n    \"WS\": \"c,k,4f4,1vk+a,u,1j,335\",\n    \"ON\": \"x+1,4+4,h+5,r+5,r+3,z,5+3,2+1,2+1,5,2+2,3+4,o,w,ci+1,8+d,3+d,6+8,2+g,39+1,9,6+1,2,33,b8,3+1,3c+1,7+1,5r,b,7h+3,sa+5,2,3i+6,jg+3,ur+9,2v,ij+1,9g+9,7+a,8m,4+1,49+x,14u,2+2,c+2,e+2,e+2,e+1,i+n,e+e,2+p,u+2,e+2,36+1,2+3,2+1,b,2+2,6+5,2,2,2,h+1,5+4,6+3,3+f,16+2,5+3l,3+81,1y+p,2+40,q+a,m+13,2r+ch,2+9e,75+hf,3+v,2+2w,6e+5,f+6,75+2a,1a+p,2+2g,d+5x,r+b,6+3,4+o,g,6+1,6+2,2k+1,4,2j,5h+z,1m+1,1e+f,t+2,1f+e,d+3,4o+3,2s+1,w,535+1r,h3l+1i,93+2,2s,b+1,3l+x,2v,4g+3,21+3,kz+1,g5v+1,5a,j+9,n+v,2,3,2+8,2+1,3+2,2,3,46+1,4+4,h+5,r+5,r+a,3h+2,4+6,b+4,78,1r+24,4+c,4,1hb,ey+6,103+j,16j+c,1ux+7,5+g,fsh,jdq+1t,4,57+2e,p1,1m,1m,1m,1m,4kt+1,7j+17,5+2r,d+e,3+e,2+e,2+10,m+4,w,1n+5,1q,4z+5,4b+rb,9+c,4+c,4+37,d+2g,8+b,l+b,5+1j,9+9,7+13,9+t,3+1,27+3c,2+29,2+3q,d+d,3+4,4+2,6+6,a+o,8+6,a+2,e+6,16+42,2+1i\",\n    \"BN\": \"0+8,6+d,2s+5,2+p,e,4m9,1kt+2,2b+5,5+5,17q9+v,7k,6p+8,6+1,119d+3,440+7,96s+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+75,6p+2rz,1ben+1,1ekf+1,1ekf+1\",\n    \"NSM\": \"lc+33,7o+6,7c+18,2,2+1,2+1,2,21+a,1d+k,h,2u+6,3+5,3+1,2+3,10,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,g+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+g,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,k1+w,2db+2,3y,2p+v,ff+3,30+1,n9x+3,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,r2,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+5,3+1,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2d+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,f0c+4,1o+6,t5,1s+3,2a,f5l+1,43t+2,i+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,gzhy+6n\",\n    \"AL\": \"16w,3,2,e+1b,z+2,2+2s,g+1,8+1,b+m,2+t,s+2i,c+e,4h+f,1d+1e,1bwe+dp,3+3z,x+c,2+1,35+3y,2rm+z,5+7,b+5,dt+l,c+u,17nl+27,1t+27,4x+6n,3+d\",\n    \"LRO\": \"6ct\",\n    \"RLO\": \"6cu\",\n    \"LRE\": \"6cq\",\n    \"RLE\": \"6cr\",\n    \"PDF\": \"6cs\",\n    \"LRI\": \"6ee\",\n    \"RLI\": \"6ef\",\n    \"FSI\": \"6eg\",\n    \"PDI\": \"6eh\"\n  };\n\n  var TYPES = {};\n  var TYPES_TO_NAMES = {};\n  TYPES.L = 1; //L is the default\n  TYPES_TO_NAMES[1] = 'L';\n  Object.keys(DATA).forEach(function (type, i) {\n    TYPES[type] = 1 << (i + 1);\n    TYPES_TO_NAMES[TYPES[type]] = type;\n  });\n  Object.freeze(TYPES);\n\n  var ISOLATE_INIT_TYPES = TYPES.LRI | TYPES.RLI | TYPES.FSI;\n  var STRONG_TYPES = TYPES.L | TYPES.R | TYPES.AL;\n  var NEUTRAL_ISOLATE_TYPES = TYPES.B | TYPES.S | TYPES.WS | TYPES.ON | TYPES.FSI | TYPES.LRI | TYPES.RLI | TYPES.PDI;\n  var BN_LIKE_TYPES = TYPES.BN | TYPES.RLE | TYPES.LRE | TYPES.RLO | TYPES.LRO | TYPES.PDF;\n  var TRAILING_TYPES = TYPES.S | TYPES.WS | TYPES.B | ISOLATE_INIT_TYPES | TYPES.PDI | BN_LIKE_TYPES;\n\n  var map = null;\n\n  function parseData () {\n    if (!map) {\n      //const start = performance.now()\n      map = new Map();\n      var loop = function ( type ) {\n        if (DATA.hasOwnProperty(type)) {\n          var lastCode = 0;\n          DATA[type].split(',').forEach(function (range) {\n            var ref = range.split('+');\n            var skip = ref[0];\n            var step = ref[1];\n            skip = parseInt(skip, 36);\n            step = step ? parseInt(step, 36) : 0;\n            map.set(lastCode += skip, TYPES[type]);\n            for (var i = 0; i < step; i++) {\n              map.set(++lastCode, TYPES[type]);\n            }\n          });\n        }\n      };\n\n      for (var type in DATA) loop( type );\n      //console.log(`char types parsed in ${performance.now() - start}ms`)\n    }\n  }\n\n  /**\n   * @param {string} char\n   * @return {number}\n   */\n  function getBidiCharType (char) {\n    parseData();\n    return map.get(char.codePointAt(0)) || TYPES.L\n  }\n\n  function getBidiCharTypeName(char) {\n    return TYPES_TO_NAMES[getBidiCharType(char)]\n  }\n\n  // Bidi bracket pairs data, auto generated\n  var data$1 = {\n    \"pairs\": \"14>1,1e>2,u>2,2wt>1,1>1,1ge>1,1wp>1,1j>1,f>1,hm>1,1>1,u>1,u6>1,1>1,+5,28>1,w>1,1>1,+3,b8>1,1>1,+3,1>3,-1>-1,3>1,1>1,+2,1s>1,1>1,x>1,th>1,1>1,+2,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,4q>1,1e>2,u>2,2>1,+1\",\n    \"canonical\": \"6f1>-6dx,6dy>-6dx,6ec>-6ed,6ee>-6ed,6ww>2jj,-2ji>2jj,14r4>-1e7l,1e7m>-1e7l,1e7m>-1e5c,1e5d>-1e5b,1e5c>-14qx,14qy>-14qx,14vn>-1ecg,1ech>-1ecg,1edu>-1ecg,1eci>-1ecg,1eda>-1ecg,1eci>-1ecg,1eci>-168q,168r>-168q,168s>-14ye,14yf>-14ye\"\n  };\n\n  /**\n   * Parses an string that holds encoded codepoint mappings, e.g. for bracket pairs or\n   * mirroring characters, as encoded by scripts/generateBidiData.js. Returns an object\n   * holding the `map`, and optionally a `reverseMap` if `includeReverse:true`.\n   * @param {string} encodedString\n   * @param {boolean} includeReverse - true if you want reverseMap in the output\n   * @return {{map: Map<number, number>, reverseMap?: Map<number, number>}}\n   */\n  function parseCharacterMap (encodedString, includeReverse) {\n    var radix = 36;\n    var lastCode = 0;\n    var map = new Map();\n    var reverseMap = includeReverse && new Map();\n    var prevPair;\n    encodedString.split(',').forEach(function visit(entry) {\n      if (entry.indexOf('+') !== -1) {\n        for (var i = +entry; i--;) {\n          visit(prevPair);\n        }\n      } else {\n        prevPair = entry;\n        var ref = entry.split('>');\n        var a = ref[0];\n        var b = ref[1];\n        a = String.fromCodePoint(lastCode += parseInt(a, radix));\n        b = String.fromCodePoint(lastCode += parseInt(b, radix));\n        map.set(a, b);\n        includeReverse && reverseMap.set(b, a);\n      }\n    });\n    return { map: map, reverseMap: reverseMap }\n  }\n\n  var openToClose, closeToOpen, canonical;\n\n  function parse$1 () {\n    if (!openToClose) {\n      //const start = performance.now()\n      var ref = parseCharacterMap(data$1.pairs, true);\n      var map = ref.map;\n      var reverseMap = ref.reverseMap;\n      openToClose = map;\n      closeToOpen = reverseMap;\n      canonical = parseCharacterMap(data$1.canonical, false).map;\n      //console.log(`brackets parsed in ${performance.now() - start}ms`)\n    }\n  }\n\n  function openingToClosingBracket (char) {\n    parse$1();\n    return openToClose.get(char) || null\n  }\n\n  function closingToOpeningBracket (char) {\n    parse$1();\n    return closeToOpen.get(char) || null\n  }\n\n  function getCanonicalBracket (char) {\n    parse$1();\n    return canonical.get(char) || null\n  }\n\n  // Local type aliases\n  var TYPE_L = TYPES.L;\n  var TYPE_R = TYPES.R;\n  var TYPE_EN = TYPES.EN;\n  var TYPE_ES = TYPES.ES;\n  var TYPE_ET = TYPES.ET;\n  var TYPE_AN = TYPES.AN;\n  var TYPE_CS = TYPES.CS;\n  var TYPE_B = TYPES.B;\n  var TYPE_S = TYPES.S;\n  var TYPE_ON = TYPES.ON;\n  var TYPE_BN = TYPES.BN;\n  var TYPE_NSM = TYPES.NSM;\n  var TYPE_AL = TYPES.AL;\n  var TYPE_LRO = TYPES.LRO;\n  var TYPE_RLO = TYPES.RLO;\n  var TYPE_LRE = TYPES.LRE;\n  var TYPE_RLE = TYPES.RLE;\n  var TYPE_PDF = TYPES.PDF;\n  var TYPE_LRI = TYPES.LRI;\n  var TYPE_RLI = TYPES.RLI;\n  var TYPE_FSI = TYPES.FSI;\n  var TYPE_PDI = TYPES.PDI;\n\n  /**\n   * @typedef {object} GetEmbeddingLevelsResult\n   * @property {{start, end, level}[]} paragraphs\n   * @property {Uint8Array} levels\n   */\n\n  /**\n   * This function applies the Bidirectional Algorithm to a string, returning the resolved embedding levels\n   * in a single Uint8Array plus a list of objects holding each paragraph's start and end indices and resolved\n   * base embedding level.\n   *\n   * @param {string} string - The input string\n   * @param {\"ltr\"|\"rtl\"|\"auto\"} [baseDirection] - Use \"ltr\" or \"rtl\" to force a base paragraph direction,\n   *        otherwise a direction will be chosen automatically from each paragraph's contents.\n   * @return {GetEmbeddingLevelsResult}\n   */\n  function getEmbeddingLevels (string, baseDirection) {\n    var MAX_DEPTH = 125;\n\n    // Start by mapping all characters to their unicode type, as a bitmask integer\n    var charTypes = new Uint32Array(string.length);\n    for (var i = 0; i < string.length; i++) {\n      charTypes[i] = getBidiCharType(string[i]);\n    }\n\n    var charTypeCounts = new Map(); //will be cleared at start of each paragraph\n    function changeCharType(i, type) {\n      var oldType = charTypes[i];\n      charTypes[i] = type;\n      charTypeCounts.set(oldType, charTypeCounts.get(oldType) - 1);\n      if (oldType & NEUTRAL_ISOLATE_TYPES) {\n        charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) - 1);\n      }\n      charTypeCounts.set(type, (charTypeCounts.get(type) || 0) + 1);\n      if (type & NEUTRAL_ISOLATE_TYPES) {\n        charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n      }\n    }\n\n    var embedLevels = new Uint8Array(string.length);\n    var isolationPairs = new Map(); //init->pdi and pdi->init\n\n    // === 3.3.1 The Paragraph Level ===\n    // 3.3.1 P1: Split the text into paragraphs\n    var paragraphs = []; // [{start, end, level}, ...]\n    var paragraph = null;\n    for (var i$1 = 0; i$1 < string.length; i$1++) {\n      if (!paragraph) {\n        paragraphs.push(paragraph = {\n          start: i$1,\n          end: string.length - 1,\n          // 3.3.1 P2-P3: Determine the paragraph level\n          level: baseDirection === 'rtl' ? 1 : baseDirection === 'ltr' ? 0 : determineAutoEmbedLevel(i$1, false)\n        });\n      }\n      if (charTypes[i$1] & TYPE_B) {\n        paragraph.end = i$1;\n        paragraph = null;\n      }\n    }\n\n    var FORMATTING_TYPES = TYPE_RLE | TYPE_LRE | TYPE_RLO | TYPE_LRO | ISOLATE_INIT_TYPES | TYPE_PDI | TYPE_PDF | TYPE_B;\n    var nextEven = function (n) { return n + ((n & 1) ? 1 : 2); };\n    var nextOdd = function (n) { return n + ((n & 1) ? 2 : 1); };\n\n    // Everything from here on will operate per paragraph.\n    for (var paraIdx = 0; paraIdx < paragraphs.length; paraIdx++) {\n      paragraph = paragraphs[paraIdx];\n      var statusStack = [{\n        _level: paragraph.level,\n        _override: 0, //0=neutral, 1=L, 2=R\n        _isolate: 0 //bool\n      }];\n      var stackTop = (void 0);\n      var overflowIsolateCount = 0;\n      var overflowEmbeddingCount = 0;\n      var validIsolateCount = 0;\n      charTypeCounts.clear();\n\n      // === 3.3.2 Explicit Levels and Directions ===\n      for (var i$2 = paragraph.start; i$2 <= paragraph.end; i$2++) {\n        var charType = charTypes[i$2];\n        stackTop = statusStack[statusStack.length - 1];\n\n        // Set initial counts\n        charTypeCounts.set(charType, (charTypeCounts.get(charType) || 0) + 1);\n        if (charType & NEUTRAL_ISOLATE_TYPES) {\n          charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n        }\n\n        // Explicit Embeddings: 3.3.2 X2 - X3\n        if (charType & FORMATTING_TYPES) { //prefilter all formatters\n          if (charType & (TYPE_RLE | TYPE_LRE)) {\n            embedLevels[i$2] = stackTop._level; // 5.2\n            var level = (charType === TYPE_RLE ? nextOdd : nextEven)(stackTop._level);\n            if (level <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n              statusStack.push({\n                _level: level,\n                _override: 0,\n                _isolate: 0\n              });\n            } else if (!overflowIsolateCount) {\n              overflowEmbeddingCount++;\n            }\n          }\n\n          // Explicit Overrides: 3.3.2 X4 - X5\n          else if (charType & (TYPE_RLO | TYPE_LRO)) {\n            embedLevels[i$2] = stackTop._level; // 5.2\n            var level$1 = (charType === TYPE_RLO ? nextOdd : nextEven)(stackTop._level);\n            if (level$1 <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n              statusStack.push({\n                _level: level$1,\n                _override: (charType & TYPE_RLO) ? TYPE_R : TYPE_L,\n                _isolate: 0\n              });\n            } else if (!overflowIsolateCount) {\n              overflowEmbeddingCount++;\n            }\n          }\n\n          // Isolates: 3.3.2 X5a - X5c\n          else if (charType & ISOLATE_INIT_TYPES) {\n            // X5c - FSI becomes either RLI or LRI\n            if (charType & TYPE_FSI) {\n              charType = determineAutoEmbedLevel(i$2 + 1, true) === 1 ? TYPE_RLI : TYPE_LRI;\n            }\n\n            embedLevels[i$2] = stackTop._level;\n            if (stackTop._override) {\n              changeCharType(i$2, stackTop._override);\n            }\n            var level$2 = (charType === TYPE_RLI ? nextOdd : nextEven)(stackTop._level);\n            if (level$2 <= MAX_DEPTH && overflowIsolateCount === 0 && overflowEmbeddingCount === 0) {\n              validIsolateCount++;\n              statusStack.push({\n                _level: level$2,\n                _override: 0,\n                _isolate: 1,\n                _isolInitIndex: i$2\n              });\n            } else {\n              overflowIsolateCount++;\n            }\n          }\n\n          // Terminating Isolates: 3.3.2 X6a\n          else if (charType & TYPE_PDI) {\n            if (overflowIsolateCount > 0) {\n              overflowIsolateCount--;\n            } else if (validIsolateCount > 0) {\n              overflowEmbeddingCount = 0;\n              while (!statusStack[statusStack.length - 1]._isolate) {\n                statusStack.pop();\n              }\n              // Add to isolation pairs bidirectional mapping:\n              var isolInitIndex = statusStack[statusStack.length - 1]._isolInitIndex;\n              if (isolInitIndex != null) {\n                isolationPairs.set(isolInitIndex, i$2);\n                isolationPairs.set(i$2, isolInitIndex);\n              }\n              statusStack.pop();\n              validIsolateCount--;\n            }\n            stackTop = statusStack[statusStack.length - 1];\n            embedLevels[i$2] = stackTop._level;\n            if (stackTop._override) {\n              changeCharType(i$2, stackTop._override);\n            }\n          }\n\n\n          // Terminating Embeddings and Overrides: 3.3.2 X7\n          else if (charType & TYPE_PDF) {\n            if (overflowIsolateCount === 0) {\n              if (overflowEmbeddingCount > 0) {\n                overflowEmbeddingCount--;\n              } else if (!stackTop._isolate && statusStack.length > 1) {\n                statusStack.pop();\n                stackTop = statusStack[statusStack.length - 1];\n              }\n            }\n            embedLevels[i$2] = stackTop._level; // 5.2\n          }\n\n          // End of Paragraph: 3.3.2 X8\n          else if (charType & TYPE_B) {\n            embedLevels[i$2] = paragraph.level;\n          }\n        }\n\n        // Non-formatting characters: 3.3.2 X6\n        else {\n          embedLevels[i$2] = stackTop._level;\n          // NOTE: This exclusion of BN seems to go against what section 5.2 says, but is required for test passage\n          if (stackTop._override && charType !== TYPE_BN) {\n            changeCharType(i$2, stackTop._override);\n          }\n        }\n      }\n\n      // === 3.3.3 Preparations for Implicit Processing ===\n\n      // Remove all RLE, LRE, RLO, LRO, PDF, and BN characters: 3.3.3 X9\n      // Note: Due to section 5.2, we won't remove them, but we'll use the BN_LIKE_TYPES bitset to\n      // easily ignore them all from here on out.\n\n      // 3.3.3 X10\n      // Compute the set of isolating run sequences as specified by BD13\n      var levelRuns = [];\n      var currentRun = null;\n      for (var i$3 = paragraph.start; i$3 <= paragraph.end; i$3++) {\n        var charType$1 = charTypes[i$3];\n        if (!(charType$1 & BN_LIKE_TYPES)) {\n          var lvl = embedLevels[i$3];\n          var isIsolInit = charType$1 & ISOLATE_INIT_TYPES;\n          var isPDI = charType$1 === TYPE_PDI;\n          if (currentRun && lvl === currentRun._level) {\n            currentRun._end = i$3;\n            currentRun._endsWithIsolInit = isIsolInit;\n          } else {\n            levelRuns.push(currentRun = {\n              _start: i$3,\n              _end: i$3,\n              _level: lvl,\n              _startsWithPDI: isPDI,\n              _endsWithIsolInit: isIsolInit\n            });\n          }\n        }\n      }\n      var isolatingRunSeqs = []; // [{seqIndices: [], sosType: L|R, eosType: L|R}]\n      for (var runIdx = 0; runIdx < levelRuns.length; runIdx++) {\n        var run = levelRuns[runIdx];\n        if (!run._startsWithPDI || (run._startsWithPDI && !isolationPairs.has(run._start))) {\n          var seqRuns = [currentRun = run];\n          for (var pdiIndex = (void 0); currentRun && currentRun._endsWithIsolInit && (pdiIndex = isolationPairs.get(currentRun._end)) != null;) {\n            for (var i$4 = runIdx + 1; i$4 < levelRuns.length; i$4++) {\n              if (levelRuns[i$4]._start === pdiIndex) {\n                seqRuns.push(currentRun = levelRuns[i$4]);\n                break\n              }\n            }\n          }\n          // build flat list of indices across all runs:\n          var seqIndices = [];\n          for (var i$5 = 0; i$5 < seqRuns.length; i$5++) {\n            var run$1 = seqRuns[i$5];\n            for (var j = run$1._start; j <= run$1._end; j++) {\n              seqIndices.push(j);\n            }\n          }\n          // determine the sos/eos types:\n          var firstLevel = embedLevels[seqIndices[0]];\n          var prevLevel = paragraph.level;\n          for (var i$6 = seqIndices[0] - 1; i$6 >= 0; i$6--) {\n            if (!(charTypes[i$6] & BN_LIKE_TYPES)) { //5.2\n              prevLevel = embedLevels[i$6];\n              break\n            }\n          }\n          var lastIndex = seqIndices[seqIndices.length - 1];\n          var lastLevel = embedLevels[lastIndex];\n          var nextLevel = paragraph.level;\n          if (!(charTypes[lastIndex] & ISOLATE_INIT_TYPES)) {\n            for (var i$7 = lastIndex + 1; i$7 <= paragraph.end; i$7++) {\n              if (!(charTypes[i$7] & BN_LIKE_TYPES)) { //5.2\n                nextLevel = embedLevels[i$7];\n                break\n              }\n            }\n          }\n          isolatingRunSeqs.push({\n            _seqIndices: seqIndices,\n            _sosType: Math.max(prevLevel, firstLevel) % 2 ? TYPE_R : TYPE_L,\n            _eosType: Math.max(nextLevel, lastLevel) % 2 ? TYPE_R : TYPE_L\n          });\n        }\n      }\n\n      // The next steps are done per isolating run sequence\n      for (var seqIdx = 0; seqIdx < isolatingRunSeqs.length; seqIdx++) {\n        var ref = isolatingRunSeqs[seqIdx];\n        var seqIndices$1 = ref._seqIndices;\n        var sosType = ref._sosType;\n        var eosType = ref._eosType;\n\n        // === 3.3.4 Resolving Weak Types ===\n\n        // W1 + 5.2. Search backward from each NSM to the first character in the isolating run sequence whose\n        // bidirectional type is not BN, and set the NSM to ON if it is an isolate initiator or PDI, and to its\n        // type otherwise. If the NSM is the first non-BN character, change the NSM to the type of sos.\n        if (charTypeCounts.get(TYPE_NSM)) {\n          for (var si = 0; si < seqIndices$1.length; si++) {\n            var i$8 = seqIndices$1[si];\n            if (charTypes[i$8] & TYPE_NSM) {\n              var prevType = sosType;\n              for (var sj = si - 1; sj >= 0; sj--) {\n                if (!(charTypes[seqIndices$1[sj]] & BN_LIKE_TYPES)) { //5.2 scan back to first non-BN\n                  prevType = charTypes[seqIndices$1[sj]];\n                  break\n                }\n              }\n              changeCharType(i$8, (prevType & (ISOLATE_INIT_TYPES | TYPE_PDI)) ? TYPE_ON : prevType);\n            }\n          }\n        }\n\n        // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sos)\n        // is found. If an AL is found, change the type of the European number to Arabic number.\n        if (charTypeCounts.get(TYPE_EN)) {\n          for (var si$1 = 0; si$1 < seqIndices$1.length; si$1++) {\n            var i$9 = seqIndices$1[si$1];\n            if (charTypes[i$9] & TYPE_EN) {\n              for (var sj$1 = si$1 - 1; sj$1 >= -1; sj$1--) {\n                var prevCharType = sj$1 === -1 ? sosType : charTypes[seqIndices$1[sj$1]];\n                if (prevCharType & STRONG_TYPES) {\n                  if (prevCharType === TYPE_AL) {\n                    changeCharType(i$9, TYPE_AN);\n                  }\n                  break\n                }\n              }\n            }\n          }\n        }\n\n        // W3. Change all ALs to R\n        if (charTypeCounts.get(TYPE_AL)) {\n          for (var si$2 = 0; si$2 < seqIndices$1.length; si$2++) {\n            var i$10 = seqIndices$1[si$2];\n            if (charTypes[i$10] & TYPE_AL) {\n              changeCharType(i$10, TYPE_R);\n            }\n          }\n        }\n\n        // W4. A single European separator between two European numbers changes to a European number. A single common\n        // separator between two numbers of the same type changes to that type.\n        if (charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n          for (var si$3 = 1; si$3 < seqIndices$1.length - 1; si$3++) {\n            var i$11 = seqIndices$1[si$3];\n            if (charTypes[i$11] & (TYPE_ES | TYPE_CS)) {\n              var prevType$1 = 0, nextType = 0;\n              for (var sj$2 = si$3 - 1; sj$2 >= 0; sj$2--) {\n                prevType$1 = charTypes[seqIndices$1[sj$2]];\n                if (!(prevType$1 & BN_LIKE_TYPES)) { //5.2\n                  break\n                }\n              }\n              for (var sj$3 = si$3 + 1; sj$3 < seqIndices$1.length; sj$3++) {\n                nextType = charTypes[seqIndices$1[sj$3]];\n                if (!(nextType & BN_LIKE_TYPES)) { //5.2\n                  break\n                }\n              }\n              if (prevType$1 === nextType && (charTypes[i$11] === TYPE_ES ? prevType$1 === TYPE_EN : (prevType$1 & (TYPE_EN | TYPE_AN)))) {\n                changeCharType(i$11, prevType$1);\n              }\n            }\n          }\n        }\n\n        // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers.\n        if (charTypeCounts.get(TYPE_EN)) {\n          for (var si$4 = 0; si$4 < seqIndices$1.length; si$4++) {\n            var i$12 = seqIndices$1[si$4];\n            if (charTypes[i$12] & TYPE_EN) {\n              for (var sj$4 = si$4 - 1; sj$4 >= 0 && (charTypes[seqIndices$1[sj$4]] & (TYPE_ET | BN_LIKE_TYPES)); sj$4--) {\n                changeCharType(seqIndices$1[sj$4], TYPE_EN);\n              }\n              for (var sj$5 = si$4 + 1; sj$5 < seqIndices$1.length && (charTypes[seqIndices$1[sj$5]] & (TYPE_ET | BN_LIKE_TYPES)); sj$5++) {\n                changeCharType(seqIndices$1[sj$5], TYPE_EN);\n              }\n            }\n          }\n        }\n\n        // W6. Otherwise, separators and terminators change to Other Neutral.\n        if (charTypeCounts.get(TYPE_ET) || charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n          for (var si$5 = 0; si$5 < seqIndices$1.length; si$5++) {\n            var i$13 = seqIndices$1[si$5];\n            if (charTypes[i$13] & (TYPE_ET | TYPE_ES | TYPE_CS)) {\n              changeCharType(i$13, TYPE_ON);\n              // 5.2 transform adjacent BNs too:\n              for (var sj$6 = si$5 - 1; sj$6 >= 0 && (charTypes[seqIndices$1[sj$6]] & BN_LIKE_TYPES); sj$6--) {\n                changeCharType(seqIndices$1[sj$6], TYPE_ON);\n              }\n              for (var sj$7 = si$5 + 1; sj$7 < seqIndices$1.length && (charTypes[seqIndices$1[sj$7]] & BN_LIKE_TYPES); sj$7++) {\n                changeCharType(seqIndices$1[sj$7], TYPE_ON);\n              }\n            }\n          }\n        }\n\n        // W7. Search backward from each instance of a European number until the first strong type (R, L, or sos)\n        // is found. If an L is found, then change the type of the European number to L.\n        // NOTE: implemented in single forward pass for efficiency\n        if (charTypeCounts.get(TYPE_EN)) {\n          for (var si$6 = 0, prevStrongType = sosType; si$6 < seqIndices$1.length; si$6++) {\n            var i$14 = seqIndices$1[si$6];\n            var type = charTypes[i$14];\n            if (type & TYPE_EN) {\n              if (prevStrongType === TYPE_L) {\n                changeCharType(i$14, TYPE_L);\n              }\n            } else if (type & STRONG_TYPES) {\n              prevStrongType = type;\n            }\n          }\n        }\n\n        // === 3.3.5 Resolving Neutral and Isolate Formatting Types ===\n\n        if (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES)) {\n          // N0. Process bracket pairs in an isolating run sequence sequentially in the logical order of the text\n          // positions of the opening paired brackets using the logic given below. Within this scope, bidirectional\n          // types EN and AN are treated as R.\n          var R_TYPES_FOR_N_STEPS = (TYPE_R | TYPE_EN | TYPE_AN);\n          var STRONG_TYPES_FOR_N_STEPS = R_TYPES_FOR_N_STEPS | TYPE_L;\n\n          // * Identify the bracket pairs in the current isolating run sequence according to BD16.\n          var bracketPairs = [];\n          {\n            var openerStack = [];\n            for (var si$7 = 0; si$7 < seqIndices$1.length; si$7++) {\n              // NOTE: for any potential bracket character we also test that it still carries a NI\n              // type, as that may have been changed earlier. This doesn't seem to be explicitly\n              // called out in the spec, but is required for passage of certain tests.\n              if (charTypes[seqIndices$1[si$7]] & NEUTRAL_ISOLATE_TYPES) {\n                var char = string[seqIndices$1[si$7]];\n                var oppositeBracket = (void 0);\n                // Opening bracket\n                if (openingToClosingBracket(char) !== null) {\n                  if (openerStack.length < 63) {\n                    openerStack.push({ char: char, seqIndex: si$7 });\n                  } else {\n                    break\n                  }\n                }\n                // Closing bracket\n                else if ((oppositeBracket = closingToOpeningBracket(char)) !== null) {\n                  for (var stackIdx = openerStack.length - 1; stackIdx >= 0; stackIdx--) {\n                    var stackChar = openerStack[stackIdx].char;\n                    if (stackChar === oppositeBracket ||\n                      stackChar === closingToOpeningBracket(getCanonicalBracket(char)) ||\n                      openingToClosingBracket(getCanonicalBracket(stackChar)) === char\n                    ) {\n                      bracketPairs.push([openerStack[stackIdx].seqIndex, si$7]);\n                      openerStack.length = stackIdx; //pop the matching bracket and all following\n                      break\n                    }\n                  }\n                }\n              }\n            }\n            bracketPairs.sort(function (a, b) { return a[0] - b[0]; });\n          }\n          // * For each bracket-pair element in the list of pairs of text positions\n          for (var pairIdx = 0; pairIdx < bracketPairs.length; pairIdx++) {\n            var ref$1 = bracketPairs[pairIdx];\n            var openSeqIdx = ref$1[0];\n            var closeSeqIdx = ref$1[1];\n            // a. Inspect the bidirectional types of the characters enclosed within the bracket pair.\n            // b. If any strong type (either L or R) matching the embedding direction is found, set the type for both\n            // brackets in the pair to match the embedding direction.\n            var foundStrongType = false;\n            var useStrongType = 0;\n            for (var si$8 = openSeqIdx + 1; si$8 < closeSeqIdx; si$8++) {\n              var i$15 = seqIndices$1[si$8];\n              if (charTypes[i$15] & STRONG_TYPES_FOR_N_STEPS) {\n                foundStrongType = true;\n                var lr = (charTypes[i$15] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                if (lr === getEmbedDirection(i$15)) {\n                  useStrongType = lr;\n                  break\n                }\n              }\n            }\n            // c. Otherwise, if there is a strong type it must be opposite the embedding direction. Therefore, test\n            // for an established context with a preceding strong type by checking backwards before the opening paired\n            // bracket until the first strong type (L, R, or sos) is found.\n            //    1. If the preceding strong type is also opposite the embedding direction, context is established, so\n            //    set the type for both brackets in the pair to that direction.\n            //    2. Otherwise set the type for both brackets in the pair to the embedding direction.\n            if (foundStrongType && !useStrongType) {\n              useStrongType = sosType;\n              for (var si$9 = openSeqIdx - 1; si$9 >= 0; si$9--) {\n                var i$16 = seqIndices$1[si$9];\n                if (charTypes[i$16] & STRONG_TYPES_FOR_N_STEPS) {\n                  var lr$1 = (charTypes[i$16] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                  if (lr$1 !== getEmbedDirection(i$16)) {\n                    useStrongType = lr$1;\n                  } else {\n                    useStrongType = getEmbedDirection(i$16);\n                  }\n                  break\n                }\n              }\n            }\n            if (useStrongType) {\n              charTypes[seqIndices$1[openSeqIdx]] = charTypes[seqIndices$1[closeSeqIdx]] = useStrongType;\n              // * Any number of characters that had original bidirectional character type NSM prior to the application\n              // of W1 that immediately follow a paired bracket which changed to L or R under N0 should change to match\n              // the type of their preceding bracket.\n              if (useStrongType !== getEmbedDirection(seqIndices$1[openSeqIdx])) {\n                for (var si$10 = openSeqIdx + 1; si$10 < seqIndices$1.length; si$10++) {\n                  if (!(charTypes[seqIndices$1[si$10]] & BN_LIKE_TYPES)) {\n                    if (getBidiCharType(string[seqIndices$1[si$10]]) & TYPE_NSM) {\n                      charTypes[seqIndices$1[si$10]] = useStrongType;\n                    }\n                    break\n                  }\n                }\n              }\n              if (useStrongType !== getEmbedDirection(seqIndices$1[closeSeqIdx])) {\n                for (var si$11 = closeSeqIdx + 1; si$11 < seqIndices$1.length; si$11++) {\n                  if (!(charTypes[seqIndices$1[si$11]] & BN_LIKE_TYPES)) {\n                    if (getBidiCharType(string[seqIndices$1[si$11]]) & TYPE_NSM) {\n                      charTypes[seqIndices$1[si$11]] = useStrongType;\n                    }\n                    break\n                  }\n                }\n              }\n            }\n          }\n\n          // N1. A sequence of NIs takes the direction of the surrounding strong text if the text on both sides has the\n          // same direction.\n          // N2. Any remaining NIs take the embedding direction.\n          for (var si$12 = 0; si$12 < seqIndices$1.length; si$12++) {\n            if (charTypes[seqIndices$1[si$12]] & NEUTRAL_ISOLATE_TYPES) {\n              var niRunStart = si$12, niRunEnd = si$12;\n              var prevType$2 = sosType; //si === 0 ? sosType : (charTypes[seqIndices[si - 1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L\n              for (var si2 = si$12 - 1; si2 >= 0; si2--) {\n                if (charTypes[seqIndices$1[si2]] & BN_LIKE_TYPES) {\n                  niRunStart = si2; //5.2 treat BNs adjacent to NIs as NIs\n                } else {\n                  prevType$2 = (charTypes[seqIndices$1[si2]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                  break\n                }\n              }\n              var nextType$1 = eosType;\n              for (var si2$1 = si$12 + 1; si2$1 < seqIndices$1.length; si2$1++) {\n                if (charTypes[seqIndices$1[si2$1]] & (NEUTRAL_ISOLATE_TYPES | BN_LIKE_TYPES)) {\n                  niRunEnd = si2$1;\n                } else {\n                  nextType$1 = (charTypes[seqIndices$1[si2$1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                  break\n                }\n              }\n              for (var sj$8 = niRunStart; sj$8 <= niRunEnd; sj$8++) {\n                charTypes[seqIndices$1[sj$8]] = prevType$2 === nextType$1 ? prevType$2 : getEmbedDirection(seqIndices$1[sj$8]);\n              }\n              si$12 = niRunEnd;\n            }\n          }\n        }\n      }\n\n      // === 3.3.6 Resolving Implicit Levels ===\n\n      for (var i$17 = paragraph.start; i$17 <= paragraph.end; i$17++) {\n        var level$3 = embedLevels[i$17];\n        var type$1 = charTypes[i$17];\n        // I2. For all characters with an odd (right-to-left) embedding level, those of type L, EN or AN go up one level.\n        if (level$3 & 1) {\n          if (type$1 & (TYPE_L | TYPE_EN | TYPE_AN)) {\n            embedLevels[i$17]++;\n          }\n        }\n          // I1. For all characters with an even (left-to-right) embedding level, those of type R go up one level\n        // and those of type AN or EN go up two levels.\n        else {\n          if (type$1 & TYPE_R) {\n            embedLevels[i$17]++;\n          } else if (type$1 & (TYPE_AN | TYPE_EN)) {\n            embedLevels[i$17] += 2;\n          }\n        }\n\n        // 5.2: Resolve any LRE, RLE, LRO, RLO, PDF, or BN to the level of the preceding character if there is one,\n        // and otherwise to the base level.\n        if (type$1 & BN_LIKE_TYPES) {\n          embedLevels[i$17] = i$17 === 0 ? paragraph.level : embedLevels[i$17 - 1];\n        }\n\n        // 3.4 L1.1-4: Reset the embedding level of segment/paragraph separators, and any sequence of whitespace or\n        // isolate formatting characters preceding them or the end of the paragraph, to the paragraph level.\n        // NOTE: this will also need to be applied to each individual line ending after line wrapping occurs.\n        if (i$17 === paragraph.end || getBidiCharType(string[i$17]) & (TYPE_S | TYPE_B)) {\n          for (var j$1 = i$17; j$1 >= 0 && (getBidiCharType(string[j$1]) & TRAILING_TYPES); j$1--) {\n            embedLevels[j$1] = paragraph.level;\n          }\n        }\n      }\n    }\n\n    // DONE! The resolved levels can then be used, after line wrapping, to flip runs of characters\n    // according to section 3.4 Reordering Resolved Levels\n    return {\n      levels: embedLevels,\n      paragraphs: paragraphs\n    }\n\n    function determineAutoEmbedLevel (start, isFSI) {\n      // 3.3.1 P2 - P3\n      for (var i = start; i < string.length; i++) {\n        var charType = charTypes[i];\n        if (charType & (TYPE_R | TYPE_AL)) {\n          return 1\n        }\n        if ((charType & (TYPE_B | TYPE_L)) || (isFSI && charType === TYPE_PDI)) {\n          return 0\n        }\n        if (charType & ISOLATE_INIT_TYPES) {\n          var pdi = indexOfMatchingPDI(i);\n          i = pdi === -1 ? string.length : pdi;\n        }\n      }\n      return 0\n    }\n\n    function indexOfMatchingPDI (isolateStart) {\n      // 3.1.2 BD9\n      var isolationLevel = 1;\n      for (var i = isolateStart + 1; i < string.length; i++) {\n        var charType = charTypes[i];\n        if (charType & TYPE_B) {\n          break\n        }\n        if (charType & TYPE_PDI) {\n          if (--isolationLevel === 0) {\n            return i\n          }\n        } else if (charType & ISOLATE_INIT_TYPES) {\n          isolationLevel++;\n        }\n      }\n      return -1\n    }\n\n    function getEmbedDirection (i) {\n      return (embedLevels[i] & 1) ? TYPE_R : TYPE_L\n    }\n\n  }\n\n  // Bidi mirrored chars data, auto generated\n  var data = \"14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1\";\n\n  var mirrorMap;\n\n  function parse () {\n    if (!mirrorMap) {\n      //const start = performance.now()\n      var ref = parseCharacterMap(data, true);\n      var map = ref.map;\n      var reverseMap = ref.reverseMap;\n      // Combine both maps into one\n      reverseMap.forEach(function (value, key) {\n        map.set(key, value);\n      });\n      mirrorMap = map;\n      //console.log(`mirrored chars parsed in ${performance.now() - start}ms`)\n    }\n  }\n\n  function getMirroredCharacter (char) {\n    parse();\n    return mirrorMap.get(char) || null\n  }\n\n  /**\n   * Given a string and its resolved embedding levels, build a map of indices to replacement chars\n   * for any characters in right-to-left segments that have defined mirrored characters.\n   * @param string\n   * @param embeddingLevels\n   * @param [start]\n   * @param [end]\n   * @return {Map<number, string>}\n   */\n  function getMirroredCharactersMap(string, embeddingLevels, start, end) {\n    var strLen = string.length;\n    start = Math.max(0, start == null ? 0 : +start);\n    end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n    var map = new Map();\n    for (var i = start; i <= end; i++) {\n      if (embeddingLevels[i] & 1) { //only odd (rtl) levels\n        var mirror = getMirroredCharacter(string[i]);\n        if (mirror !== null) {\n          map.set(i, mirror);\n        }\n      }\n    }\n    return map\n  }\n\n  /**\n   * Given a start and end denoting a single line within a string, and a set of precalculated\n   * bidi embedding levels, produce a list of segments whose ordering should be flipped, in sequence.\n   * @param {string} string - the full input string\n   * @param {GetEmbeddingLevelsResult} embeddingLevelsResult - the result object from getEmbeddingLevels\n   * @param {number} [start] - first character in a subset of the full string\n   * @param {number} [end] - last character in a subset of the full string\n   * @return {number[][]} - the list of start/end segments that should be flipped, in order.\n   */\n  function getReorderSegments(string, embeddingLevelsResult, start, end) {\n    var strLen = string.length;\n    start = Math.max(0, start == null ? 0 : +start);\n    end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n    var segments = [];\n    embeddingLevelsResult.paragraphs.forEach(function (paragraph) {\n      var lineStart = Math.max(start, paragraph.start);\n      var lineEnd = Math.min(end, paragraph.end);\n      if (lineStart < lineEnd) {\n        // Local slice for mutation\n        var lineLevels = embeddingLevelsResult.levels.slice(lineStart, lineEnd + 1);\n\n        // 3.4 L1.4: Reset any sequence of whitespace characters and/or isolate formatting characters at the\n        // end of the line to the paragraph level.\n        for (var i = lineEnd; i >= lineStart && (getBidiCharType(string[i]) & TRAILING_TYPES); i--) {\n          lineLevels[i] = paragraph.level;\n        }\n\n        // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels\n        // not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.\n        var maxLevel = paragraph.level;\n        var minOddLevel = Infinity;\n        for (var i$1 = 0; i$1 < lineLevels.length; i$1++) {\n          var level = lineLevels[i$1];\n          if (level > maxLevel) { maxLevel = level; }\n          if (level < minOddLevel) { minOddLevel = level | 1; }\n        }\n        for (var lvl = maxLevel; lvl >= minOddLevel; lvl--) {\n          for (var i$2 = 0; i$2 < lineLevels.length; i$2++) {\n            if (lineLevels[i$2] >= lvl) {\n              var segStart = i$2;\n              while (i$2 + 1 < lineLevels.length && lineLevels[i$2 + 1] >= lvl) {\n                i$2++;\n              }\n              if (i$2 > segStart) {\n                segments.push([segStart + start, i$2 + start]);\n              }\n            }\n          }\n        }\n      }\n    });\n    return segments\n  }\n\n  /**\n   * @param {string} string\n   * @param {GetEmbeddingLevelsResult} embedLevelsResult\n   * @param {number} [start]\n   * @param {number} [end]\n   * @return {string} the new string with bidi segments reordered\n   */\n  function getReorderedString(string, embedLevelsResult, start, end) {\n    var indices = getReorderedIndices(string, embedLevelsResult, start, end);\n    var chars = [].concat( string );\n    indices.forEach(function (charIndex, i) {\n      chars[i] = (\n        (embedLevelsResult.levels[charIndex] & 1) ? getMirroredCharacter(string[charIndex]) : null\n      ) || string[charIndex];\n    });\n    return chars.join('')\n  }\n\n  /**\n   * @param {string} string\n   * @param {GetEmbeddingLevelsResult} embedLevelsResult\n   * @param {number} [start]\n   * @param {number} [end]\n   * @return {number[]} an array with character indices in their new bidi order\n   */\n  function getReorderedIndices(string, embedLevelsResult, start, end) {\n    var segments = getReorderSegments(string, embedLevelsResult, start, end);\n    // Fill an array with indices\n    var indices = [];\n    for (var i = 0; i < string.length; i++) {\n      indices[i] = i;\n    }\n    // Reverse each segment in order\n    segments.forEach(function (ref) {\n      var start = ref[0];\n      var end = ref[1];\n\n      var slice = indices.slice(start, end + 1);\n      for (var i = slice.length; i--;) {\n        indices[end - i] = slice[i];\n      }\n    });\n    return indices\n  }\n\n  exports.closingToOpeningBracket = closingToOpeningBracket;\n  exports.getBidiCharType = getBidiCharType;\n  exports.getBidiCharTypeName = getBidiCharTypeName;\n  exports.getCanonicalBracket = getCanonicalBracket;\n  exports.getEmbeddingLevels = getEmbeddingLevels;\n  exports.getMirroredCharacter = getMirroredCharacter;\n  exports.getMirroredCharactersMap = getMirroredCharactersMap;\n  exports.getReorderSegments = getReorderSegments;\n  exports.getReorderedIndices = getReorderedIndices;\n  exports.getReorderedString = getReorderedString;\n  exports.openingToClosingBracket = openingToClosingBracket;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n}({}));\nreturn bidi}\n\nexport default bidiFactory;\n","import { ShaderChunk, UniformsUtils, MeshDepthMaterial, RGBADepthPacking, MeshDistanceMaterial, ShaderLib, Matrix4, Vector3, Mesh, CylinderGeometry, Vector2, MeshStandardMaterial, DoubleSide } from 'three';\n\n/**\n * Regular expression for matching the `void main() {` opener line in GLSL.\n * @type {RegExp}\n */\nconst voidMainRegExp = /\\bvoid\\s+main\\s*\\(\\s*\\)\\s*{/g;\n\n/**\n * Recursively expands all `#include <xyz>` statements within string of shader code.\n * Copied from three's WebGLProgram#parseIncludes for external use.\n *\n * @param {string} source - The GLSL source code to evaluate\n * @return {string} The GLSL code with all includes expanded\n */\nfunction expandShaderIncludes( source ) {\n  const pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n  function replace(match, include) {\n    let chunk = ShaderChunk[include];\n    return chunk ? expandShaderIncludes(chunk) : match\n  }\n  return source.replace( pattern, replace )\n}\n\n/*\n * This is a direct copy of MathUtils.generateUUID from Three.js, to preserve compatibility with three\n * versions before 0.113.0 as it was changed from Math to MathUtils in that version.\n * https://github.com/mrdoob/three.js/blob/dd8b5aa3b270c17096b90945cd2d6d1b13aaec53/src/math/MathUtils.js#L16\n */\n\nconst _lut = [];\n\nfor (let i = 0; i < 256; i++) {\n  _lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n}\n\nfunction generateUUID() {\n\n  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n  const d0 = Math.random() * 0xffffffff | 0;\n  const d1 = Math.random() * 0xffffffff | 0;\n  const d2 = Math.random() * 0xffffffff | 0;\n  const d3 = Math.random() * 0xffffffff | 0;\n  const uuid = _lut[d0 & 0xff] + _lut[d0 >> 8 & 0xff] + _lut[d0 >> 16 & 0xff] + _lut[d0 >> 24 & 0xff] + '-' +\n    _lut[d1 & 0xff] + _lut[d1 >> 8 & 0xff] + '-' + _lut[d1 >> 16 & 0x0f | 0x40] + _lut[d1 >> 24 & 0xff] + '-' +\n    _lut[d2 & 0x3f | 0x80] + _lut[d2 >> 8 & 0xff] + '-' + _lut[d2 >> 16 & 0xff] + _lut[d2 >> 24 & 0xff] +\n    _lut[d3 & 0xff] + _lut[d3 >> 8 & 0xff] + _lut[d3 >> 16 & 0xff] + _lut[d3 >> 24 & 0xff];\n\n  // .toUpperCase() here flattens concatenated strings to save heap memory space.\n  return uuid.toUpperCase()\n\n}\n\n// Local assign polyfill to avoid importing troika-core\nconst assign = Object.assign || function(/*target, ...sources*/) {\n  let target = arguments[0];\n  for (let i = 1, len = arguments.length; i < len; i++) {\n    let source = arguments[i];\n    if (source) {\n      for (let prop in source) {\n        if (Object.prototype.hasOwnProperty.call(source, prop)) {\n          target[prop] = source[prop];\n        }\n      }\n    }\n  }\n  return target\n};\n\n\nconst epoch = Date.now();\nconst CONSTRUCTOR_CACHE = new WeakMap();\nconst SHADER_UPGRADE_CACHE = new Map();\n\n// Material ids must be integers, but we can't access the increment from Three's `Material` module,\n// so let's choose a sufficiently large starting value that should theoretically never collide.\nlet materialInstanceId = 1e10;\n\n/**\n * A utility for creating a custom shader material derived from another material's\n * shaders. This allows you to inject custom shader logic and transforms into the\n * builtin ThreeJS materials without having to recreate them from scratch.\n *\n * @param {THREE.Material} baseMaterial - the original material to derive from\n *\n * @param {Object} options - How the base material should be modified.\n * @param {Object} options.defines - Custom `defines` for the material\n * @param {Object} options.extensions - Custom `extensions` for the material, e.g. `{derivatives: true}`\n * @param {Object} options.uniforms - Custom `uniforms` for use in the modified shader. These can\n *        be accessed and manipulated via the resulting material's `uniforms` property, just like\n *        in a ShaderMaterial. You do not need to repeat the base material's own uniforms here.\n * @param {String} options.timeUniform - If specified, a uniform of this name will be injected into\n *        both shaders, and it will automatically be updated on each render frame with a number of\n *        elapsed milliseconds. The \"zero\" epoch time is not significant so don't rely on this as a\n *        true calendar time.\n * @param {String} options.vertexDefs - Custom GLSL code to inject into the vertex shader's top-level\n *        definitions, above the `void main()` function.\n * @param {String} options.vertexMainIntro - Custom GLSL code to inject at the top of the vertex\n *        shader's `void main` function.\n * @param {String} options.vertexMainOutro - Custom GLSL code to inject at the end of the vertex\n *        shader's `void main` function.\n * @param {String} options.vertexTransform - Custom GLSL code to manipulate the `position`, `normal`,\n *        and/or `uv` vertex attributes. This code will be wrapped within a standalone function with\n *        those attributes exposed by their normal names as read/write values.\n * @param {String} options.fragmentDefs - Custom GLSL code to inject into the fragment shader's top-level\n *        definitions, above the `void main()` function.\n * @param {String} options.fragmentMainIntro - Custom GLSL code to inject at the top of the fragment\n *        shader's `void main` function.\n * @param {String} options.fragmentMainOutro - Custom GLSL code to inject at the end of the fragment\n *        shader's `void main` function. You can manipulate `gl_FragColor` here but keep in mind it goes\n *        after any of ThreeJS's color postprocessing shader chunks (tonemapping, fog, etc.), so if you\n *        want those to apply to your changes use `fragmentColorTransform` instead.\n * @param {String} options.fragmentColorTransform - Custom GLSL code to manipulate the `gl_FragColor`\n *        output value. Will be injected near the end of the `void main` function, but before any\n *        of ThreeJS's color postprocessing shader chunks (tonemapping, fog, etc.), and before the\n *        `fragmentMainOutro`.\n * @param {function<{vertexShader,fragmentShader}>:{vertexShader,fragmentShader}} options.customRewriter - A function\n *        for performing custom rewrites of the full shader code. Useful if you need to do something\n *        special that's not covered by the other builtin options. This function will be executed before\n *        any other transforms are applied.\n * @param {boolean} options.chained - Set to `true` to prototype-chain the derived material to the base\n *        material, rather than the default behavior of copying it. This allows the derived material to\n *        automatically pick up changes made to the base material and its properties. This can be useful\n *        where the derived material is hidden from the user as an implementation detail, allowing them\n *        to work with the original material like normal. But it can result in unexpected behavior if not\n *        handled carefully.\n *\n * @return {THREE.Material}\n *\n * The returned material will also have two new methods, `getDepthMaterial()` and `getDistanceMaterial()`,\n * which can be called to get a variant of the derived material for use in shadow casting. If the\n * target mesh is expected to cast shadows, then you can assign these to the mesh's `customDepthMaterial`\n * (for directional and spot lights) and/or `customDistanceMaterial` (for point lights) properties to\n * allow the cast shadow to honor your derived shader's vertex transforms and discarded fragments. These\n * will also set a custom `#define IS_DEPTH_MATERIAL` or `#define IS_DISTANCE_MATERIAL` that you can look\n * for in your derived shaders with `#ifdef` to customize their behavior for the depth or distance\n * scenarios, e.g. skipping antialiasing or expensive shader logic.\n */\nfunction createDerivedMaterial(baseMaterial, options) {\n  // Generate a key that is unique to the content of these `options`. We'll use this\n  // throughout for caching and for generating the upgraded shader code. This increases\n  // the likelihood that the resulting shaders will line up across multiple calls so\n  // their GL programs can be shared and cached.\n  const optionsKey = getKeyForOptions(options);\n\n  // First check to see if we've already derived from this baseMaterial using this\n  // unique set of options, and if so reuse the constructor to avoid some allocations.\n  let ctorsByDerivation = CONSTRUCTOR_CACHE.get(baseMaterial);\n  if (!ctorsByDerivation) {\n    CONSTRUCTOR_CACHE.set(baseMaterial, (ctorsByDerivation = Object.create(null)));\n  }\n  if (ctorsByDerivation[optionsKey]) {\n    return new ctorsByDerivation[optionsKey]()\n  }\n\n  const privateBeforeCompileProp = `_onBeforeCompile${optionsKey}`;\n\n  // Private onBeforeCompile handler that injects the modified shaders and uniforms when\n  // the renderer switches to this material's program\n  const onBeforeCompile = function (shaderInfo, renderer) {\n    baseMaterial.onBeforeCompile.call(this, shaderInfo, renderer);\n\n    // Upgrade the shaders, caching the result by incoming source code\n    const cacheKey = this.customProgramCacheKey() + '|' + shaderInfo.vertexShader + '|' + shaderInfo.fragmentShader;\n    let upgradedShaders = SHADER_UPGRADE_CACHE[cacheKey];\n    if (!upgradedShaders) {\n      const upgraded = upgradeShaders(this, shaderInfo, options, optionsKey);\n      upgradedShaders = SHADER_UPGRADE_CACHE[cacheKey] = upgraded;\n    }\n\n    // Inject upgraded shaders and uniforms into the program\n    shaderInfo.vertexShader = upgradedShaders.vertexShader;\n    shaderInfo.fragmentShader = upgradedShaders.fragmentShader;\n    assign(shaderInfo.uniforms, this.uniforms);\n\n    // Inject auto-updating time uniform if requested\n    if (options.timeUniform) {\n      shaderInfo.uniforms[options.timeUniform] = {\n        get value() {return Date.now() - epoch}\n      };\n    }\n\n    // Users can still add their own handlers on top of ours\n    if (this[privateBeforeCompileProp]) {\n      this[privateBeforeCompileProp](shaderInfo);\n    }\n  };\n\n  const DerivedMaterial = function DerivedMaterial() {\n    return derive(options.chained ? baseMaterial : baseMaterial.clone())\n  };\n\n  const derive = function(base) {\n    // Prototype chain to the base material\n    const derived = Object.create(base, descriptor);\n\n    // Store the baseMaterial for reference; this is always the original even when cloning\n    Object.defineProperty(derived, 'baseMaterial', { value: baseMaterial });\n\n    // Needs its own ids\n    Object.defineProperty(derived, 'id', { value: materialInstanceId++ });\n    derived.uuid = generateUUID();\n\n    // Merge uniforms, defines, and extensions\n    derived.uniforms = assign({}, base.uniforms, options.uniforms);\n    derived.defines = assign({}, base.defines, options.defines);\n    derived.defines[`TROIKA_DERIVED_MATERIAL_${optionsKey}`] = ''; //force a program change from the base material\n    derived.extensions = assign({}, base.extensions, options.extensions);\n\n    // Don't inherit EventDispatcher listeners\n    derived._listeners = undefined;\n\n    return derived\n  };\n\n  const descriptor = {\n    constructor: {value: DerivedMaterial},\n    isDerivedMaterial: {value: true},\n\n    customProgramCacheKey: {\n      writable: true,\n      configurable: true,\n      value: function () {\n        return baseMaterial.customProgramCacheKey() + '|' + optionsKey\n      }\n    },\n\n    onBeforeCompile: {\n      get() {\n        return onBeforeCompile\n      },\n      set(fn) {\n        this[privateBeforeCompileProp] = fn;\n      }\n    },\n\n    copy: {\n      writable: true,\n      configurable: true,\n      value: function (source) {\n        baseMaterial.copy.call(this, source);\n        if (!baseMaterial.isShaderMaterial && !baseMaterial.isDerivedMaterial) {\n          assign(this.extensions, source.extensions);\n          assign(this.defines, source.defines);\n          assign(this.uniforms, UniformsUtils.clone(source.uniforms));\n        }\n        return this\n      }\n    },\n\n    clone: {\n      writable: true,\n      configurable: true,\n      value: function () {\n        const newBase = new baseMaterial.constructor();\n        return derive(newBase).copy(this)\n      }\n    },\n\n    /**\n     * Utility to get a MeshDepthMaterial that will honor this derived material's vertex\n     * transformations and discarded fragments.\n     */\n    getDepthMaterial: {\n      writable: true,\n      configurable: true,\n      value: function() {\n        let depthMaterial = this._depthMaterial;\n        if (!depthMaterial) {\n          depthMaterial = this._depthMaterial = createDerivedMaterial(\n            baseMaterial.isDerivedMaterial\n              ? baseMaterial.getDepthMaterial()\n              : new MeshDepthMaterial({ depthPacking: RGBADepthPacking }),\n            options\n          );\n          depthMaterial.defines.IS_DEPTH_MATERIAL = '';\n          depthMaterial.uniforms = this.uniforms; //automatically recieve same uniform values\n        }\n        return depthMaterial\n      }\n    },\n\n    /**\n     * Utility to get a MeshDistanceMaterial that will honor this derived material's vertex\n     * transformations and discarded fragments.\n     */\n    getDistanceMaterial: {\n      writable: true,\n      configurable: true,\n      value: function() {\n        let distanceMaterial = this._distanceMaterial;\n        if (!distanceMaterial) {\n          distanceMaterial = this._distanceMaterial = createDerivedMaterial(\n            baseMaterial.isDerivedMaterial\n              ? baseMaterial.getDistanceMaterial()\n              : new MeshDistanceMaterial(),\n            options\n          );\n          distanceMaterial.defines.IS_DISTANCE_MATERIAL = '';\n          distanceMaterial.uniforms = this.uniforms; //automatically recieve same uniform values\n        }\n        return distanceMaterial\n      }\n    },\n\n    dispose: {\n      writable: true,\n      configurable: true,\n      value() {\n        const {_depthMaterial, _distanceMaterial} = this;\n        if (_depthMaterial) _depthMaterial.dispose();\n        if (_distanceMaterial) _distanceMaterial.dispose();\n        baseMaterial.dispose.call(this);\n      }\n    }\n  };\n\n  ctorsByDerivation[optionsKey] = DerivedMaterial;\n  return new DerivedMaterial()\n}\n\n\nfunction upgradeShaders(material, {vertexShader, fragmentShader}, options, key) {\n  let {\n    vertexDefs,\n    vertexMainIntro,\n    vertexMainOutro,\n    vertexTransform,\n    fragmentDefs,\n    fragmentMainIntro,\n    fragmentMainOutro,\n    fragmentColorTransform,\n    customRewriter,\n    timeUniform\n  } = options;\n\n  vertexDefs = vertexDefs || '';\n  vertexMainIntro = vertexMainIntro || '';\n  vertexMainOutro = vertexMainOutro || '';\n  fragmentDefs = fragmentDefs || '';\n  fragmentMainIntro = fragmentMainIntro || '';\n  fragmentMainOutro = fragmentMainOutro || '';\n\n  // Expand includes if needed\n  if (vertexTransform || customRewriter) {\n    vertexShader = expandShaderIncludes(vertexShader);\n  }\n  if (fragmentColorTransform || customRewriter) {\n    // We need to be able to find postprocessing chunks after include expansion in order to\n    // put them after the fragmentColorTransform, so mark them with comments first. Even if\n    // this particular derivation doesn't have a fragmentColorTransform, other derivations may,\n    // so we still mark them.\n    fragmentShader = fragmentShader.replace(\n      /^[ \\t]*#include <((?:tonemapping|encodings|fog|premultiplied_alpha|dithering)_fragment)>/gm,\n      '\\n//!BEGIN_POST_CHUNK $1\\n$&\\n//!END_POST_CHUNK\\n'\n    );\n    fragmentShader = expandShaderIncludes(fragmentShader);\n  }\n\n  // Apply custom rewriter function\n  if (customRewriter) {\n    let res = customRewriter({vertexShader, fragmentShader});\n    vertexShader = res.vertexShader;\n    fragmentShader = res.fragmentShader;\n  }\n\n  // The fragmentColorTransform needs to go before any postprocessing chunks, so extract\n  // those and re-insert them into the outro in the correct place:\n  if (fragmentColorTransform) {\n    let postChunks = [];\n    fragmentShader = fragmentShader.replace(\n      /^\\/\\/!BEGIN_POST_CHUNK[^]+?^\\/\\/!END_POST_CHUNK/gm, // [^]+? = non-greedy match of any chars including newlines\n      match => {\n        postChunks.push(match);\n        return ''\n      }\n    );\n    fragmentMainOutro = `${fragmentColorTransform}\\n${postChunks.join('\\n')}\\n${fragmentMainOutro}`;\n  }\n\n  // Inject auto-updating time uniform if requested\n  if (timeUniform) {\n    const code = `\\nuniform float ${timeUniform};\\n`;\n    vertexDefs = code + vertexDefs;\n    fragmentDefs = code + fragmentDefs;\n  }\n\n  // Inject a function for the vertexTransform and rename all usages of position/normal/uv\n  if (vertexTransform) {\n    // Hoist these defs to the very top so they work in other function defs\n    vertexShader = `vec3 troika_position_${key};\nvec3 troika_normal_${key};\nvec2 troika_uv_${key};\n${vertexShader}\n`;\n    vertexDefs = `${vertexDefs}\nvoid troikaVertexTransform${key}(inout vec3 position, inout vec3 normal, inout vec2 uv) {\n  ${vertexTransform}\n}\n`;\n    vertexMainIntro = `\ntroika_position_${key} = vec3(position);\ntroika_normal_${key} = vec3(normal);\ntroika_uv_${key} = vec2(uv);\ntroikaVertexTransform${key}(troika_position_${key}, troika_normal_${key}, troika_uv_${key});\n${vertexMainIntro}\n`;\n    vertexShader = vertexShader.replace(/\\b(position|normal|uv)\\b/g, (match, match1, index, fullStr) => {\n      return /\\battribute\\s+vec[23]\\s+$/.test(fullStr.substr(0, index)) ? match1 : `troika_${match1}_${key}`\n    });\n\n    // Three r152 introduced the MAP_UV token, replace it too if it's pointing to the main 'uv'\n    // Perhaps the other textures too going forward?\n    if (!(material.map && material.map.channel > 0)) {\n      vertexShader = vertexShader.replace(/\\bMAP_UV\\b/g, `troika_uv_${key}`);\n    }\n  }\n\n  // Inject defs and intro/outro snippets\n  vertexShader = injectIntoShaderCode(vertexShader, key, vertexDefs, vertexMainIntro, vertexMainOutro);\n  fragmentShader = injectIntoShaderCode(fragmentShader, key, fragmentDefs, fragmentMainIntro, fragmentMainOutro);\n\n  return {\n    vertexShader,\n    fragmentShader\n  }\n}\n\nfunction injectIntoShaderCode(shaderCode, id, defs, intro, outro) {\n  if (intro || outro || defs) {\n    shaderCode = shaderCode.replace(voidMainRegExp, `\n${defs}\nvoid troikaOrigMain${id}() {`\n    );\n    shaderCode += `\nvoid main() {\n  ${intro}\n  troikaOrigMain${id}();\n  ${outro}\n}`;\n  }\n  return shaderCode\n}\n\n\nfunction optionsJsonReplacer(key, value) {\n  return key === 'uniforms' ? undefined : typeof value === 'function' ? value.toString() : value\n}\n\nlet _idCtr = 0;\nconst optionsHashesToIds = new Map();\nfunction getKeyForOptions(options) {\n  const optionsHash = JSON.stringify(options, optionsJsonReplacer);\n  let id = optionsHashesToIds.get(optionsHash);\n  if (id == null) {\n    optionsHashesToIds.set(optionsHash, (id = ++_idCtr));\n  }\n  return id\n}\n\n// Copied from threejs WebGLPrograms.js so we can resolve builtin materials to their shaders\n// TODO how can we keep this from getting stale?\nconst MATERIAL_TYPES_TO_SHADERS = {\n  MeshDepthMaterial: 'depth',\n  MeshDistanceMaterial: 'distanceRGBA',\n  MeshNormalMaterial: 'normal',\n  MeshBasicMaterial: 'basic',\n  MeshLambertMaterial: 'lambert',\n  MeshPhongMaterial: 'phong',\n  MeshToonMaterial: 'toon',\n  MeshStandardMaterial: 'physical',\n  MeshPhysicalMaterial: 'physical',\n  MeshMatcapMaterial: 'matcap',\n  LineBasicMaterial: 'basic',\n  LineDashedMaterial: 'dashed',\n  PointsMaterial: 'points',\n  ShadowMaterial: 'shadow',\n  SpriteMaterial: 'sprite'\n};\n\n/**\n * Given a Three.js `Material` instance, find the shaders/uniforms that will be\n * used to render that material.\n *\n * @param material - the Material instance\n * @return {object} - the material's shader info: `{uniforms:{}, fragmentShader:'', vertexShader:''}`\n */\nfunction getShadersForMaterial(material) {\n  let builtinType = MATERIAL_TYPES_TO_SHADERS[material.type];\n  return builtinType ? ShaderLib[builtinType] : material //TODO fallback for unknown type?\n}\n\n/**\n * Find all uniforms and their types within a shader code string.\n *\n * @param {string} shader - The shader code to parse\n * @return {object} mapping of uniform names to their glsl type\n */\nfunction getShaderUniformTypes(shader) {\n  let uniformRE = /\\buniform\\s+(int|float|vec[234]|mat[34])\\s+([A-Za-z_][\\w]*)/g;\n  let uniforms = Object.create(null);\n  let match;\n  while ((match = uniformRE.exec(shader)) !== null) {\n    uniforms[match[2]] = match[1];\n  }\n  return uniforms\n}\n\n/**\n * Helper for smoothing out the `m.getInverse(x)` --> `m.copy(x).invert()` conversion\n * that happened in ThreeJS r123.\n * @param {Matrix4} srcMatrix\n * @param {Matrix4} [tgtMatrix]\n */\nfunction invertMatrix4(srcMatrix, tgtMatrix = new Matrix4()) {\n  if (typeof tgtMatrix.invert === 'function') {\n    tgtMatrix.copy(srcMatrix).invert();\n  } else {\n    tgtMatrix.getInverse(srcMatrix);\n  }\n  return tgtMatrix\n}\n\n/*\nInput geometry is a cylinder with r=1, height in y dimension from 0 to 1,\ndivided into a reasonable number of height segments.\n*/\n\nconst vertexDefs = `\nuniform vec3 pointA;\nuniform vec3 controlA;\nuniform vec3 controlB;\nuniform vec3 pointB;\nuniform float radius;\nvarying float bezierT;\n\nvec3 cubicBezier(vec3 p1, vec3 c1, vec3 c2, vec3 p2, float t) {\n  float t2 = 1.0 - t;\n  float b0 = t2 * t2 * t2;\n  float b1 = 3.0 * t * t2 * t2;\n  float b2 = 3.0 * t * t * t2;\n  float b3 = t * t * t;\n  return b0 * p1 + b1 * c1 + b2 * c2 + b3 * p2;\n}\n\nvec3 cubicBezierDerivative(vec3 p1, vec3 c1, vec3 c2, vec3 p2, float t) {\n  float t2 = 1.0 - t;\n  return -3.0 * p1 * t2 * t2 +\n    c1 * (3.0 * t2 * t2 - 6.0 * t2 * t) +\n    c2 * (6.0 * t2 * t - 3.0 * t * t) +\n    3.0 * p2 * t * t;\n}\n`;\n\nconst vertexTransform = `\nfloat t = position.y;\nbezierT = t;\nvec3 bezierCenterPos = cubicBezier(pointA, controlA, controlB, pointB, t);\nvec3 bezierDir = normalize(cubicBezierDerivative(pointA, controlA, controlB, pointB, t));\n\n// Make \"sideways\" always perpendicular to the camera ray; this ensures that any twists\n// in the cylinder occur where you won't see them: \nvec3 viewDirection = normalMatrix * vec3(0.0, 0.0, 1.0);\nif (bezierDir == viewDirection) {\n  bezierDir = normalize(cubicBezierDerivative(pointA, controlA, controlB, pointB, t == 1.0 ? t - 0.0001 : t + 0.0001));\n}\nvec3 sideways = normalize(cross(bezierDir, viewDirection));\nvec3 upish = normalize(cross(sideways, bezierDir));\n\n// Build a matrix for transforming this disc in the cylinder:\nmat4 discTx;\ndiscTx[0].xyz = sideways * radius;\ndiscTx[1].xyz = bezierDir * radius;\ndiscTx[2].xyz = upish * radius;\ndiscTx[3].xyz = bezierCenterPos;\ndiscTx[3][3] = 1.0;\n\n// Apply transform, ignoring original y\nposition = (discTx * vec4(position.x, 0.0, position.z, 1.0)).xyz;\nnormal = normalize(mat3(discTx) * normal);\n`;\n\nconst fragmentDefs = `\nuniform vec3 dashing;\nvarying float bezierT;\n`;\n\nconst fragmentMainIntro = `\nif (dashing.x + dashing.y > 0.0) {\n  float dashFrac = mod(bezierT - dashing.z, dashing.x + dashing.y);\n  if (dashFrac > dashing.x) {\n    discard;\n  }\n}\n`;\n\n// Debugging: separate color for each of the 6 sides:\n// const fragmentColorTransform = `\n// float sideNum = floor(vUV.x * 6.0);\n// vec3 mixColor = sideNum < 1.0 ? vec3(1.0, 0.0, 0.0) :\n//   sideNum < 2.0 ? vec3(0.0, 1.0, 1.0) :\n//   sideNum < 3.0 ? vec3(1.0, 1.0, 0.0) :\n//   sideNum < 4.0 ? vec3(0.0, 0.0, 1.0) :\n//   sideNum < 5.0 ? vec3(0.0, 1.0, 0.0) :\n//   vec3(1.0, 0.0, 1.0);\n// gl_FragColor.xyz = mix(gl_FragColor.xyz, mixColor, 0.5);\n// `\n\n\n\nfunction createBezierMeshMaterial(baseMaterial) {\n  return createDerivedMaterial(\n    baseMaterial,\n    {\n      chained: true,\n      uniforms: {\n        pointA: {value: new Vector3()},\n        controlA: {value: new Vector3()},\n        controlB: {value: new Vector3()},\n        pointB: {value: new Vector3()},\n        radius: {value: 0.01},\n        dashing: {value: new Vector3()} //on, off, offset\n      },\n      vertexDefs,\n      vertexTransform,\n      fragmentDefs,\n      fragmentMainIntro\n    }\n  )\n}\n\nlet geometry = null;\n\nconst defaultBaseMaterial = /*#__PURE__*/new MeshStandardMaterial({color: 0xffffff, side: DoubleSide});\n\n\n/**\n * A ThreeJS `Mesh` that bends a tube shape along a 3D cubic bezier path. The bending is done\n * by deforming a straight cylindrical geometry in the vertex shader based on a set of four\n * control point uniforms. It patches the necessary GLSL into the mesh's assigned `material`\n * automatically.\n *\n * The cubiz bezier path is determined by its four `Vector3` properties:\n * - `pointA`\n * - `controlA`\n * - `controlB`\n * - `pointB`\n *\n * The tube's radius is controlled by its `radius` property, which defaults to `0.01`.\n *\n * You can also give the tube a dashed appearance with two properties:\n *\n * - `dashArray` - an array of two numbers, defining the length of \"on\" and \"off\" parts of\n *   the dash. Each is a 0-1 ratio of the entire path's length. (Actually this is the `t` length\n *   used as input to the cubic bezier function, not its visible length.)\n * - `dashOffset` - offset of where the dash starts. You can animate this to make the dashes move.\n *\n * Note that the dashes will appear like a hollow tube, not solid. This will be more apparent on\n * thicker tubes.\n *\n * TODO: proper geometry bounding sphere and raycasting\n * TODO: allow control of the geometry's segment counts\n */\nclass BezierMesh extends Mesh {\n  static getGeometry() {\n    return geometry || (geometry =\n      new CylinderGeometry(1, 1, 1, 6, 64).translate(0, 0.5, 0)\n    )\n  }\n\n  constructor() {\n    super(\n      BezierMesh.getGeometry(),\n      defaultBaseMaterial\n    );\n\n    this.pointA = new Vector3();\n    this.controlA = new Vector3();\n    this.controlB = new Vector3();\n    this.pointB = new Vector3();\n    this.radius = 0.01;\n    this.dashArray = new Vector2();\n    this.dashOffset = 0;\n\n    // TODO - disabling frustum culling until I figure out how to customize the\n    //  geometry's bounding sphere that gets used\n    this.frustumCulled = false;\n  }\n\n  // Handler for automatically wrapping the base material with our upgrades. We do the wrapping\n  // lazily on _read_ rather than write to avoid unnecessary wrapping on transient values.\n  get material() {\n    let derivedMaterial = this._derivedMaterial;\n    const baseMaterial = this._baseMaterial || this._defaultMaterial || (this._defaultMaterial = defaultBaseMaterial.clone());\n    if (!derivedMaterial || derivedMaterial.baseMaterial !== baseMaterial) {\n      derivedMaterial = this._derivedMaterial = createBezierMeshMaterial(baseMaterial);\n      // dispose the derived material when its base material is disposed:\n      baseMaterial.addEventListener('dispose', function onDispose() {\n        baseMaterial.removeEventListener('dispose', onDispose);\n        derivedMaterial.dispose();\n      });\n    }\n    return derivedMaterial\n  }\n  set material(baseMaterial) {\n    this._baseMaterial = baseMaterial;\n  }\n\n  // Create and update material for shadows upon request:\n  get customDepthMaterial() {\n    return this.material.getDepthMaterial()\n  }\n  get customDistanceMaterial() {\n    return this.material.getDistanceMaterial()\n  }\n\n  onBeforeRender() {\n    const {uniforms} = this.material;\n    const {pointA, controlA, controlB, pointB, radius, dashArray, dashOffset} = this;\n    uniforms.pointA.value.copy(pointA);\n    uniforms.controlA.value.copy(controlA);\n    uniforms.controlB.value.copy(controlB);\n    uniforms.pointB.value.copy(pointB);\n    uniforms.radius.value = radius;\n    uniforms.dashing.value.set(dashArray.x, dashArray.y, dashOffset || 0);\n  }\n\n  raycast(/*raycaster, intersects*/) {\n    // TODO - just fail for now\n  }\n}\n\nexport { BezierMesh, createDerivedMaterial, expandShaderIncludes, getShaderUniformTypes, getShadersForMaterial, invertMatrix4, voidMainRegExp };\n","import { Texture, LinearFilter, Color, InstancedBufferGeometry, Sphere, Box3, BackSide, DoubleSide, InstancedBufferAttribute, PlaneGeometry, BufferGeometry, Float32BufferAttribute, Vector2, Vector4, Matrix3, Mesh, FrontSide, MeshBasicMaterial, Matrix4, Vector3 } from 'three';\nimport { terminateWorker, defineWorkerModule } from 'troika-worker-utils';\nimport createSDFGenerator from 'webgl-sdf-generator';\nimport bidiFactory from 'bidi-js';\nimport { createDerivedMaterial, voidMainRegExp } from 'troika-three-utils';\n\n/**\n * Factory function that creates a self-contained environment for processing text typesetting requests.\n *\n * It is important that this function has no closure dependencies, so that it can be easily injected\n * into the source for a Worker without requiring a build step or complex dependency loading. All its\n * dependencies must be passed in at initialization.\n *\n * @param {function} fontParser - a function that accepts an ArrayBuffer of the font data and returns\n * a standardized structure giving access to the font and its glyphs:\n *   {\n *     unitsPerEm: number,\n *     ascender: number,\n *     descender: number,\n *     capHeight: number,\n *     xHeight: number,\n *     lineGap: number,\n *     forEachGlyph(string, fontSize, letterSpacing, callback) {\n *       //invokes callback for each glyph to render, passing it an object:\n *       callback({\n *         index: number,\n *         advanceWidth: number,\n *         xMin: number,\n *         yMin: number,\n *         xMax: number,\n *         yMax: number,\n *         path: string,\n *         pathCommandCount: number\n *       })\n *     }\n *   }\n * @param {object} bidi - the bidi.js implementation object\n * @param {Object} config\n * @return {Object}\n */\nfunction createTypesetter(fontParser, bidi, config) {\n\n  const {\n    defaultFontURL\n  } = config;\n\n  /**\n   * Holds parsed font objects by url\n   */\n  const fonts = Object.create(null);\n\n  const INF = Infinity;\n\n  // Set of Unicode Default_Ignorable_Code_Point characters, these will not produce visible glyphs\n  // eslint-disable-next-line no-misleading-character-class\n  const DEFAULT_IGNORABLE_CHARS = /[\\u00AD\\u034F\\u061C\\u115F-\\u1160\\u17B4-\\u17B5\\u180B-\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u3164\\uFE00-\\uFE0F\\uFEFF\\uFFA0\\uFFF0-\\uFFF8]/;\n\n  // This regex (instead of /\\s/) allows us to select all whitespace EXCEPT for non-breaking white spaces\n  const lineBreakingWhiteSpace = `[^\\\\S\\\\u00A0]`;\n\n  // Incomplete set of characters that allow line breaking after them\n  // In the future we may consider a full Unicode line breaking algorithm impl: https://www.unicode.org/reports/tr14\n  const BREAK_AFTER_CHARS = new RegExp(`${lineBreakingWhiteSpace}|[\\\\-\\\\u007C\\\\u00AD\\\\u2010\\\\u2012-\\\\u2014\\\\u2027\\\\u2056\\\\u2E17\\\\u2E40]`);\n\n  /**\n   * Load a given font url\n   */\n  function doLoadFont(url, callback) {\n    function tryLoad() {\n      const onError = err => {\n        console.error(`Failure loading font ${url}${url === defaultFontURL ? '' : '; trying fallback'}`, err);\n        if (url !== defaultFontURL) {\n          url = defaultFontURL;\n          tryLoad();\n        }\n      };\n      try {\n        const request = new XMLHttpRequest();\n        request.open('get', url, true);\n        request.responseType = 'arraybuffer';\n        request.onload = function () {\n          if (request.status >= 400) {\n            onError(new Error(request.statusText));\n          }\n          else if (request.status > 0) {\n            try {\n              const fontObj = fontParser(request.response);\n              callback(fontObj);\n            } catch (e) {\n              onError(e);\n            }\n          }\n        };\n        request.onerror = onError;\n        request.send();\n      } catch(err) {\n        onError(err);\n      }\n    }\n    tryLoad();\n  }\n\n\n  /**\n   * Load a given font url if needed, invoking a callback when it's loaded. If already\n   * loaded, the callback will be called synchronously.\n   */\n  function loadFont(fontUrl, callback) {\n    if (!fontUrl) fontUrl = defaultFontURL;\n    let font = fonts[fontUrl];\n    if (font) {\n      // if currently loading font, add to callbacks, otherwise execute immediately\n      if (font.pending) {\n        font.pending.push(callback);\n      } else {\n        callback(font);\n      }\n    } else {\n      fonts[fontUrl] = {pending: [callback]};\n      doLoadFont(fontUrl, fontObj => {\n        let callbacks = fonts[fontUrl].pending;\n        fonts[fontUrl] = fontObj;\n        callbacks.forEach(cb => cb(fontObj));\n      });\n    }\n  }\n\n\n  /**\n   * Main entry point.\n   * Process a text string with given font and formatting parameters, and return all info\n   * necessary to render all its glyphs.\n   */\n  function typeset(\n    {\n      text='',\n      font=defaultFontURL,\n      sdfGlyphSize=64,\n      fontSize=1,\n      letterSpacing=0,\n      lineHeight='normal',\n      maxWidth=INF,\n      direction,\n      textAlign='left',\n      textIndent=0,\n      whiteSpace='normal',\n      overflowWrap='normal',\n      anchorX = 0,\n      anchorY = 0,\n      includeCaretPositions=false,\n      chunkedBoundsSize=8192,\n      colorRanges=null\n    },\n    callback,\n    metricsOnly=false\n  ) {\n    const mainStart = now();\n    const timings = {fontLoad: 0, typesetting: 0};\n\n    // Ensure newlines are normalized\n    if (text.indexOf('\\r') > -1) {\n      console.info('Typesetter: got text with \\\\r chars; normalizing to \\\\n');\n      text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n    }\n\n    // Ensure we've got numbers not strings\n    fontSize = +fontSize;\n    letterSpacing = +letterSpacing;\n    maxWidth = +maxWidth;\n    lineHeight = lineHeight || 'normal';\n    textIndent = +textIndent;\n\n    loadFont(font, fontObj => {\n      const hasMaxWidth = isFinite(maxWidth);\n      let glyphIds = null;\n      let glyphPositions = null;\n      let glyphData = null;\n      let glyphColors = null;\n      let caretPositions = null;\n      let visibleBounds = null;\n      let chunkedBounds = null;\n      let maxLineWidth = 0;\n      let renderableGlyphCount = 0;\n      let canWrap = whiteSpace !== 'nowrap';\n      const {ascender, descender, unitsPerEm, lineGap, capHeight, xHeight} = fontObj;\n      timings.fontLoad = now() - mainStart;\n      const typesetStart = now();\n\n      // Find conversion between native font units and fontSize units; this will already be done\n      // for the gx/gy values below but everything else we'll need to convert\n      const fontSizeMult = fontSize / unitsPerEm;\n\n      // Determine appropriate value for 'normal' line height based on the font's actual metrics\n      // TODO this does not guarantee individual glyphs won't exceed the line height, e.g. Roboto; should we use yMin/Max instead?\n      if (lineHeight === 'normal') {\n        lineHeight = (ascender - descender + lineGap) / unitsPerEm;\n      }\n\n      // Determine line height and leading adjustments\n      lineHeight = lineHeight * fontSize;\n      const halfLeading = (lineHeight - (ascender - descender) * fontSizeMult) / 2;\n      const topBaseline = -(ascender * fontSizeMult + halfLeading);\n      const caretHeight = Math.min(lineHeight, (ascender - descender) * fontSizeMult);\n      const caretBottomOffset = (ascender + descender) / 2 * fontSizeMult - caretHeight / 2;\n\n      // Distribute glyphs into lines based on wrapping\n      let lineXOffset = textIndent;\n      let currentLine = new TextLine();\n      const lines = [currentLine];\n\n      fontObj.forEachGlyph(text, fontSize, letterSpacing, (glyphObj, glyphX, charIndex) => {\n        const char = text.charAt(charIndex);\n        const glyphWidth = glyphObj.advanceWidth * fontSizeMult;\n        const curLineCount = currentLine.count;\n        let nextLine;\n\n        // Calc isWhitespace and isEmpty once per glyphObj\n        if (!('isEmpty' in glyphObj)) {\n          glyphObj.isWhitespace = !!char && new RegExp(lineBreakingWhiteSpace).test(char);\n          glyphObj.canBreakAfter = !!char && BREAK_AFTER_CHARS.test(char);\n          glyphObj.isEmpty = glyphObj.xMin === glyphObj.xMax || glyphObj.yMin === glyphObj.yMax || DEFAULT_IGNORABLE_CHARS.test(char);\n        }\n        if (!glyphObj.isWhitespace && !glyphObj.isEmpty) {\n          renderableGlyphCount++;\n        }\n\n        // If a non-whitespace character overflows the max width, we need to soft-wrap\n        if (canWrap && hasMaxWidth && !glyphObj.isWhitespace && glyphX + glyphWidth + lineXOffset > maxWidth && curLineCount) {\n          // If it's the first char after a whitespace, start a new line\n          if (currentLine.glyphAt(curLineCount - 1).glyphObj.canBreakAfter) {\n            nextLine = new TextLine();\n            lineXOffset = -glyphX;\n          } else {\n            // Back up looking for a whitespace character to wrap at\n            for (let i = curLineCount; i--;) {\n              // If we got the start of the line there's no soft break point; make hard break if overflowWrap='break-word'\n              if (i === 0 && overflowWrap === 'break-word') {\n                nextLine = new TextLine();\n                lineXOffset = -glyphX;\n                break\n              }\n              // Found a soft break point; move all chars since it to a new line\n              else if (currentLine.glyphAt(i).glyphObj.canBreakAfter) {\n                nextLine = currentLine.splitAt(i + 1);\n                const adjustX = nextLine.glyphAt(0).x;\n                lineXOffset -= adjustX;\n                for (let j = nextLine.count; j--;) {\n                  nextLine.glyphAt(j).x -= adjustX;\n                }\n                break\n              }\n            }\n          }\n          if (nextLine) {\n            currentLine.isSoftWrapped = true;\n            currentLine = nextLine;\n            lines.push(currentLine);\n            maxLineWidth = maxWidth; //after soft wrapping use maxWidth as calculated width\n          }\n        }\n\n        let fly = currentLine.glyphAt(currentLine.count);\n        fly.glyphObj = glyphObj;\n        fly.x = glyphX + lineXOffset;\n        fly.width = glyphWidth;\n        fly.charIndex = charIndex;\n\n        // Handle hard line breaks\n        if (char === '\\n') {\n          currentLine = new TextLine();\n          lines.push(currentLine);\n          lineXOffset = -(glyphX + glyphWidth + (letterSpacing * fontSize)) + textIndent;\n        }\n      });\n\n      // Calculate width of each line (excluding trailing whitespace) and maximum block width\n      lines.forEach(line => {\n        for (let i = line.count; i--;) {\n          let {glyphObj, x, width} = line.glyphAt(i);\n          if (!glyphObj.isWhitespace) {\n            line.width = x + width;\n            if (line.width > maxLineWidth) {\n              maxLineWidth = line.width;\n            }\n            return\n          }\n        }\n      });\n\n      // Find overall position adjustments for anchoring\n      let anchorXOffset = 0;\n      let anchorYOffset = 0;\n      if (anchorX) {\n        if (typeof anchorX === 'number') {\n          anchorXOffset = -anchorX;\n        }\n        else if (typeof anchorX === 'string') {\n          anchorXOffset = -maxLineWidth * (\n            anchorX === 'left' ? 0 :\n            anchorX === 'center' ? 0.5 :\n            anchorX === 'right' ? 1 :\n            parsePercent(anchorX)\n          );\n        }\n      }\n      if (anchorY) {\n        if (typeof anchorY === 'number') {\n          anchorYOffset = -anchorY;\n        }\n        else if (typeof anchorY === 'string') {\n          let height = lines.length * lineHeight;\n          anchorYOffset = anchorY === 'top' ? 0 :\n            anchorY === 'top-baseline' ? -topBaseline :\n            anchorY === 'top-cap' ? -topBaseline - capHeight * fontSizeMult :\n            anchorY === 'top-ex' ? -topBaseline - xHeight * fontSizeMult :\n            anchorY === 'middle' ? height / 2 :\n            anchorY === 'bottom' ? height :\n            anchorY === 'bottom-baseline' ? height - halfLeading + descender * fontSizeMult :\n            parsePercent(anchorY) * height;\n        }\n      }\n\n      if (!metricsOnly) {\n        // Resolve bidi levels\n        const bidiLevelsResult = bidi.getEmbeddingLevels(text, direction);\n\n        // Process each line, applying alignment offsets, adding each glyph to the atlas, and\n        // collecting all renderable glyphs into a single collection.\n        glyphIds = new Uint16Array(renderableGlyphCount);\n        glyphPositions = new Float32Array(renderableGlyphCount * 2);\n        glyphData = {};\n        visibleBounds = [INF, INF, -INF, -INF];\n        chunkedBounds = [];\n        let lineYOffset = topBaseline;\n        if (includeCaretPositions) {\n          caretPositions = new Float32Array(text.length * 3);\n        }\n        if (colorRanges) {\n          glyphColors = new Uint8Array(renderableGlyphCount * 3);\n        }\n        let renderableGlyphIndex = 0;\n        let prevCharIndex = -1;\n        let colorCharIndex = -1;\n        let chunk;\n        let currentColor;\n        lines.forEach((line, lineIndex) => {\n          let {count:lineGlyphCount, width:lineWidth} = line;\n\n          // Ignore empty lines\n          if (lineGlyphCount > 0) {\n            // Count trailing whitespaces, we want to ignore these for certain things\n            let trailingWhitespaceCount = 0;\n            for (let i = lineGlyphCount; i-- && line.glyphAt(i).glyphObj.isWhitespace;) {\n              trailingWhitespaceCount++;\n            }\n\n            // Apply horizontal alignment adjustments\n            let lineXOffset = 0;\n            let justifyAdjust = 0;\n            if (textAlign === 'center') {\n              lineXOffset = (maxLineWidth - lineWidth) / 2;\n            } else if (textAlign === 'right') {\n              lineXOffset = maxLineWidth - lineWidth;\n            } else if (textAlign === 'justify' && line.isSoftWrapped) {\n              // count non-trailing whitespace characters, and we'll adjust the offsets per character in the next loop\n              let whitespaceCount = 0;\n              for (let i = lineGlyphCount - trailingWhitespaceCount; i--;) {\n                if (line.glyphAt(i).glyphObj.isWhitespace) {\n                  whitespaceCount++;\n                }\n              }\n              justifyAdjust = (maxLineWidth - lineWidth) / whitespaceCount;\n            }\n            if (justifyAdjust || lineXOffset) {\n              let justifyOffset = 0;\n              for (let i = 0; i < lineGlyphCount; i++) {\n                let glyphInfo = line.glyphAt(i);\n                const glyphObj = glyphInfo.glyphObj;\n                glyphInfo.x += lineXOffset + justifyOffset;\n                // Expand non-trailing whitespaces for justify alignment\n                if (justifyAdjust !== 0 && glyphObj.isWhitespace && i < lineGlyphCount - trailingWhitespaceCount) {\n                  justifyOffset += justifyAdjust;\n                  glyphInfo.width += justifyAdjust;\n                }\n              }\n            }\n\n            // Perform bidi range flipping\n            const flips = bidi.getReorderSegments(\n              text, bidiLevelsResult, line.glyphAt(0).charIndex, line.glyphAt(line.count - 1).charIndex\n            );\n            for (let fi = 0; fi < flips.length; fi++) {\n              const [start, end] = flips[fi];\n              // Map start/end string indices to indices in the line\n              let left = Infinity, right = -Infinity;\n              for (let i = 0; i < lineGlyphCount; i++) {\n                if (line.glyphAt(i).charIndex >= start) { // gte to handle removed characters\n                  let startInLine = i, endInLine = i;\n                  for (; endInLine < lineGlyphCount; endInLine++) {\n                    let info = line.glyphAt(endInLine);\n                    if (info.charIndex > end) {\n                      break\n                    }\n                    if (endInLine < lineGlyphCount - trailingWhitespaceCount) { //don't include trailing ws in flip width\n                      left = Math.min(left, info.x);\n                      right = Math.max(right, info.x + info.width);\n                    }\n                  }\n                  for (let j = startInLine; j < endInLine; j++) {\n                    const glyphInfo = line.glyphAt(j);\n                    glyphInfo.x = right - (glyphInfo.x + glyphInfo.width - left);\n                  }\n                  break\n                }\n              }\n            }\n\n            // Assemble final data arrays\n            let glyphObj;\n            const setGlyphObj = g => glyphObj = g;\n            for (let i = 0; i < lineGlyphCount; i++) {\n              let glyphInfo = line.glyphAt(i);\n              glyphObj = glyphInfo.glyphObj;\n              const glyphId = glyphObj.index;\n\n              // Replace mirrored characters in rtl\n              const rtl = bidiLevelsResult.levels[glyphInfo.charIndex] & 1; //odd level means rtl\n              if (rtl) {\n                const mirrored = bidi.getMirroredCharacter(text[glyphInfo.charIndex]);\n                if (mirrored) {\n                  fontObj.forEachGlyph(mirrored, 0, 0, setGlyphObj);\n                }\n              }\n\n              // Add caret positions\n              if (includeCaretPositions) {\n                const {charIndex} = glyphInfo;\n                const caretLeft = glyphInfo.x + anchorXOffset;\n                const caretRight = glyphInfo.x + glyphInfo.width + anchorXOffset;\n                caretPositions[charIndex * 3] = rtl ? caretRight : caretLeft; //start edge x\n                caretPositions[charIndex * 3 + 1] = rtl ? caretLeft : caretRight; //end edge x\n                caretPositions[charIndex * 3 + 2] = lineYOffset + caretBottomOffset + anchorYOffset; //common bottom y\n\n                // If we skipped any chars from the previous glyph (due to ligature subs), fill in caret\n                // positions for those missing char indices; currently this uses a best-guess by dividing\n                // the ligature's width evenly. In the future we may try to use the font's LigatureCaretList\n                // table to get better interior caret positions.\n                const ligCount = charIndex - prevCharIndex;\n                if (ligCount > 1) {\n                  fillLigatureCaretPositions(caretPositions, prevCharIndex, ligCount);\n                }\n                prevCharIndex = charIndex;\n              }\n\n              // Track current color range\n              if (colorRanges) {\n                const {charIndex} = glyphInfo;\n                while(charIndex > colorCharIndex) {\n                  colorCharIndex++;\n                  if (colorRanges.hasOwnProperty(colorCharIndex)) {\n                    currentColor = colorRanges[colorCharIndex];\n                  }\n                }\n              }\n\n              // Get atlas data for renderable glyphs\n              if (!glyphObj.isWhitespace && !glyphObj.isEmpty) {\n                const idx = renderableGlyphIndex++;\n\n                // Add this glyph's path data\n                if (!glyphData[glyphId]) {\n                  glyphData[glyphId] = {\n                    path: glyphObj.path,\n                    pathBounds: [glyphObj.xMin, glyphObj.yMin, glyphObj.xMax, glyphObj.yMax]\n                  };\n                }\n\n                // Determine final glyph position and add to glyphPositions array\n                const glyphX = glyphInfo.x + anchorXOffset;\n                const glyphY = lineYOffset + anchorYOffset;\n                glyphPositions[idx * 2] = glyphX;\n                glyphPositions[idx * 2 + 1] = glyphY;\n\n                // Track total visible bounds\n                const visX0 = glyphX + glyphObj.xMin * fontSizeMult;\n                const visY0 = glyphY + glyphObj.yMin * fontSizeMult;\n                const visX1 = glyphX + glyphObj.xMax * fontSizeMult;\n                const visY1 = glyphY + glyphObj.yMax * fontSizeMult;\n                if (visX0 < visibleBounds[0]) visibleBounds[0] = visX0;\n                if (visY0 < visibleBounds[1]) visibleBounds[1] = visY0;\n                if (visX1 > visibleBounds[2]) visibleBounds[2] = visX1;\n                if (visY1 > visibleBounds[3]) visibleBounds[3] = visY1;\n\n                // Track bounding rects for each chunk of N glyphs\n                if (idx % chunkedBoundsSize === 0) {\n                  chunk = {start: idx, end: idx, rect: [INF, INF, -INF, -INF]};\n                  chunkedBounds.push(chunk);\n                }\n                chunk.end++;\n                const chunkRect = chunk.rect;\n                if (visX0 < chunkRect[0]) chunkRect[0] = visX0;\n                if (visY0 < chunkRect[1]) chunkRect[1] = visY0;\n                if (visX1 > chunkRect[2]) chunkRect[2] = visX1;\n                if (visY1 > chunkRect[3]) chunkRect[3] = visY1;\n\n                // Add to glyph ids array\n                glyphIds[idx] = glyphId;\n\n                // Add colors\n                if (colorRanges) {\n                  const start = idx * 3;\n                  glyphColors[start] = currentColor >> 16 & 255;\n                  glyphColors[start + 1] = currentColor >> 8 & 255;\n                  glyphColors[start + 2] = currentColor & 255;\n                }\n              }\n            }\n          }\n\n          // Increment y offset for next line\n          lineYOffset -= lineHeight;\n        });\n\n        // Fill in remaining caret positions in case the final character was a ligature\n        if (caretPositions) {\n          const ligCount = text.length - prevCharIndex;\n          if (ligCount > 1) {\n            fillLigatureCaretPositions(caretPositions, prevCharIndex, ligCount);\n          }\n        }\n      }\n\n      // Timing stats\n      timings.typesetting = now() - typesetStart;\n\n      callback({\n        glyphIds, //font indices for each glyph\n        glyphPositions, //x,y of each glyph's origin in layout\n        glyphData, //dict holding data about each glyph appearing in the text\n        caretPositions, //startX,endX,bottomY caret positions for each char\n        caretHeight, //height of cursor from bottom to top\n        glyphColors, //color for each glyph, if color ranges supplied\n        chunkedBounds, //total rects per (n=chunkedBoundsSize) consecutive glyphs\n        fontSize, //calculated em height\n        unitsPerEm, //font units per em\n        ascender: ascender * fontSizeMult, //font ascender\n        descender: descender * fontSizeMult, //font descender\n        capHeight: capHeight * fontSizeMult, //font cap-height\n        xHeight: xHeight * fontSizeMult, //font x-height\n        lineHeight, //computed line height\n        topBaseline, //y coordinate of the top line's baseline\n        blockBounds: [ //bounds for the whole block of text, including vertical padding for lineHeight\n          anchorXOffset,\n          anchorYOffset - lines.length * lineHeight,\n          anchorXOffset + maxLineWidth,\n          anchorYOffset\n        ],\n        visibleBounds, //total bounds of visible text paths, may be larger or smaller than blockBounds\n        timings\n      });\n    });\n  }\n\n\n  /**\n   * For a given text string and font parameters, determine the resulting block dimensions\n   * after wrapping for the given maxWidth.\n   * @param args\n   * @param callback\n   */\n  function measure(args, callback) {\n    typeset(args, (result) => {\n      const [x0, y0, x1, y1] = result.blockBounds;\n      callback({\n        width: x1 - x0,\n        height: y1 - y0\n      });\n    }, {metricsOnly: true});\n  }\n\n  function parsePercent(str) {\n    let match = str.match(/^([\\d.]+)%$/);\n    let pct = match ? parseFloat(match[1]) : NaN;\n    return isNaN(pct) ? 0 : pct / 100\n  }\n\n  function fillLigatureCaretPositions(caretPositions, ligStartIndex, ligCount) {\n    const ligStartX = caretPositions[ligStartIndex * 3];\n    const ligEndX = caretPositions[ligStartIndex * 3 + 1];\n    const ligY = caretPositions[ligStartIndex * 3 + 2];\n    const guessedAdvanceX = (ligEndX - ligStartX) / ligCount;\n    for (let i = 0; i < ligCount; i++) {\n      const startIndex = (ligStartIndex + i) * 3;\n      caretPositions[startIndex] = ligStartX + guessedAdvanceX * i;\n      caretPositions[startIndex + 1] = ligStartX + guessedAdvanceX * (i + 1);\n      caretPositions[startIndex + 2] = ligY;\n    }\n  }\n\n  function now() {\n    return (self.performance || Date).now()\n  }\n\n  // Array-backed structure for a single line's glyphs data\n  function TextLine() {\n    this.data = [];\n  }\n  const textLineProps = ['glyphObj', 'x', 'width', 'charIndex'];\n  TextLine.prototype = {\n    width: 0,\n    isSoftWrapped: false,\n    get count() {\n      return Math.ceil(this.data.length / textLineProps.length)\n    },\n    glyphAt(i) {\n      let fly = TextLine.flyweight;\n      fly.data = this.data;\n      fly.index = i;\n      return fly\n    },\n    splitAt(i) {\n      let newLine = new TextLine();\n      newLine.data = this.data.splice(i * textLineProps.length);\n      return newLine\n    }\n  };\n  TextLine.flyweight = textLineProps.reduce((obj, prop, i, all) => {\n    Object.defineProperty(obj, prop, {\n      get() {\n        return this.data[this.index * textLineProps.length + i]\n      },\n      set(val) {\n        this.data[this.index * textLineProps.length + i] = val;\n      }\n    });\n    return obj\n  }, {data: null, index: 0});\n\n\n  return {\n    typeset,\n    measure,\n    loadFont\n  }\n}\n\nconst now = () => (self.performance || Date).now();\n\nconst mainThreadGenerator = /*#__PURE__*/ createSDFGenerator();\n\nlet warned;\n\n/**\n * Generate an SDF texture image for a single glyph path, placing the result into a webgl canvas at a\n * given location and channel. Utilizes the webgl-sdf-generator external package for GPU-accelerated SDF\n * generation when supported.\n */\nfunction generateSDF(width, height, path, viewBox, distance, exponent, canvas, x, y, channel, useWebGL = true) {\n  // Allow opt-out\n  if (!useWebGL) {\n    return generateSDF_JS_Worker(width, height, path, viewBox, distance, exponent, canvas, x, y, channel)\n  }\n\n  // Attempt GPU-accelerated generation first\n  return generateSDF_GL(width, height, path, viewBox, distance, exponent, canvas, x, y, channel).then(\n    null,\n    err => {\n      // WebGL failed either due to a hard error or unexpected results; fall back to JS in workers\n      if (!warned) {\n        console.warn(`WebGL SDF generation failed, falling back to JS`, err);\n        warned = true;\n      }\n      return generateSDF_JS_Worker(width, height, path, viewBox, distance, exponent, canvas, x, y, channel)\n    }\n  )\n}\n\nconst queue = [];\nconst chunkTimeBudget = 5; // ms\nlet timer = 0;\n\nfunction nextChunk() {\n  const start = now();\n  while (queue.length && now() - start < chunkTimeBudget) {\n    queue.shift()();\n  }\n  timer = queue.length ? setTimeout(nextChunk, 0) : 0;\n}\n\n/**\n * WebGL-based implementation executed on the main thread. Requests are executed in time-bounded\n * macrotask chunks to allow render frames to execute in between.\n */\nconst generateSDF_GL = (...args) => {\n  return new Promise((resolve, reject) => {\n    queue.push(() => {\n      const start = now();\n      try {\n        mainThreadGenerator.webgl.generateIntoCanvas(...args);\n        resolve({ timing: now() - start });\n      } catch (err) {\n        reject(err);\n      }\n    });\n    if (!timer) {\n      timer = setTimeout(nextChunk, 0);\n    }\n  })\n};\n\nconst threadCount = 4; // how many workers to spawn\nconst idleTimeout = 2000; // workers will be terminated after being idle this many milliseconds\nconst threads = {};\nlet callNum = 0;\n\n/**\n * Fallback JS-based implementation, fanned out to a number of worker threads for parallelism\n */\nfunction generateSDF_JS_Worker(width, height, path, viewBox, distance, exponent, canvas, x, y, channel) {\n  const workerId = 'TroikaTextSDFGenerator_JS_' + ((callNum++) % threadCount);\n  let thread = threads[workerId];\n  if (!thread) {\n    thread = threads[workerId] = {\n      workerModule: defineWorkerModule({\n        name: workerId,\n        workerId,\n        dependencies: [\n          createSDFGenerator,\n          now\n        ],\n        init(_createSDFGenerator, now) {\n          const generate = _createSDFGenerator().javascript.generate;\n          return function (...args) {\n            const start = now();\n            const textureData = generate(...args);\n            return {\n              textureData,\n              timing: now() - start\n            }\n          }\n        },\n        getTransferables(result) {\n          return [result.textureData.buffer]\n        }\n      }),\n      requests: 0,\n      idleTimer: null\n    };\n  }\n\n  thread.requests++;\n  clearTimeout(thread.idleTimer);\n  return thread.workerModule(width, height, path, viewBox, distance, exponent)\n    .then(({ textureData, timing }) => {\n      // copy result data into the canvas\n      const start = now();\n      // expand single-channel data into rgba\n      const imageData = new Uint8Array(textureData.length * 4);\n      for (let i = 0; i < textureData.length; i++) {\n        imageData[i * 4 + channel] = textureData[i];\n      }\n      mainThreadGenerator.webglUtils.renderImageData(canvas, imageData, x, y, width, height, 1 << (3 - channel));\n      timing += now() - start;\n\n      // clean up workers after a while\n      if (--thread.requests === 0) {\n        thread.idleTimer = setTimeout(() => { terminateWorker(workerId); }, idleTimeout);\n      }\n      return { timing }\n    })\n}\n\nfunction warmUpSDFCanvas(canvas) {\n  if (!canvas._warm) {\n    mainThreadGenerator.webgl.isSupported(canvas);\n    canvas._warm = true;\n  }\n}\n\nconst resizeWebGLCanvasWithoutClearing = mainThreadGenerator.webglUtils.resizeWebGLCanvasWithoutClearing;\n\n/*!\nCustom build of Typr.ts (https://github.com/fredli74/Typr.ts) for use in Troika text rendering.\nOriginal MIT license applies: https://github.com/fredli74/Typr.ts/blob/master/LICENSE\n*/\nfunction typrFactory(){return \"undefined\"==typeof window&&(self.window=self),function(r){var e={parse:function(r){var t=e._bin,a=new Uint8Array(r);if(\"ttcf\"==t.readASCII(a,0,4)){var n=4;t.readUshort(a,n),n+=2,t.readUshort(a,n),n+=2;var o=t.readUint(a,n);n+=4;for(var s=[],i=0;i<o;i++){var h=t.readUint(a,n);n+=4,s.push(e._readFont(a,h));}return s}return [e._readFont(a,0)]},_readFont:function(r,t){var a=e._bin,n=t;a.readFixed(r,t),t+=4;var o=a.readUshort(r,t);t+=2,a.readUshort(r,t),t+=2,a.readUshort(r,t),t+=2,a.readUshort(r,t),t+=2;for(var s=[\"cmap\",\"head\",\"hhea\",\"maxp\",\"hmtx\",\"name\",\"OS/2\",\"post\",\"loca\",\"glyf\",\"kern\",\"CFF \",\"GPOS\",\"GSUB\",\"SVG \"],i={_data:r,_offset:n},h={},f=0;f<o;f++){var d=a.readASCII(r,t,4);t+=4,a.readUint(r,t),t+=4;var u=a.readUint(r,t);t+=4;var l=a.readUint(r,t);t+=4,h[d]={offset:u,length:l};}for(f=0;f<s.length;f++){var v=s[f];h[v]&&(i[v.trim()]=e[v.trim()].parse(r,h[v].offset,h[v].length,i));}return i},_tabOffset:function(r,t,a){for(var n=e._bin,o=n.readUshort(r,a+4),s=a+12,i=0;i<o;i++){var h=n.readASCII(r,s,4);s+=4,n.readUint(r,s),s+=4;var f=n.readUint(r,s);if(s+=4,n.readUint(r,s),s+=4,h==t)return f}return 0}};e._bin={readFixed:function(r,e){return (r[e]<<8|r[e+1])+(r[e+2]<<8|r[e+3])/65540},readF2dot14:function(r,t){return e._bin.readShort(r,t)/16384},readInt:function(r,t){return e._bin._view(r).getInt32(t)},readInt8:function(r,t){return e._bin._view(r).getInt8(t)},readShort:function(r,t){return e._bin._view(r).getInt16(t)},readUshort:function(r,t){return e._bin._view(r).getUint16(t)},readUshorts:function(r,t,a){for(var n=[],o=0;o<a;o++)n.push(e._bin.readUshort(r,t+2*o));return n},readUint:function(r,t){return e._bin._view(r).getUint32(t)},readUint64:function(r,t){return 4294967296*e._bin.readUint(r,t)+e._bin.readUint(r,t+4)},readASCII:function(r,e,t){for(var a=\"\",n=0;n<t;n++)a+=String.fromCharCode(r[e+n]);return a},readUnicode:function(r,e,t){for(var a=\"\",n=0;n<t;n++){var o=r[e++]<<8|r[e++];a+=String.fromCharCode(o);}return a},_tdec:\"undefined\"!=typeof window&&window.TextDecoder?new window.TextDecoder:null,readUTF8:function(r,t,a){var n=e._bin._tdec;return n&&0==t&&a==r.length?n.decode(r):e._bin.readASCII(r,t,a)},readBytes:function(r,e,t){for(var a=[],n=0;n<t;n++)a.push(r[e+n]);return a},readASCIIArray:function(r,e,t){for(var a=[],n=0;n<t;n++)a.push(String.fromCharCode(r[e+n]));return a},_view:function(r){return r._dataView||(r._dataView=r.buffer?new DataView(r.buffer,r.byteOffset,r.byteLength):new DataView(new Uint8Array(r).buffer))}},e._lctf={},e._lctf.parse=function(r,t,a,n,o){var s=e._bin,i={},h=t;s.readFixed(r,t),t+=4;var f=s.readUshort(r,t);t+=2;var d=s.readUshort(r,t);t+=2;var u=s.readUshort(r,t);return t+=2,i.scriptList=e._lctf.readScriptList(r,h+f),i.featureList=e._lctf.readFeatureList(r,h+d),i.lookupList=e._lctf.readLookupList(r,h+u,o),i},e._lctf.readLookupList=function(r,t,a){var n=e._bin,o=t,s=[],i=n.readUshort(r,t);t+=2;for(var h=0;h<i;h++){var f=n.readUshort(r,t);t+=2;var d=e._lctf.readLookupTable(r,o+f,a);s.push(d);}return s},e._lctf.readLookupTable=function(r,t,a){var n=e._bin,o=t,s={tabs:[]};s.ltype=n.readUshort(r,t),t+=2,s.flag=n.readUshort(r,t),t+=2;var i=n.readUshort(r,t);t+=2;for(var h=s.ltype,f=0;f<i;f++){var d=n.readUshort(r,t);t+=2;var u=a(r,h,o+d,s);s.tabs.push(u);}return s},e._lctf.numOfOnes=function(r){for(var e=0,t=0;t<32;t++)0!=(r>>>t&1)&&e++;return e},e._lctf.readClassDef=function(r,t){var a=e._bin,n=[],o=a.readUshort(r,t);if(t+=2,1==o){var s=a.readUshort(r,t);t+=2;var i=a.readUshort(r,t);t+=2;for(var h=0;h<i;h++)n.push(s+h),n.push(s+h),n.push(a.readUshort(r,t)),t+=2;}if(2==o){var f=a.readUshort(r,t);t+=2;for(h=0;h<f;h++)n.push(a.readUshort(r,t)),t+=2,n.push(a.readUshort(r,t)),t+=2,n.push(a.readUshort(r,t)),t+=2;}return n},e._lctf.getInterval=function(r,e){for(var t=0;t<r.length;t+=3){var a=r[t],n=r[t+1];if(r[t+2],a<=e&&e<=n)return t}return -1},e._lctf.readCoverage=function(r,t){var a=e._bin,n={};n.fmt=a.readUshort(r,t),t+=2;var o=a.readUshort(r,t);return t+=2,1==n.fmt&&(n.tab=a.readUshorts(r,t,o)),2==n.fmt&&(n.tab=a.readUshorts(r,t,3*o)),n},e._lctf.coverageIndex=function(r,t){var a=r.tab;if(1==r.fmt)return a.indexOf(t);if(2==r.fmt){var n=e._lctf.getInterval(a,t);if(-1!=n)return a[n+2]+(t-a[n])}return -1},e._lctf.readFeatureList=function(r,t){var a=e._bin,n=t,o=[],s=a.readUshort(r,t);t+=2;for(var i=0;i<s;i++){var h=a.readASCII(r,t,4);t+=4;var f=a.readUshort(r,t);t+=2;var d=e._lctf.readFeatureTable(r,n+f);d.tag=h.trim(),o.push(d);}return o},e._lctf.readFeatureTable=function(r,t){var a=e._bin,n=t,o={},s=a.readUshort(r,t);t+=2,s>0&&(o.featureParams=n+s);var i=a.readUshort(r,t);t+=2,o.tab=[];for(var h=0;h<i;h++)o.tab.push(a.readUshort(r,t+2*h));return o},e._lctf.readScriptList=function(r,t){var a=e._bin,n=t,o={},s=a.readUshort(r,t);t+=2;for(var i=0;i<s;i++){var h=a.readASCII(r,t,4);t+=4;var f=a.readUshort(r,t);t+=2,o[h.trim()]=e._lctf.readScriptTable(r,n+f);}return o},e._lctf.readScriptTable=function(r,t){var a=e._bin,n=t,o={},s=a.readUshort(r,t);t+=2,o.default=e._lctf.readLangSysTable(r,n+s);var i=a.readUshort(r,t);t+=2;for(var h=0;h<i;h++){var f=a.readASCII(r,t,4);t+=4;var d=a.readUshort(r,t);t+=2,o[f.trim()]=e._lctf.readLangSysTable(r,n+d);}return o},e._lctf.readLangSysTable=function(r,t){var a=e._bin,n={};a.readUshort(r,t),t+=2,n.reqFeature=a.readUshort(r,t),t+=2;var o=a.readUshort(r,t);return t+=2,n.features=a.readUshorts(r,t,o),n},e.CFF={},e.CFF.parse=function(r,t,a){var n=e._bin;(r=new Uint8Array(r.buffer,t,a))[t=0],r[++t],r[++t],r[++t],t++;var o=[];t=e.CFF.readIndex(r,t,o);for(var s=[],i=0;i<o.length-1;i++)s.push(n.readASCII(r,t+o[i],o[i+1]-o[i]));t+=o[o.length-1];var h=[];t=e.CFF.readIndex(r,t,h);var f=[];for(i=0;i<h.length-1;i++)f.push(e.CFF.readDict(r,t+h[i],t+h[i+1]));t+=h[h.length-1];var d=f[0],u=[];t=e.CFF.readIndex(r,t,u);var l=[];for(i=0;i<u.length-1;i++)l.push(n.readASCII(r,t+u[i],u[i+1]-u[i]));if(t+=u[u.length-1],e.CFF.readSubrs(r,t,d),d.CharStrings){t=d.CharStrings;u=[];t=e.CFF.readIndex(r,t,u);var v=[];for(i=0;i<u.length-1;i++)v.push(n.readBytes(r,t+u[i],u[i+1]-u[i]));d.CharStrings=v;}if(d.ROS){t=d.FDArray;var c=[];t=e.CFF.readIndex(r,t,c),d.FDArray=[];for(i=0;i<c.length-1;i++){var p=e.CFF.readDict(r,t+c[i],t+c[i+1]);e.CFF._readFDict(r,p,l),d.FDArray.push(p);}t+=c[c.length-1],t=d.FDSelect,d.FDSelect=[];var U=r[t];if(t++,3!=U)throw U;var g=n.readUshort(r,t);t+=2;for(i=0;i<g+1;i++)d.FDSelect.push(n.readUshort(r,t),r[t+2]),t+=3;}return d.Encoding&&(d.Encoding=e.CFF.readEncoding(r,d.Encoding,d.CharStrings.length)),d.charset&&(d.charset=e.CFF.readCharset(r,d.charset,d.CharStrings.length)),e.CFF._readFDict(r,d,l),d},e.CFF._readFDict=function(r,t,a){var n;for(var o in t.Private&&(n=t.Private[1],t.Private=e.CFF.readDict(r,n,n+t.Private[0]),t.Private.Subrs&&e.CFF.readSubrs(r,n+t.Private.Subrs,t.Private)),t)-1!=[\"FamilyName\",\"FontName\",\"FullName\",\"Notice\",\"version\",\"Copyright\"].indexOf(o)&&(t[o]=a[t[o]-426+35]);},e.CFF.readSubrs=function(r,t,a){var n=e._bin,o=[];t=e.CFF.readIndex(r,t,o);var s,i=o.length;s=i<1240?107:i<33900?1131:32768,a.Bias=s,a.Subrs=[];for(var h=0;h<o.length-1;h++)a.Subrs.push(n.readBytes(r,t+o[h],o[h+1]-o[h]));},e.CFF.tableSE=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,0,111,112,113,114,0,115,116,117,118,119,120,121,122,0,123,0,124,125,126,127,128,129,130,131,0,132,133,0,134,135,136,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,139,0,0,0,0,140,141,142,143,0,0,0,0,0,144,0,0,0,145,0,0,146,147,148,149,0,0,0,0],e.CFF.glyphByUnicode=function(r,e){for(var t=0;t<r.charset.length;t++)if(r.charset[t]==e)return t;return -1},e.CFF.glyphBySE=function(r,t){return t<0||t>255?-1:e.CFF.glyphByUnicode(r,e.CFF.tableSE[t])},e.CFF.readEncoding=function(r,t,a){e._bin;var n=[\".notdef\"],o=r[t];if(t++,0!=o)throw \"error: unknown encoding format: \"+o;var s=r[t];t++;for(var i=0;i<s;i++)n.push(r[t+i]);return n},e.CFF.readCharset=function(r,t,a){var n=e._bin,o=[\".notdef\"],s=r[t];if(t++,0==s)for(var i=0;i<a;i++){var h=n.readUshort(r,t);t+=2,o.push(h);}else {if(1!=s&&2!=s)throw \"error: format: \"+s;for(;o.length<a;){h=n.readUshort(r,t);t+=2;var f=0;1==s?(f=r[t],t++):(f=n.readUshort(r,t),t+=2);for(i=0;i<=f;i++)o.push(h),h++;}}return o},e.CFF.readIndex=function(r,t,a){var n=e._bin,o=n.readUshort(r,t)+1,s=r[t+=2];if(t++,1==s)for(var i=0;i<o;i++)a.push(r[t+i]);else if(2==s)for(i=0;i<o;i++)a.push(n.readUshort(r,t+2*i));else if(3==s)for(i=0;i<o;i++)a.push(16777215&n.readUint(r,t+3*i-1));else if(1!=o)throw \"unsupported offset size: \"+s+\", count: \"+o;return (t+=o*s)-1},e.CFF.getCharString=function(r,t,a){var n=e._bin,o=r[t],s=r[t+1];r[t+2],r[t+3],r[t+4];var i=1,h=null,f=null;o<=20&&(h=o,i=1),12==o&&(h=100*o+s,i=2),21<=o&&o<=27&&(h=o,i=1),28==o&&(f=n.readShort(r,t+1),i=3),29<=o&&o<=31&&(h=o,i=1),32<=o&&o<=246&&(f=o-139,i=1),247<=o&&o<=250&&(f=256*(o-247)+s+108,i=2),251<=o&&o<=254&&(f=256*-(o-251)-s-108,i=2),255==o&&(f=n.readInt(r,t+1)/65535,i=5),a.val=null!=f?f:\"o\"+h,a.size=i;},e.CFF.readCharString=function(r,t,a){for(var n=t+a,o=e._bin,s=[];t<n;){var i=r[t],h=r[t+1];r[t+2],r[t+3],r[t+4];var f=1,d=null,u=null;i<=20&&(d=i,f=1),12==i&&(d=100*i+h,f=2),19!=i&&20!=i||(d=i,f=2),21<=i&&i<=27&&(d=i,f=1),28==i&&(u=o.readShort(r,t+1),f=3),29<=i&&i<=31&&(d=i,f=1),32<=i&&i<=246&&(u=i-139,f=1),247<=i&&i<=250&&(u=256*(i-247)+h+108,f=2),251<=i&&i<=254&&(u=256*-(i-251)-h-108,f=2),255==i&&(u=o.readInt(r,t+1)/65535,f=5),s.push(null!=u?u:\"o\"+d),t+=f;}return s},e.CFF.readDict=function(r,t,a){for(var n=e._bin,o={},s=[];t<a;){var i=r[t],h=r[t+1];r[t+2],r[t+3],r[t+4];var f=1,d=null,u=null;if(28==i&&(u=n.readShort(r,t+1),f=3),29==i&&(u=n.readInt(r,t+1),f=5),32<=i&&i<=246&&(u=i-139,f=1),247<=i&&i<=250&&(u=256*(i-247)+h+108,f=2),251<=i&&i<=254&&(u=256*-(i-251)-h-108,f=2),255==i)throw u=n.readInt(r,t+1)/65535,f=5,\"unknown number\";if(30==i){var l=[];for(f=1;;){var v=r[t+f];f++;var c=v>>4,p=15&v;if(15!=c&&l.push(c),15!=p&&l.push(p),15==p)break}for(var U=\"\",g=[0,1,2,3,4,5,6,7,8,9,\".\",\"e\",\"e-\",\"reserved\",\"-\",\"endOfNumber\"],S=0;S<l.length;S++)U+=g[l[S]];u=parseFloat(U);}if(i<=21)if(d=[\"version\",\"Notice\",\"FullName\",\"FamilyName\",\"Weight\",\"FontBBox\",\"BlueValues\",\"OtherBlues\",\"FamilyBlues\",\"FamilyOtherBlues\",\"StdHW\",\"StdVW\",\"escape\",\"UniqueID\",\"XUID\",\"charset\",\"Encoding\",\"CharStrings\",\"Private\",\"Subrs\",\"defaultWidthX\",\"nominalWidthX\"][i],f=1,12==i)d=[\"Copyright\",\"isFixedPitch\",\"ItalicAngle\",\"UnderlinePosition\",\"UnderlineThickness\",\"PaintType\",\"CharstringType\",\"FontMatrix\",\"StrokeWidth\",\"BlueScale\",\"BlueShift\",\"BlueFuzz\",\"StemSnapH\",\"StemSnapV\",\"ForceBold\",0,0,\"LanguageGroup\",\"ExpansionFactor\",\"initialRandomSeed\",\"SyntheticBase\",\"PostScript\",\"BaseFontName\",\"BaseFontBlend\",0,0,0,0,0,0,\"ROS\",\"CIDFontVersion\",\"CIDFontRevision\",\"CIDFontType\",\"CIDCount\",\"UIDBase\",\"FDArray\",\"FDSelect\",\"FontName\"][h],f=2;null!=d?(o[d]=1==s.length?s[0]:s,s=[]):s.push(u),t+=f;}return o},e.cmap={},e.cmap.parse=function(r,t,a){r=new Uint8Array(r.buffer,t,a),t=0;var n=e._bin,o={};n.readUshort(r,t),t+=2;var s=n.readUshort(r,t);t+=2;var i=[];o.tables=[];for(var h=0;h<s;h++){var f=n.readUshort(r,t);t+=2;var d=n.readUshort(r,t);t+=2;var u=n.readUint(r,t);t+=4;var l=\"p\"+f+\"e\"+d,v=i.indexOf(u);if(-1==v){var c;v=o.tables.length,i.push(u);var p=n.readUshort(r,u);0==p?c=e.cmap.parse0(r,u):4==p?c=e.cmap.parse4(r,u):6==p?c=e.cmap.parse6(r,u):12==p?c=e.cmap.parse12(r,u):console.debug(\"unknown format: \"+p,f,d,u),o.tables.push(c);}if(null!=o[l])throw \"multiple tables for one platform+encoding\";o[l]=v;}return o},e.cmap.parse0=function(r,t){var a=e._bin,n={};n.format=a.readUshort(r,t),t+=2;var o=a.readUshort(r,t);t+=2,a.readUshort(r,t),t+=2,n.map=[];for(var s=0;s<o-6;s++)n.map.push(r[t+s]);return n},e.cmap.parse4=function(r,t){var a=e._bin,n=t,o={};o.format=a.readUshort(r,t),t+=2;var s=a.readUshort(r,t);t+=2,a.readUshort(r,t),t+=2;var i=a.readUshort(r,t);t+=2;var h=i/2;o.searchRange=a.readUshort(r,t),t+=2,o.entrySelector=a.readUshort(r,t),t+=2,o.rangeShift=a.readUshort(r,t),t+=2,o.endCount=a.readUshorts(r,t,h),t+=2*h,t+=2,o.startCount=a.readUshorts(r,t,h),t+=2*h,o.idDelta=[];for(var f=0;f<h;f++)o.idDelta.push(a.readShort(r,t)),t+=2;for(o.idRangeOffset=a.readUshorts(r,t,h),t+=2*h,o.glyphIdArray=[];t<n+s;)o.glyphIdArray.push(a.readUshort(r,t)),t+=2;return o},e.cmap.parse6=function(r,t){var a=e._bin,n={};n.format=a.readUshort(r,t),t+=2,a.readUshort(r,t),t+=2,a.readUshort(r,t),t+=2,n.firstCode=a.readUshort(r,t),t+=2;var o=a.readUshort(r,t);t+=2,n.glyphIdArray=[];for(var s=0;s<o;s++)n.glyphIdArray.push(a.readUshort(r,t)),t+=2;return n},e.cmap.parse12=function(r,t){var a=e._bin,n={};n.format=a.readUshort(r,t),t+=2,t+=2,a.readUint(r,t),t+=4,a.readUint(r,t),t+=4;var o=a.readUint(r,t);t+=4,n.groups=[];for(var s=0;s<o;s++){var i=t+12*s,h=a.readUint(r,i+0),f=a.readUint(r,i+4),d=a.readUint(r,i+8);n.groups.push([h,f,d]);}return n},e.glyf={},e.glyf.parse=function(r,e,t,a){for(var n=[],o=0;o<a.maxp.numGlyphs;o++)n.push(null);return n},e.glyf._parseGlyf=function(r,t){var a=e._bin,n=r._data,o=e._tabOffset(n,\"glyf\",r._offset)+r.loca[t];if(r.loca[t]==r.loca[t+1])return null;var s={};if(s.noc=a.readShort(n,o),o+=2,s.xMin=a.readShort(n,o),o+=2,s.yMin=a.readShort(n,o),o+=2,s.xMax=a.readShort(n,o),o+=2,s.yMax=a.readShort(n,o),o+=2,s.xMin>=s.xMax||s.yMin>=s.yMax)return null;if(s.noc>0){s.endPts=[];for(var i=0;i<s.noc;i++)s.endPts.push(a.readUshort(n,o)),o+=2;var h=a.readUshort(n,o);if(o+=2,n.length-o<h)return null;s.instructions=a.readBytes(n,o,h),o+=h;var f=s.endPts[s.noc-1]+1;s.flags=[];for(i=0;i<f;i++){var d=n[o];if(o++,s.flags.push(d),0!=(8&d)){var u=n[o];o++;for(var l=0;l<u;l++)s.flags.push(d),i++;}}s.xs=[];for(i=0;i<f;i++){var v=0!=(2&s.flags[i]),c=0!=(16&s.flags[i]);v?(s.xs.push(c?n[o]:-n[o]),o++):c?s.xs.push(0):(s.xs.push(a.readShort(n,o)),o+=2);}s.ys=[];for(i=0;i<f;i++){v=0!=(4&s.flags[i]),c=0!=(32&s.flags[i]);v?(s.ys.push(c?n[o]:-n[o]),o++):c?s.ys.push(0):(s.ys.push(a.readShort(n,o)),o+=2);}var p=0,U=0;for(i=0;i<f;i++)p+=s.xs[i],U+=s.ys[i],s.xs[i]=p,s.ys[i]=U;}else {var g;s.parts=[];do{g=a.readUshort(n,o),o+=2;var S={m:{a:1,b:0,c:0,d:1,tx:0,ty:0},p1:-1,p2:-1};if(s.parts.push(S),S.glyphIndex=a.readUshort(n,o),o+=2,1&g){var m=a.readShort(n,o);o+=2;var b=a.readShort(n,o);o+=2;}else {m=a.readInt8(n,o);o++;b=a.readInt8(n,o);o++;}2&g?(S.m.tx=m,S.m.ty=b):(S.p1=m,S.p2=b),8&g?(S.m.a=S.m.d=a.readF2dot14(n,o),o+=2):64&g?(S.m.a=a.readF2dot14(n,o),o+=2,S.m.d=a.readF2dot14(n,o),o+=2):128&g&&(S.m.a=a.readF2dot14(n,o),o+=2,S.m.b=a.readF2dot14(n,o),o+=2,S.m.c=a.readF2dot14(n,o),o+=2,S.m.d=a.readF2dot14(n,o),o+=2);}while(32&g);if(256&g){var y=a.readUshort(n,o);o+=2,s.instr=[];for(i=0;i<y;i++)s.instr.push(n[o]),o++;}}return s},e.GPOS={},e.GPOS.parse=function(r,t,a,n){return e._lctf.parse(r,t,a,n,e.GPOS.subt)},e.GPOS.subt=function(r,t,a,n){var o=e._bin,s=a,i={};if(i.fmt=o.readUshort(r,a),a+=2,1==t||2==t||3==t||7==t||8==t&&i.fmt<=2){var h=o.readUshort(r,a);a+=2,i.coverage=e._lctf.readCoverage(r,h+s);}if(1==t&&1==i.fmt){var f=o.readUshort(r,a);a+=2;var d=e._lctf.numOfOnes(f);0!=f&&(i.pos=e.GPOS.readValueRecord(r,a,f));}else if(2==t&&i.fmt>=1&&i.fmt<=2){f=o.readUshort(r,a);a+=2;var u=o.readUshort(r,a);a+=2;d=e._lctf.numOfOnes(f);var l=e._lctf.numOfOnes(u);if(1==i.fmt){i.pairsets=[];var v=o.readUshort(r,a);a+=2;for(var c=0;c<v;c++){var p=s+o.readUshort(r,a);a+=2;var U=o.readUshort(r,p);p+=2;for(var g=[],S=0;S<U;S++){var m=o.readUshort(r,p);p+=2,0!=f&&(x=e.GPOS.readValueRecord(r,p,f),p+=2*d),0!=u&&(P=e.GPOS.readValueRecord(r,p,u),p+=2*l),g.push({gid2:m,val1:x,val2:P});}i.pairsets.push(g);}}if(2==i.fmt){var b=o.readUshort(r,a);a+=2;var y=o.readUshort(r,a);a+=2;var F=o.readUshort(r,a);a+=2;var _=o.readUshort(r,a);a+=2,i.classDef1=e._lctf.readClassDef(r,s+b),i.classDef2=e._lctf.readClassDef(r,s+y),i.matrix=[];for(c=0;c<F;c++){var C=[];for(S=0;S<_;S++){var x=null,P=null;0!=f&&(x=e.GPOS.readValueRecord(r,a,f),a+=2*d),0!=u&&(P=e.GPOS.readValueRecord(r,a,u),a+=2*l),C.push({val1:x,val2:P});}i.matrix.push(C);}}}else {if(9==t&&1==i.fmt){var I=o.readUshort(r,a);a+=2;var w=o.readUint(r,a);if(a+=4,9==n.ltype)n.ltype=I;else if(n.ltype!=I)throw \"invalid extension substitution\";return e.GPOS.subt(r,n.ltype,s+w)}console.debug(\"unsupported GPOS table LookupType\",t,\"format\",i.fmt);}return i},e.GPOS.readValueRecord=function(r,t,a){var n=e._bin,o=[];return o.push(1&a?n.readShort(r,t):0),t+=1&a?2:0,o.push(2&a?n.readShort(r,t):0),t+=2&a?2:0,o.push(4&a?n.readShort(r,t):0),t+=4&a?2:0,o.push(8&a?n.readShort(r,t):0),t+=8&a?2:0,o},e.GSUB={},e.GSUB.parse=function(r,t,a,n){return e._lctf.parse(r,t,a,n,e.GSUB.subt)},e.GSUB.subt=function(r,t,a,n){var o=e._bin,s=a,i={};if(i.fmt=o.readUshort(r,a),a+=2,1!=t&&4!=t&&5!=t&&6!=t)return null;if(1==t||4==t||5==t&&i.fmt<=2||6==t&&i.fmt<=2){var h=o.readUshort(r,a);a+=2,i.coverage=e._lctf.readCoverage(r,s+h);}if(1==t&&i.fmt>=1&&i.fmt<=2){if(1==i.fmt)i.delta=o.readShort(r,a),a+=2;else if(2==i.fmt){var f=o.readUshort(r,a);a+=2,i.newg=o.readUshorts(r,a,f),a+=2*i.newg.length;}}else if(4==t){i.vals=[];f=o.readUshort(r,a);a+=2;for(var d=0;d<f;d++){var u=o.readUshort(r,a);a+=2,i.vals.push(e.GSUB.readLigatureSet(r,s+u));}}else if(5==t&&2==i.fmt){if(2==i.fmt){var l=o.readUshort(r,a);a+=2,i.cDef=e._lctf.readClassDef(r,s+l),i.scset=[];var v=o.readUshort(r,a);a+=2;for(d=0;d<v;d++){var c=o.readUshort(r,a);a+=2,i.scset.push(0==c?null:e.GSUB.readSubClassSet(r,s+c));}}}else if(6==t&&3==i.fmt){if(3==i.fmt){for(d=0;d<3;d++){f=o.readUshort(r,a);a+=2;for(var p=[],U=0;U<f;U++)p.push(e._lctf.readCoverage(r,s+o.readUshort(r,a+2*U)));a+=2*f,0==d&&(i.backCvg=p),1==d&&(i.inptCvg=p),2==d&&(i.ahedCvg=p);}f=o.readUshort(r,a);a+=2,i.lookupRec=e.GSUB.readSubstLookupRecords(r,a,f);}}else {if(7==t&&1==i.fmt){var g=o.readUshort(r,a);a+=2;var S=o.readUint(r,a);if(a+=4,9==n.ltype)n.ltype=g;else if(n.ltype!=g)throw \"invalid extension substitution\";return e.GSUB.subt(r,n.ltype,s+S)}console.debug(\"unsupported GSUB table LookupType\",t,\"format\",i.fmt);}return i},e.GSUB.readSubClassSet=function(r,t){var a=e._bin.readUshort,n=t,o=[],s=a(r,t);t+=2;for(var i=0;i<s;i++){var h=a(r,t);t+=2,o.push(e.GSUB.readSubClassRule(r,n+h));}return o},e.GSUB.readSubClassRule=function(r,t){var a=e._bin.readUshort,n={},o=a(r,t),s=a(r,t+=2);t+=2,n.input=[];for(var i=0;i<o-1;i++)n.input.push(a(r,t)),t+=2;return n.substLookupRecords=e.GSUB.readSubstLookupRecords(r,t,s),n},e.GSUB.readSubstLookupRecords=function(r,t,a){for(var n=e._bin.readUshort,o=[],s=0;s<a;s++)o.push(n(r,t),n(r,t+2)),t+=4;return o},e.GSUB.readChainSubClassSet=function(r,t){var a=e._bin,n=t,o=[],s=a.readUshort(r,t);t+=2;for(var i=0;i<s;i++){var h=a.readUshort(r,t);t+=2,o.push(e.GSUB.readChainSubClassRule(r,n+h));}return o},e.GSUB.readChainSubClassRule=function(r,t){for(var a=e._bin,n={},o=[\"backtrack\",\"input\",\"lookahead\"],s=0;s<o.length;s++){var i=a.readUshort(r,t);t+=2,1==s&&i--,n[o[s]]=a.readUshorts(r,t,i),t+=2*n[o[s]].length;}i=a.readUshort(r,t);return t+=2,n.subst=a.readUshorts(r,t,2*i),t+=2*n.subst.length,n},e.GSUB.readLigatureSet=function(r,t){var a=e._bin,n=t,o=[],s=a.readUshort(r,t);t+=2;for(var i=0;i<s;i++){var h=a.readUshort(r,t);t+=2,o.push(e.GSUB.readLigature(r,n+h));}return o},e.GSUB.readLigature=function(r,t){var a=e._bin,n={chain:[]};n.nglyph=a.readUshort(r,t),t+=2;var o=a.readUshort(r,t);t+=2;for(var s=0;s<o-1;s++)n.chain.push(a.readUshort(r,t)),t+=2;return n},e.head={},e.head.parse=function(r,t,a){var n=e._bin,o={};return n.readFixed(r,t),t+=4,o.fontRevision=n.readFixed(r,t),t+=4,n.readUint(r,t),t+=4,n.readUint(r,t),t+=4,o.flags=n.readUshort(r,t),t+=2,o.unitsPerEm=n.readUshort(r,t),t+=2,o.created=n.readUint64(r,t),t+=8,o.modified=n.readUint64(r,t),t+=8,o.xMin=n.readShort(r,t),t+=2,o.yMin=n.readShort(r,t),t+=2,o.xMax=n.readShort(r,t),t+=2,o.yMax=n.readShort(r,t),t+=2,o.macStyle=n.readUshort(r,t),t+=2,o.lowestRecPPEM=n.readUshort(r,t),t+=2,o.fontDirectionHint=n.readShort(r,t),t+=2,o.indexToLocFormat=n.readShort(r,t),t+=2,o.glyphDataFormat=n.readShort(r,t),t+=2,o},e.hhea={},e.hhea.parse=function(r,t,a){var n=e._bin,o={};return n.readFixed(r,t),t+=4,o.ascender=n.readShort(r,t),t+=2,o.descender=n.readShort(r,t),t+=2,o.lineGap=n.readShort(r,t),t+=2,o.advanceWidthMax=n.readUshort(r,t),t+=2,o.minLeftSideBearing=n.readShort(r,t),t+=2,o.minRightSideBearing=n.readShort(r,t),t+=2,o.xMaxExtent=n.readShort(r,t),t+=2,o.caretSlopeRise=n.readShort(r,t),t+=2,o.caretSlopeRun=n.readShort(r,t),t+=2,o.caretOffset=n.readShort(r,t),t+=2,t+=8,o.metricDataFormat=n.readShort(r,t),t+=2,o.numberOfHMetrics=n.readUshort(r,t),t+=2,o},e.hmtx={},e.hmtx.parse=function(r,t,a,n){for(var o=e._bin,s={aWidth:[],lsBearing:[]},i=0,h=0,f=0;f<n.maxp.numGlyphs;f++)f<n.hhea.numberOfHMetrics&&(i=o.readUshort(r,t),t+=2,h=o.readShort(r,t),t+=2),s.aWidth.push(i),s.lsBearing.push(h);return s},e.kern={},e.kern.parse=function(r,t,a,n){var o=e._bin,s=o.readUshort(r,t);if(t+=2,1==s)return e.kern.parseV1(r,t-2,a,n);var i=o.readUshort(r,t);t+=2;for(var h={glyph1:[],rval:[]},f=0;f<i;f++){t+=2;a=o.readUshort(r,t);t+=2;var d=o.readUshort(r,t);t+=2;var u=d>>>8;if(0!=(u&=15))throw \"unknown kern table format: \"+u;t=e.kern.readFormat0(r,t,h);}return h},e.kern.parseV1=function(r,t,a,n){var o=e._bin;o.readFixed(r,t),t+=4;var s=o.readUint(r,t);t+=4;for(var i={glyph1:[],rval:[]},h=0;h<s;h++){o.readUint(r,t),t+=4;var f=o.readUshort(r,t);t+=2,o.readUshort(r,t),t+=2;var d=f>>>8;if(0!=(d&=15))throw \"unknown kern table format: \"+d;t=e.kern.readFormat0(r,t,i);}return i},e.kern.readFormat0=function(r,t,a){var n=e._bin,o=-1,s=n.readUshort(r,t);t+=2,n.readUshort(r,t),t+=2,n.readUshort(r,t),t+=2,n.readUshort(r,t),t+=2;for(var i=0;i<s;i++){var h=n.readUshort(r,t);t+=2;var f=n.readUshort(r,t);t+=2;var d=n.readShort(r,t);t+=2,h!=o&&(a.glyph1.push(h),a.rval.push({glyph2:[],vals:[]}));var u=a.rval[a.rval.length-1];u.glyph2.push(f),u.vals.push(d),o=h;}return t},e.loca={},e.loca.parse=function(r,t,a,n){var o=e._bin,s=[],i=n.head.indexToLocFormat,h=n.maxp.numGlyphs+1;if(0==i)for(var f=0;f<h;f++)s.push(o.readUshort(r,t+(f<<1))<<1);if(1==i)for(f=0;f<h;f++)s.push(o.readUint(r,t+(f<<2)));return s},e.maxp={},e.maxp.parse=function(r,t,a){var n=e._bin,o={},s=n.readUint(r,t);return t+=4,o.numGlyphs=n.readUshort(r,t),t+=2,65536==s&&(o.maxPoints=n.readUshort(r,t),t+=2,o.maxContours=n.readUshort(r,t),t+=2,o.maxCompositePoints=n.readUshort(r,t),t+=2,o.maxCompositeContours=n.readUshort(r,t),t+=2,o.maxZones=n.readUshort(r,t),t+=2,o.maxTwilightPoints=n.readUshort(r,t),t+=2,o.maxStorage=n.readUshort(r,t),t+=2,o.maxFunctionDefs=n.readUshort(r,t),t+=2,o.maxInstructionDefs=n.readUshort(r,t),t+=2,o.maxStackElements=n.readUshort(r,t),t+=2,o.maxSizeOfInstructions=n.readUshort(r,t),t+=2,o.maxComponentElements=n.readUshort(r,t),t+=2,o.maxComponentDepth=n.readUshort(r,t),t+=2),o},e.name={},e.name.parse=function(r,t,a){var n=e._bin,o={};n.readUshort(r,t),t+=2;var s=n.readUshort(r,t);t+=2,n.readUshort(r,t);for(var i,h=[\"copyright\",\"fontFamily\",\"fontSubfamily\",\"ID\",\"fullName\",\"version\",\"postScriptName\",\"trademark\",\"manufacturer\",\"designer\",\"description\",\"urlVendor\",\"urlDesigner\",\"licence\",\"licenceURL\",\"---\",\"typoFamilyName\",\"typoSubfamilyName\",\"compatibleFull\",\"sampleText\",\"postScriptCID\",\"wwsFamilyName\",\"wwsSubfamilyName\",\"lightPalette\",\"darkPalette\"],f=t+=2,d=0;d<s;d++){var u=n.readUshort(r,t);t+=2;var l=n.readUshort(r,t);t+=2;var v=n.readUshort(r,t);t+=2;var c=n.readUshort(r,t);t+=2;var p=n.readUshort(r,t);t+=2;var U=n.readUshort(r,t);t+=2;var g,S=h[c],m=f+12*s+U;if(0==u)g=n.readUnicode(r,m,p/2);else if(3==u&&0==l)g=n.readUnicode(r,m,p/2);else if(0==l)g=n.readASCII(r,m,p);else if(1==l)g=n.readUnicode(r,m,p/2);else if(3==l)g=n.readUnicode(r,m,p/2);else {if(1!=u)throw \"unknown encoding \"+l+\", platformID: \"+u;g=n.readASCII(r,m,p),console.debug(\"reading unknown MAC encoding \"+l+\" as ASCII\");}var b=\"p\"+u+\",\"+v.toString(16);null==o[b]&&(o[b]={}),o[b][void 0!==S?S:c]=g,o[b]._lang=v;}for(var y in o)if(null!=o[y].postScriptName&&1033==o[y]._lang)return o[y];for(var y in o)if(null!=o[y].postScriptName&&0==o[y]._lang)return o[y];for(var y in o)if(null!=o[y].postScriptName&&3084==o[y]._lang)return o[y];for(var y in o)if(null!=o[y].postScriptName)return o[y];for(var y in o){i=y;break}return console.debug(\"returning name table with languageID \"+o[i]._lang),o[i]},e[\"OS/2\"]={},e[\"OS/2\"].parse=function(r,t,a){var n=e._bin.readUshort(r,t);t+=2;var o={};if(0==n)e[\"OS/2\"].version0(r,t,o);else if(1==n)e[\"OS/2\"].version1(r,t,o);else if(2==n||3==n||4==n)e[\"OS/2\"].version2(r,t,o);else {if(5!=n)throw \"unknown OS/2 table version: \"+n;e[\"OS/2\"].version5(r,t,o);}return o},e[\"OS/2\"].version0=function(r,t,a){var n=e._bin;return a.xAvgCharWidth=n.readShort(r,t),t+=2,a.usWeightClass=n.readUshort(r,t),t+=2,a.usWidthClass=n.readUshort(r,t),t+=2,a.fsType=n.readUshort(r,t),t+=2,a.ySubscriptXSize=n.readShort(r,t),t+=2,a.ySubscriptYSize=n.readShort(r,t),t+=2,a.ySubscriptXOffset=n.readShort(r,t),t+=2,a.ySubscriptYOffset=n.readShort(r,t),t+=2,a.ySuperscriptXSize=n.readShort(r,t),t+=2,a.ySuperscriptYSize=n.readShort(r,t),t+=2,a.ySuperscriptXOffset=n.readShort(r,t),t+=2,a.ySuperscriptYOffset=n.readShort(r,t),t+=2,a.yStrikeoutSize=n.readShort(r,t),t+=2,a.yStrikeoutPosition=n.readShort(r,t),t+=2,a.sFamilyClass=n.readShort(r,t),t+=2,a.panose=n.readBytes(r,t,10),t+=10,a.ulUnicodeRange1=n.readUint(r,t),t+=4,a.ulUnicodeRange2=n.readUint(r,t),t+=4,a.ulUnicodeRange3=n.readUint(r,t),t+=4,a.ulUnicodeRange4=n.readUint(r,t),t+=4,a.achVendID=[n.readInt8(r,t),n.readInt8(r,t+1),n.readInt8(r,t+2),n.readInt8(r,t+3)],t+=4,a.fsSelection=n.readUshort(r,t),t+=2,a.usFirstCharIndex=n.readUshort(r,t),t+=2,a.usLastCharIndex=n.readUshort(r,t),t+=2,a.sTypoAscender=n.readShort(r,t),t+=2,a.sTypoDescender=n.readShort(r,t),t+=2,a.sTypoLineGap=n.readShort(r,t),t+=2,a.usWinAscent=n.readUshort(r,t),t+=2,a.usWinDescent=n.readUshort(r,t),t+=2},e[\"OS/2\"].version1=function(r,t,a){var n=e._bin;return t=e[\"OS/2\"].version0(r,t,a),a.ulCodePageRange1=n.readUint(r,t),t+=4,a.ulCodePageRange2=n.readUint(r,t),t+=4},e[\"OS/2\"].version2=function(r,t,a){var n=e._bin;return t=e[\"OS/2\"].version1(r,t,a),a.sxHeight=n.readShort(r,t),t+=2,a.sCapHeight=n.readShort(r,t),t+=2,a.usDefault=n.readUshort(r,t),t+=2,a.usBreak=n.readUshort(r,t),t+=2,a.usMaxContext=n.readUshort(r,t),t+=2},e[\"OS/2\"].version5=function(r,t,a){var n=e._bin;return t=e[\"OS/2\"].version2(r,t,a),a.usLowerOpticalPointSize=n.readUshort(r,t),t+=2,a.usUpperOpticalPointSize=n.readUshort(r,t),t+=2},e.post={},e.post.parse=function(r,t,a){var n=e._bin,o={};return o.version=n.readFixed(r,t),t+=4,o.italicAngle=n.readFixed(r,t),t+=4,o.underlinePosition=n.readShort(r,t),t+=2,o.underlineThickness=n.readShort(r,t),t+=2,o},null==e&&(e={}),null==e.U&&(e.U={}),e.U.codeToGlyph=function(r,e){var t=r.cmap,a=-1;if(null!=t.p0e4?a=t.p0e4:null!=t.p3e1?a=t.p3e1:null!=t.p1e0?a=t.p1e0:null!=t.p0e3&&(a=t.p0e3),-1==a)throw \"no familiar platform and encoding!\";var n=t.tables[a];if(0==n.format)return e>=n.map.length?0:n.map[e];if(4==n.format){for(var o=-1,s=0;s<n.endCount.length;s++)if(e<=n.endCount[s]){o=s;break}if(-1==o)return 0;if(n.startCount[o]>e)return 0;return 65535&(0!=n.idRangeOffset[o]?n.glyphIdArray[e-n.startCount[o]+(n.idRangeOffset[o]>>1)-(n.idRangeOffset.length-o)]:e+n.idDelta[o])}if(12==n.format){if(e>n.groups[n.groups.length-1][1])return 0;for(s=0;s<n.groups.length;s++){var i=n.groups[s];if(i[0]<=e&&e<=i[1])return i[2]+(e-i[0])}return 0}throw \"unknown cmap table format \"+n.format},e.U.glyphToPath=function(r,t){var a={cmds:[],crds:[]};if(r.SVG&&r.SVG.entries[t]){var n=r.SVG.entries[t];return null==n?a:(\"string\"==typeof n&&(n=e.SVG.toPath(n),r.SVG.entries[t]=n),n)}if(r.CFF){var o={x:0,y:0,stack:[],nStems:0,haveWidth:!1,width:r.CFF.Private?r.CFF.Private.defaultWidthX:0,open:!1},s=r.CFF,i=r.CFF.Private;if(s.ROS){for(var h=0;s.FDSelect[h+2]<=t;)h+=2;i=s.FDArray[s.FDSelect[h+1]].Private;}e.U._drawCFF(r.CFF.CharStrings[t],o,s,i,a);}else r.glyf&&e.U._drawGlyf(t,r,a);return a},e.U._drawGlyf=function(r,t,a){var n=t.glyf[r];null==n&&(n=t.glyf[r]=e.glyf._parseGlyf(t,r)),null!=n&&(n.noc>-1?e.U._simpleGlyph(n,a):e.U._compoGlyph(n,t,a));},e.U._simpleGlyph=function(r,t){for(var a=0;a<r.noc;a++){for(var n=0==a?0:r.endPts[a-1]+1,o=r.endPts[a],s=n;s<=o;s++){var i=s==n?o:s-1,h=s==o?n:s+1,f=1&r.flags[s],d=1&r.flags[i],u=1&r.flags[h],l=r.xs[s],v=r.ys[s];if(s==n)if(f){if(!d){e.U.P.moveTo(t,l,v);continue}e.U.P.moveTo(t,r.xs[i],r.ys[i]);}else d?e.U.P.moveTo(t,r.xs[i],r.ys[i]):e.U.P.moveTo(t,(r.xs[i]+l)/2,(r.ys[i]+v)/2);f?d&&e.U.P.lineTo(t,l,v):u?e.U.P.qcurveTo(t,l,v,r.xs[h],r.ys[h]):e.U.P.qcurveTo(t,l,v,(l+r.xs[h])/2,(v+r.ys[h])/2);}e.U.P.closePath(t);}},e.U._compoGlyph=function(r,t,a){for(var n=0;n<r.parts.length;n++){var o={cmds:[],crds:[]},s=r.parts[n];e.U._drawGlyf(s.glyphIndex,t,o);for(var i=s.m,h=0;h<o.crds.length;h+=2){var f=o.crds[h],d=o.crds[h+1];a.crds.push(f*i.a+d*i.b+i.tx),a.crds.push(f*i.c+d*i.d+i.ty);}for(h=0;h<o.cmds.length;h++)a.cmds.push(o.cmds[h]);}},e.U._getGlyphClass=function(r,t){var a=e._lctf.getInterval(t,r);return -1==a?0:t[a+2]},e.U.getPairAdjustment=function(r,t,a){var n=!1;if(r.GPOS)for(var o=r.GPOS,s=o.lookupList,i=o.featureList,h=[],f=0;f<i.length;f++){var d=i[f];if(\"kern\"==d.tag){n=!0;for(var u=0;u<d.tab.length;u++)if(!h[d.tab[u]]){h[d.tab[u]]=!0;for(var l=s[d.tab[u]],v=0;v<l.tabs.length;v++)if(null!=l.tabs[v]){var c,p=l.tabs[v];if(!p.coverage||-1!=(c=e._lctf.coverageIndex(p.coverage,t)))if(1==l.ltype);else if(2==l.ltype){var U=null;if(1==p.fmt){var g=p.pairsets[c];for(f=0;f<g.length;f++)g[f].gid2==a&&(U=g[f]);}else if(2==p.fmt){var S=e.U._getGlyphClass(t,p.classDef1),m=e.U._getGlyphClass(a,p.classDef2);U=p.matrix[S][m];}if(U){var b=0;return U.val1&&U.val1[2]&&(b+=U.val1[2]),U.val2&&U.val2[0]&&(b+=U.val2[0]),b}}}}}}if(r.kern&&!n){var y=r.kern.glyph1.indexOf(t);if(-1!=y){var F=r.kern.rval[y].glyph2.indexOf(a);if(-1!=F)return r.kern.rval[y].vals[F]}}return 0},e.U._applySubs=function(r,t,a,n){for(var o=r.length-t-1,s=0;s<a.tabs.length;s++)if(null!=a.tabs[s]){var i,h=a.tabs[s];if(!h.coverage||-1!=(i=e._lctf.coverageIndex(h.coverage,r[t])))if(1==a.ltype)r[t],1==h.fmt?r[t]=r[t]+h.delta:r[t]=h.newg[i];else if(4==a.ltype)for(var f=h.vals[i],d=0;d<f.length;d++){var u=f[d],l=u.chain.length;if(!(l>o)){for(var v=!0,c=0,p=0;p<l;p++){for(;-1==r[t+c+(1+p)];)c++;u.chain[p]!=r[t+c+(1+p)]&&(v=!1);}if(v){r[t]=u.nglyph;for(p=0;p<l+c;p++)r[t+p+1]=-1;break}}}else if(5==a.ltype&&2==h.fmt)for(var U=e._lctf.getInterval(h.cDef,r[t]),g=h.cDef[U+2],S=h.scset[g],m=0;m<S.length;m++){var b=S[m],y=b.input;if(!(y.length>o)){for(v=!0,p=0;p<y.length;p++){var F=e._lctf.getInterval(h.cDef,r[t+1+p]);if(-1==U&&h.cDef[F+2]!=y[p]){v=!1;break}}if(v){var _=b.substLookupRecords;for(d=0;d<_.length;d+=2)_[d],_[d+1];}}}else if(6==a.ltype&&3==h.fmt){if(!e.U._glsCovered(r,h.backCvg,t-h.backCvg.length))continue;if(!e.U._glsCovered(r,h.inptCvg,t))continue;if(!e.U._glsCovered(r,h.ahedCvg,t+h.inptCvg.length))continue;var C=h.lookupRec;for(m=0;m<C.length;m+=2){U=C[m];var x=n[C[m+1]];e.U._applySubs(r,t+U,x,n);}}}},e.U._glsCovered=function(r,t,a){for(var n=0;n<t.length;n++){if(-1==e._lctf.coverageIndex(t[n],r[a+n]))return !1}return !0},e.U.glyphsToPath=function(r,t,a){for(var n={cmds:[],crds:[]},o=0,s=0;s<t.length;s++){var i=t[s];if(-1!=i){for(var h=s<t.length-1&&-1!=t[s+1]?t[s+1]:0,f=e.U.glyphToPath(r,i),d=0;d<f.crds.length;d+=2)n.crds.push(f.crds[d]+o),n.crds.push(f.crds[d+1]);a&&n.cmds.push(a);for(d=0;d<f.cmds.length;d++)n.cmds.push(f.cmds[d]);a&&n.cmds.push(\"X\"),o+=r.hmtx.aWidth[i],s<t.length-1&&(o+=e.U.getPairAdjustment(r,i,h));}}return n},e.U.P={},e.U.P.moveTo=function(r,e,t){r.cmds.push(\"M\"),r.crds.push(e,t);},e.U.P.lineTo=function(r,e,t){r.cmds.push(\"L\"),r.crds.push(e,t);},e.U.P.curveTo=function(r,e,t,a,n,o,s){r.cmds.push(\"C\"),r.crds.push(e,t,a,n,o,s);},e.U.P.qcurveTo=function(r,e,t,a,n){r.cmds.push(\"Q\"),r.crds.push(e,t,a,n);},e.U.P.closePath=function(r){r.cmds.push(\"Z\");},e.U._drawCFF=function(r,t,a,n,o){for(var s=t.stack,i=t.nStems,h=t.haveWidth,f=t.width,d=t.open,u=0,l=t.x,v=t.y,c=0,p=0,U=0,g=0,S=0,m=0,b=0,y=0,F=0,_=0,C={val:0,size:0};u<r.length;){e.CFF.getCharString(r,u,C);var x=C.val;if(u+=C.size,\"o1\"==x||\"o18\"==x)s.length%2!=0&&!h&&(f=s.shift()+n.nominalWidthX),i+=s.length>>1,s.length=0,h=!0;else if(\"o3\"==x||\"o23\"==x){s.length%2!=0&&!h&&(f=s.shift()+n.nominalWidthX),i+=s.length>>1,s.length=0,h=!0;}else if(\"o4\"==x)s.length>1&&!h&&(f=s.shift()+n.nominalWidthX,h=!0),d&&e.U.P.closePath(o),v+=s.pop(),e.U.P.moveTo(o,l,v),d=!0;else if(\"o5\"==x)for(;s.length>0;)l+=s.shift(),v+=s.shift(),e.U.P.lineTo(o,l,v);else if(\"o6\"==x||\"o7\"==x)for(var P=s.length,I=\"o6\"==x,w=0;w<P;w++){var O=s.shift();I?l+=O:v+=O,I=!I,e.U.P.lineTo(o,l,v);}else if(\"o8\"==x||\"o24\"==x){P=s.length;for(var T=0;T+6<=P;)c=l+s.shift(),p=v+s.shift(),U=c+s.shift(),g=p+s.shift(),l=U+s.shift(),v=g+s.shift(),e.U.P.curveTo(o,c,p,U,g,l,v),T+=6;\"o24\"==x&&(l+=s.shift(),v+=s.shift(),e.U.P.lineTo(o,l,v));}else {if(\"o11\"==x)break;if(\"o1234\"==x||\"o1235\"==x||\"o1236\"==x||\"o1237\"==x)\"o1234\"==x&&(p=v,U=(c=l+s.shift())+s.shift(),_=g=p+s.shift(),m=g,y=v,l=(b=(S=(F=U+s.shift())+s.shift())+s.shift())+s.shift(),e.U.P.curveTo(o,c,p,U,g,F,_),e.U.P.curveTo(o,S,m,b,y,l,v)),\"o1235\"==x&&(c=l+s.shift(),p=v+s.shift(),U=c+s.shift(),g=p+s.shift(),F=U+s.shift(),_=g+s.shift(),S=F+s.shift(),m=_+s.shift(),b=S+s.shift(),y=m+s.shift(),l=b+s.shift(),v=y+s.shift(),s.shift(),e.U.P.curveTo(o,c,p,U,g,F,_),e.U.P.curveTo(o,S,m,b,y,l,v)),\"o1236\"==x&&(c=l+s.shift(),p=v+s.shift(),U=c+s.shift(),_=g=p+s.shift(),m=g,b=(S=(F=U+s.shift())+s.shift())+s.shift(),y=m+s.shift(),l=b+s.shift(),e.U.P.curveTo(o,c,p,U,g,F,_),e.U.P.curveTo(o,S,m,b,y,l,v)),\"o1237\"==x&&(c=l+s.shift(),p=v+s.shift(),U=c+s.shift(),g=p+s.shift(),F=U+s.shift(),_=g+s.shift(),S=F+s.shift(),m=_+s.shift(),b=S+s.shift(),y=m+s.shift(),Math.abs(b-l)>Math.abs(y-v)?l=b+s.shift():v=y+s.shift(),e.U.P.curveTo(o,c,p,U,g,F,_),e.U.P.curveTo(o,S,m,b,y,l,v));else if(\"o14\"==x){if(s.length>0&&!h&&(f=s.shift()+a.nominalWidthX,h=!0),4==s.length){var k=s.shift(),G=s.shift(),D=s.shift(),B=s.shift(),L=e.CFF.glyphBySE(a,D),R=e.CFF.glyphBySE(a,B);e.U._drawCFF(a.CharStrings[L],t,a,n,o),t.x=k,t.y=G,e.U._drawCFF(a.CharStrings[R],t,a,n,o);}d&&(e.U.P.closePath(o),d=!1);}else if(\"o19\"==x||\"o20\"==x){s.length%2!=0&&!h&&(f=s.shift()+n.nominalWidthX),i+=s.length>>1,s.length=0,h=!0,u+=i+7>>3;}else if(\"o21\"==x)s.length>2&&!h&&(f=s.shift()+n.nominalWidthX,h=!0),v+=s.pop(),l+=s.pop(),d&&e.U.P.closePath(o),e.U.P.moveTo(o,l,v),d=!0;else if(\"o22\"==x)s.length>1&&!h&&(f=s.shift()+n.nominalWidthX,h=!0),l+=s.pop(),d&&e.U.P.closePath(o),e.U.P.moveTo(o,l,v),d=!0;else if(\"o25\"==x){for(;s.length>6;)l+=s.shift(),v+=s.shift(),e.U.P.lineTo(o,l,v);c=l+s.shift(),p=v+s.shift(),U=c+s.shift(),g=p+s.shift(),l=U+s.shift(),v=g+s.shift(),e.U.P.curveTo(o,c,p,U,g,l,v);}else if(\"o26\"==x)for(s.length%2&&(l+=s.shift());s.length>0;)c=l,p=v+s.shift(),l=U=c+s.shift(),v=(g=p+s.shift())+s.shift(),e.U.P.curveTo(o,c,p,U,g,l,v);else if(\"o27\"==x)for(s.length%2&&(v+=s.shift());s.length>0;)p=v,U=(c=l+s.shift())+s.shift(),g=p+s.shift(),l=U+s.shift(),v=g,e.U.P.curveTo(o,c,p,U,g,l,v);else if(\"o10\"==x||\"o29\"==x){var A=\"o10\"==x?n:a;if(0==s.length)console.debug(\"error: empty stack\");else {var W=s.pop(),M=A.Subrs[W+A.Bias];t.x=l,t.y=v,t.nStems=i,t.haveWidth=h,t.width=f,t.open=d,e.U._drawCFF(M,t,a,n,o),l=t.x,v=t.y,i=t.nStems,h=t.haveWidth,f=t.width,d=t.open;}}else if(\"o30\"==x||\"o31\"==x){var V=s.length,N=(T=0,\"o31\"==x);for(T+=V-(P=-3&V);T<P;)N?(p=v,U=(c=l+s.shift())+s.shift(),v=(g=p+s.shift())+s.shift(),P-T==5?(l=U+s.shift(),T++):l=U,N=!1):(c=l,p=v+s.shift(),U=c+s.shift(),g=p+s.shift(),l=U+s.shift(),P-T==5?(v=g+s.shift(),T++):v=g,N=!0),e.U.P.curveTo(o,c,p,U,g,l,v),T+=4;}else {if(\"o\"==(x+\"\").charAt(0))throw console.debug(\"Unknown operation: \"+x,r),x;s.push(x);}}}t.x=l,t.y=v,t.nStems=i,t.haveWidth=h,t.width=f,t.open=d;};var t=e,a={Typr:t};return r.Typr=t,r.default=a,Object.defineProperty(r,\"__esModule\",{value:!0}),r}({}).Typr}\n\n/*!\nCustom bundle of woff2otf (https://github.com/arty-name/woff2otf) with fflate\n(https://github.com/101arrowz/fflate) for use in Troika text rendering. \nOriginal licenses apply: \n- fflate: https://github.com/101arrowz/fflate/blob/master/LICENSE (MIT)\n- woff2otf.js: https://github.com/arty-name/woff2otf/blob/master/woff2otf.js (Apache2)\n*/\nfunction woff2otfFactory(){return function(r){var e=Uint8Array,n=Uint16Array,t=Uint32Array,a=new e([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new e([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),o=new e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=function(r,e){for(var a=new n(31),i=0;i<31;++i)a[i]=e+=1<<r[i-1];var o=new t(a[30]);for(i=1;i<30;++i)for(var f=a[i];f<a[i+1];++f)o[f]=f-a[i]<<5|i;return [a,o]},u=f(a,2),v=u[0],s=u[1];v[28]=258,s[258]=28;for(var l=f(i,0)[0],c=new n(32768),g=0;g<32768;++g){var h=(43690&g)>>>1|(21845&g)<<1;h=(61680&(h=(52428&h)>>>2|(13107&h)<<2))>>>4|(3855&h)<<4,c[g]=((65280&h)>>>8|(255&h)<<8)>>>1;}var w=function(r,e,t){for(var a=r.length,i=0,o=new n(e);i<a;++i)++o[r[i]-1];var f,u=new n(e);for(i=0;i<e;++i)u[i]=u[i-1]+o[i-1]<<1;if(t){f=new n(1<<e);var v=15-e;for(i=0;i<a;++i)if(r[i])for(var s=i<<4|r[i],l=e-r[i],g=u[r[i]-1]++<<l,h=g|(1<<l)-1;g<=h;++g)f[c[g]>>>v]=s;}else for(f=new n(a),i=0;i<a;++i)r[i]&&(f[i]=c[u[r[i]-1]++]>>>15-r[i]);return f},d=new e(288);for(g=0;g<144;++g)d[g]=8;for(g=144;g<256;++g)d[g]=9;for(g=256;g<280;++g)d[g]=7;for(g=280;g<288;++g)d[g]=8;var m=new e(32);for(g=0;g<32;++g)m[g]=5;var b=w(d,9,1),p=w(m,5,1),y=function(r){for(var e=r[0],n=1;n<r.length;++n)r[n]>e&&(e=r[n]);return e},L=function(r,e,n){var t=e/8|0;return (r[t]|r[t+1]<<8)>>(7&e)&n},U=function(r,e){var n=e/8|0;return (r[n]|r[n+1]<<8|r[n+2]<<16)>>(7&e)},k=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],T=function(r,e,n){var t=new Error(e||k[r]);if(t.code=r,Error.captureStackTrace&&Error.captureStackTrace(t,T),!n)throw t;return t},O=function(r,f,u){var s=r.length;if(!s||u&&!u.l&&s<5)return f||new e(0);var c=!f||u,g=!u||u.i;u||(u={}),f||(f=new e(3*s));var h,d=function(r){var n=f.length;if(r>n){var t=new e(Math.max(2*n,r));t.set(f),f=t;}},m=u.f||0,k=u.p||0,O=u.b||0,A=u.l,x=u.d,E=u.m,D=u.n,M=8*s;do{if(!A){u.f=m=L(r,k,1);var S=L(r,k+1,3);if(k+=3,!S){var V=r[(I=((h=k)/8|0)+(7&h&&1)+4)-4]|r[I-3]<<8,_=I+V;if(_>s){g&&T(0);break}c&&d(O+V),f.set(r.subarray(I,_),O),u.b=O+=V,u.p=k=8*_;continue}if(1==S)A=b,x=p,E=9,D=5;else if(2==S){var j=L(r,k,31)+257,z=L(r,k+10,15)+4,C=j+L(r,k+5,31)+1;k+=14;for(var F=new e(C),P=new e(19),q=0;q<z;++q)P[o[q]]=L(r,k+3*q,7);k+=3*z;var B=y(P),G=(1<<B)-1,H=w(P,B,1);for(q=0;q<C;){var I,J=H[L(r,k,G)];if(k+=15&J,(I=J>>>4)<16)F[q++]=I;else {var K=0,N=0;for(16==I?(N=3+L(r,k,3),k+=2,K=F[q-1]):17==I?(N=3+L(r,k,7),k+=3):18==I&&(N=11+L(r,k,127),k+=7);N--;)F[q++]=K;}}var Q=F.subarray(0,j),R=F.subarray(j);E=y(Q),D=y(R),A=w(Q,E,1),x=w(R,D,1);}else T(1);if(k>M){g&&T(0);break}}c&&d(O+131072);for(var W=(1<<E)-1,X=(1<<D)-1,Y=k;;Y=k){var Z=(K=A[U(r,k)&W])>>>4;if((k+=15&K)>M){g&&T(0);break}if(K||T(2),Z<256)f[O++]=Z;else {if(256==Z){Y=k,A=null;break}var $=Z-254;if(Z>264){var rr=a[q=Z-257];$=L(r,k,(1<<rr)-1)+v[q],k+=rr;}var er=x[U(r,k)&X],nr=er>>>4;er||T(3),k+=15&er;R=l[nr];if(nr>3){rr=i[nr];R+=U(r,k)&(1<<rr)-1,k+=rr;}if(k>M){g&&T(0);break}c&&d(O+131072);for(var tr=O+$;O<tr;O+=4)f[O]=f[O-R],f[O+1]=f[O+1-R],f[O+2]=f[O+2-R],f[O+3]=f[O+3-R];O=tr;}}u.l=A,u.p=Y,u.b=O,A&&(m=1,u.m=E,u.d=x,u.n=D);}while(!m);return O==f.length?f:function(r,a,i){(null==a||a<0)&&(a=0),(null==i||i>r.length)&&(i=r.length);var o=new(r instanceof n?n:r instanceof t?t:e)(i-a);return o.set(r.subarray(a,i)),o}(f,0,O)},A=new e(0);var x=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{x.decode(A,{stream:!0}),1;}catch(r){}return r.convert_streams=function(r){var e=new DataView(r),n=0;function t(){var r=e.getUint16(n);return n+=2,r}function a(){var r=e.getUint32(n);return n+=4,r}function i(r){m.setUint16(b,r),b+=2;}function o(r){m.setUint32(b,r),b+=4;}for(var f={signature:a(),flavor:a(),length:a(),numTables:t(),reserved:t(),totalSfntSize:a(),majorVersion:t(),minorVersion:t(),metaOffset:a(),metaLength:a(),metaOrigLength:a(),privOffset:a(),privLength:a()},u=0;Math.pow(2,u)<=f.numTables;)u++;u--;for(var v=16*Math.pow(2,u),s=16*f.numTables-v,l=12,c=[],g=0;g<f.numTables;g++)c.push({tag:a(),offset:a(),compLength:a(),origLength:a(),origChecksum:a()}),l+=16;var h,w=new Uint8Array(12+16*c.length+c.reduce((function(r,e){return r+e.origLength+4}),0)),d=w.buffer,m=new DataView(d),b=0;return o(f.flavor),i(f.numTables),i(v),i(u),i(s),c.forEach((function(r){o(r.tag),o(r.origChecksum),o(l),o(r.origLength),r.outOffset=l,(l+=r.origLength)%4!=0&&(l+=4-l%4);})),c.forEach((function(e){var n,t=r.slice(e.offset,e.offset+e.compLength);if(e.compLength!=e.origLength){var a=new Uint8Array(e.origLength);n=new Uint8Array(t,2),O(n,a);}else a=new Uint8Array(t);w.set(a,e.outOffset);var i=0;(l=e.outOffset+e.origLength)%4!=0&&(i=4-l%4),w.set(new Uint8Array(i).buffer,e.outOffset+e.origLength),h=l+i;})),d.slice(0,h)},Object.defineProperty(r,\"__esModule\",{value:!0}),r}({}).convert_streams}\n\n/**\n * A factory wrapper parsing a font file using Typr.\n * Also adds support for WOFF files (not WOFF2).\n */\n\nfunction parserFactory(Typr, woff2otf) {\n  const cmdArgLengths = {\n    M: 2,\n    L: 2,\n    Q: 4,\n    C: 6,\n    Z: 0\n  };\n\n  // {joinType: \"skip+step,...\"}\n  const joiningTypeRawData = {\"C\":\"18g,ca,368,1kz\",\"D\":\"17k,6,2,2+4,5+c,2+6,2+1,10+1,9+f,j+11,2+1,a,2,2+1,15+2,3,j+2,6+3,2+8,2,2,2+1,w+a,4+e,3+3,2,3+2,3+5,23+w,2f+4,3,2+9,2,b,2+3,3,1k+9,6+1,3+1,2+2,2+d,30g,p+y,1,1+1g,f+x,2,sd2+1d,jf3+4,f+3,2+4,2+2,b+3,42,2,4+2,2+1,2,3,t+1,9f+w,2,el+2,2+g,d+2,2l,2+1,5,3+1,2+1,2,3,6,16wm+1v\",\"R\":\"17m+3,2,2,6+3,m,15+2,2+2,h+h,13,3+8,2,2,3+1,2,p+1,x,5+4,5,a,2,2,3,u,c+2,g+1,5,2+1,4+1,5j,6+1,2,b,2+2,f,2+1,1s+2,2,3+1,7,1ez0,2,2+1,4+4,b,4,3,b,42,2+2,4,3,2+1,2,o+3,ae,ep,x,2o+2,3+1,3,5+1,6\",\"L\":\"x9u,jff,a,fd,jv\",\"T\":\"4t,gj+33,7o+4,1+1,7c+18,2,2+1,2+1,2,21+a,2,1b+k,h,2u+6,3+5,3+1,2+3,y,2,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,3,7,6+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+d,1,1+1,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,ek,3+1,r+4,1e+4,6+5,2p+c,1+3,1,1+2,1+b,2db+2,3y,2p+v,ff+3,30+1,n9x,1+2,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,5s,6y+2,ea,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+9,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2,2b+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,470+8,at4+4,1o+6,t5,1s+3,2a,f5l+1,2+3,43o+2,a+7,1+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,1,gzau,v+2n,3l+6n\"};\n\n  const JT_LEFT = 1, //indicates that a character joins with the subsequent character, but does not join with the preceding character.\n    JT_RIGHT = 2, //indicates that a character joins with the preceding character, but does not join with the subsequent character.\n    JT_DUAL = 4, //indicates that a character joins with the preceding character and joins with the subsequent character.\n    JT_TRANSPARENT = 8, //indicates that the character does not join with adjacent characters and that the character must be skipped over when the shaping engine is evaluating the joining positions in a sequence of characters. When a JT_TRANSPARENT character is encountered in a sequence, the JOINING_TYPE of the preceding character passes through. Diacritical marks are frequently assigned this value.\n    JT_JOIN_CAUSING = 16, //indicates that the character forces the use of joining forms with the preceding and subsequent characters. Kashidas and the Zero Width Joiner (U+200D) are both JOIN_CAUSING characters.\n    JT_NON_JOINING = 32; //indicates that a character does not join with the preceding or with the subsequent character.,\n\n  let joiningTypeMap;\n  function getCharJoiningType(ch) {\n    if (!joiningTypeMap) {\n      const m = {\n        R: JT_RIGHT,\n        L: JT_LEFT,\n        D: JT_DUAL,\n        C: JT_JOIN_CAUSING,\n        U: JT_NON_JOINING,\n        T: JT_TRANSPARENT\n      };\n      joiningTypeMap = new Map();\n      for (let type in joiningTypeRawData) {\n        let lastCode = 0;\n        joiningTypeRawData[type].split(',').forEach(range => {\n          let [skip, step] = range.split('+');\n          skip = parseInt(skip,36);\n          step = step ? parseInt(step, 36) : 0;\n          joiningTypeMap.set(lastCode += skip, m[type]);\n          for (let i = step; i--;) {\n            joiningTypeMap.set(++lastCode, m[type]);\n          }\n        });\n      }\n    }\n    return joiningTypeMap.get(ch) || JT_NON_JOINING\n  }\n\n  const ISOL = 1, INIT = 2, FINA = 3, MEDI = 4;\n  const formsToFeatures = [null, 'isol', 'init', 'fina', 'medi'];\n\n  function detectJoiningForms(str) {\n    // This implements the algorithm described here:\n    // https://github.com/n8willis/opentype-shaping-documents/blob/master/opentype-shaping-arabic-general.md\n    const joiningForms = new Uint8Array(str.length);\n    let prevJoiningType = JT_NON_JOINING;\n    let prevForm = ISOL;\n    let prevIndex = -1;\n    for (let i = 0; i < str.length; i++) {\n      const code = str.codePointAt(i);\n      let joiningType = getCharJoiningType(code) | 0;\n      let form = ISOL;\n      if (joiningType & JT_TRANSPARENT) {\n        continue\n      }\n      if (prevJoiningType & (JT_LEFT | JT_DUAL | JT_JOIN_CAUSING)) {\n        if (joiningType & (JT_RIGHT | JT_DUAL | JT_JOIN_CAUSING)) {\n          form = FINA;\n          // isol->init, fina->medi\n          if (prevForm === ISOL || prevForm === FINA) {\n            joiningForms[prevIndex]++;\n          }\n        }\n        else if (joiningType & (JT_LEFT | JT_NON_JOINING)) {\n          // medi->fina, init->isol\n          if (prevForm === INIT || prevForm === MEDI) {\n            joiningForms[prevIndex]--;\n          }\n        }\n      }\n      else if (prevJoiningType & (JT_RIGHT | JT_NON_JOINING)) {\n        // medi->fina, init->isol\n        if (prevForm === INIT || prevForm === MEDI) {\n          joiningForms[prevIndex]--;\n        }\n      }\n      prevForm = joiningForms[i] = form;\n      prevJoiningType = joiningType;\n      prevIndex = i;\n      if (code > 0xffff) i++;\n    }\n    // console.log(str.split('').map(ch => ch.codePointAt(0).toString(16)))\n    // console.log(str.split('').map(ch => getCharJoiningType(ch.codePointAt(0))))\n    // console.log(Array.from(joiningForms).map(f => formsToFeatures[f] || 'none'))\n    return joiningForms\n  }\n\n  function stringToGlyphs (font, str) {\n    const glyphIds = [];\n    for (let i = 0; i < str.length; i++) {\n      const cc = str.codePointAt(i);\n      if (cc > 0xffff) i++;\n      glyphIds.push(Typr.U.codeToGlyph(font, cc));\n    }\n\n    const gsub = font['GSUB'];\n    if (gsub) {\n      const {lookupList, featureList} = gsub;\n      let joiningForms;\n      const supportedFeatures = /^(rlig|liga|mset|isol|init|fina|medi|half|pres|blws)$/;\n      const usedLookups = [];\n      featureList.forEach(feature => {\n        if (supportedFeatures.test(feature.tag)) {\n          for (let ti = 0; ti < feature.tab.length; ti++) {\n            if (usedLookups[feature.tab[ti]]) continue\n            usedLookups[feature.tab[ti]] = true;\n            const tab = lookupList[feature.tab[ti]];\n            const isJoiningFeature = /^(isol|init|fina|medi)$/.test(feature.tag);\n            if (isJoiningFeature && !joiningForms) { //lazy\n              joiningForms = detectJoiningForms(str);\n            }\n            for (let ci = 0; ci < glyphIds.length; ci++) {\n              if (!joiningForms || !isJoiningFeature || formsToFeatures[joiningForms[ci]] === feature.tag) {\n                Typr.U._applySubs(glyphIds, ci, tab, lookupList);\n              }\n            }\n          }\n        }\n      });\n    }\n\n    return glyphIds\n  }\n\n  function firstNum(...args) {\n    for (let i = 0; i < args.length; i++) {\n      if (typeof args[i] === 'number') {\n        return args[i]\n      }\n    }\n  }\n\n  function wrapFontObj(typrFont) {\n    const glyphMap = Object.create(null);\n\n    const os2 = typrFont['OS/2'];\n    const hhea = typrFont.hhea;\n    const unitsPerEm = typrFont.head.unitsPerEm;\n    const ascender = firstNum(os2 && os2.sTypoAscender, hhea && hhea.ascender, unitsPerEm);\n\n    const fontObj = {\n      unitsPerEm,\n      ascender,\n      descender: firstNum(os2 && os2.sTypoDescender, hhea && hhea.descender, 0),\n      capHeight: firstNum(os2 && os2.sCapHeight, ascender),\n      xHeight: firstNum(os2 && os2.sxHeight, ascender),\n      lineGap: firstNum(os2 && os2.sTypoLineGap, hhea && hhea.lineGap),\n      forEachGlyph(text, fontSize, letterSpacing, callback) {\n        let glyphX = 0;\n        const fontScale = 1 / fontObj.unitsPerEm * fontSize;\n\n        const glyphIndices = stringToGlyphs(typrFont, text);\n        let charIndex = 0;\n        let prevGlyphIndex = -1;\n        glyphIndices.forEach((glyphIndex, i) => {\n          // Typr returns a glyph index per string codepoint, with -1s in place of those that\n          // were omitted due to ligature substitution. So we can track original index in the\n          // string via simple increment, and skip everything else when seeing a -1.\n          if (glyphIndex !== -1) {\n            let glyphObj = glyphMap[glyphIndex];\n            if (!glyphObj) {\n              const {cmds, crds} = Typr.U.glyphToPath(typrFont, glyphIndex);\n\n              // Build path string\n              let path = '';\n              let crdsIdx = 0;\n              for (let i = 0, len = cmds.length; i < len; i++) {\n                const numArgs = cmdArgLengths[cmds[i]];\n                path += cmds[i];\n                for (let j = 1; j <= numArgs; j++) {\n                  path += (j > 1 ? ',' : '') + crds[crdsIdx++];\n                }\n              }\n\n              // Find extents - Glyf gives this in metadata but not CFF, and Typr doesn't\n              // normalize the two, so it's simplest just to iterate ourselves.\n              let xMin, yMin, xMax, yMax;\n              if (crds.length) {\n                xMin = yMin = Infinity;\n                xMax = yMax = -Infinity;\n                for (let i = 0, len = crds.length; i < len; i += 2) {\n                  let x = crds[i];\n                  let y = crds[i + 1];\n                  if (x < xMin) xMin = x;\n                  if (y < yMin) yMin = y;\n                  if (x > xMax) xMax = x;\n                  if (y > yMax) yMax = y;\n                }\n              } else {\n                xMin = xMax = yMin = yMax = 0;\n              }\n\n              glyphObj = glyphMap[glyphIndex] = {\n                index: glyphIndex,\n                advanceWidth: typrFont.hmtx.aWidth[glyphIndex],\n                xMin,\n                yMin,\n                xMax,\n                yMax,\n                path,\n                pathCommandCount: cmds.length,\n                // forEachPathCommand(callback) {\n                //   let argsIndex = 0\n                //   const argsArray = []\n                //   for (let i = 0, len = cmds.length; i < len; i++) {\n                //     const numArgs = cmdArgLengths[cmds[i]]\n                //     argsArray.length = 1 + numArgs\n                //     argsArray[0] = cmds[i]\n                //     for (let j = 1; j <= numArgs; j++) {\n                //       argsArray[j] = crds[argsIndex++]\n                //     }\n                //     callback.apply(null, argsArray)\n                //   }\n                // }\n              };\n            }\n\n            // Kerning\n            if (prevGlyphIndex !== -1) {\n              glyphX += Typr.U.getPairAdjustment(typrFont, prevGlyphIndex, glyphIndex) * fontScale;\n            }\n\n            callback.call(null, glyphObj, glyphX, charIndex);\n\n            if (glyphObj.advanceWidth) {\n              glyphX += glyphObj.advanceWidth * fontScale;\n            }\n            if (letterSpacing) {\n              glyphX += letterSpacing * fontSize;\n            }\n\n            prevGlyphIndex = glyphIndex;\n          }\n          charIndex += (text.codePointAt(charIndex) > 0xffff ? 2 : 1);\n        });\n        return glyphX\n      }\n    };\n\n    return fontObj\n  }\n\n  return function parse(buffer) {\n    // Look to see if we have a WOFF file and convert it if so:\n    const peek = new Uint8Array(buffer, 0, 4);\n    const tag = Typr._bin.readASCII(peek, 0, 4);\n    if (tag === 'wOFF') {\n      buffer = woff2otf(buffer);\n    } else if (tag === 'wOF2') {\n      throw new Error('woff2 fonts not supported')\n    }\n    return wrapFontObj(Typr.parse(buffer)[0])\n  }\n}\n\n\nconst workerModule = /*#__PURE__*/defineWorkerModule({\n  name: 'Typr Font Parser',\n  dependencies: [typrFactory, woff2otfFactory, parserFactory],\n  init(typrFactory, woff2otfFactory, parserFactory) {\n    const Typr = typrFactory();\n    const woff2otf = woff2otfFactory();\n    return parserFactory(Typr, woff2otf)\n  }\n});\n\nconst CONFIG = {\n  defaultFontURL: 'https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxM.woff', //Roboto Regular\n  sdfGlyphSize: 64,\n  sdfMargin: 1 / 16,\n  sdfExponent: 9,\n  textureWidth: 2048\n};\nconst tempColor = /*#__PURE__*/new Color();\nlet hasRequested = false;\n\nfunction now$1() {\n  return (self.performance || Date).now()\n}\n\n/**\n * Customizes the text builder configuration. This must be called prior to the first font processing\n * request, and applies to all fonts.\n *\n * @param {String} config.defaultFontURL - The URL of the default font to use for text processing\n *                 requests, in case none is specified or the specifiede font fails to load or parse.\n *                 Defaults to \"Roboto Regular\" from Google Fonts.\n * @param {Number} config.sdfGlyphSize - The default size of each glyph's SDF (signed distance field)\n *                 texture used for rendering. Must be a power-of-two number, and applies to all fonts,\n *                 but note that this can also be overridden per call to `getTextRenderInfo()`.\n *                 Larger sizes can improve the quality of glyph rendering by increasing the sharpness\n *                 of corners and preventing loss of very thin lines, at the expense of memory. Defaults\n *                 to 64 which is generally a good balance of size and quality.\n * @param {Number} config.sdfExponent - The exponent used when encoding the SDF values. A higher exponent\n *                 shifts the encoded 8-bit values to achieve higher precision/accuracy at texels nearer\n *                 the glyph's path, with lower precision further away. Defaults to 9.\n * @param {Number} config.sdfMargin - How much space to reserve in the SDF as margin outside the glyph's\n *                 path, as a percentage of the SDF width. A larger margin increases the quality of\n *                 extruded glyph outlines, but decreases the precision available for the glyph itself.\n *                 Defaults to 1/16th of the glyph size.\n * @param {Number} config.textureWidth - The width of the SDF texture; must be a power of 2. Defaults to\n *                 2048 which is a safe maximum texture dimension according to the stats at\n *                 https://webglstats.com/webgl/parameter/MAX_TEXTURE_SIZE and should allow for a\n *                 reasonably large number of glyphs (default glyph size of 64^2 and safe texture size of\n *                 2048^2, times 4 channels, allows for 4096 glyphs.) This can be increased if you need to\n *                 increase the glyph size and/or have an extraordinary number of glyphs.\n */\nfunction configureTextBuilder(config) {\n  if (hasRequested) {\n    console.warn('configureTextBuilder called after first font request; will be ignored.');\n  } else {\n    assign(CONFIG, config);\n  }\n}\n\n/**\n * Repository for all font SDF atlas textures and their glyph mappings. There is a separate atlas for\n * each sdfGlyphSize. Each atlas has a single Texture that holds all glyphs for all fonts.\n *\n *   {\n *     [sdfGlyphSize]: {\n *       glyphCount: number,\n *       sdfGlyphSize: number,\n *       sdfTexture: Texture,\n *       sdfCanvas: HTMLCanvasElement,\n *       contextLost: boolean,\n *       glyphsByFont: Map<fontURL, Map<glyphID, {path, atlasIndex, sdfViewBox}>>\n *     }\n *   }\n */\nconst atlases = Object.create(null);\n\n/**\n * @typedef {object} TroikaTextRenderInfo - Format of the result from `getTextRenderInfo`.\n * @property {object} parameters - The normalized input arguments to the render call.\n * @property {Texture} sdfTexture - The SDF atlas texture.\n * @property {number} sdfGlyphSize - The size of each glyph's SDF; see `configureTextBuilder`.\n * @property {number} sdfExponent - The exponent used in encoding the SDF's values; see `configureTextBuilder`.\n * @property {Float32Array} glyphBounds - List of [minX, minY, maxX, maxY] quad bounds for each glyph.\n * @property {Float32Array} glyphAtlasIndices - List holding each glyph's index in the SDF atlas.\n * @property {Uint8Array} [glyphColors] - List holding each glyph's [r, g, b] color, if `colorRanges` was supplied.\n * @property {Float32Array} [caretPositions] - A list of caret positions for all characters in the string; each is\n *           three elements: the starting X, the ending X, and the bottom Y for the caret.\n * @property {number} [caretHeight] - An appropriate height for all selection carets.\n * @property {number} ascender - The font's ascender metric.\n * @property {number} descender - The font's descender metric.\n * @property {number} capHeight - The font's cap height metric, based on the height of Latin capital letters.\n * @property {number} xHeight - The font's x height metric, based on the height of Latin lowercase letters.\n * @property {number} lineHeight - The final computed lineHeight measurement.\n * @property {number} topBaseline - The y position of the top line's baseline.\n * @property {Array<number>} blockBounds - The total [minX, minY, maxX, maxY] rect of the whole text block;\n *           this can include extra vertical space beyond the visible glyphs due to lineHeight, and is\n *           equivalent to the dimensions of a block-level text element in CSS.\n * @property {Array<number>} visibleBounds - The total [minX, minY, maxX, maxY] rect of the whole text block;\n *           unlike `blockBounds` this is tightly wrapped to the visible glyph paths.\n * @property {Array<object>} chunkedBounds - List of bounding rects for each consecutive set of N glyphs,\n *           in the format `{start:N, end:N, rect:[minX, minY, maxX, maxY]}`.\n * @property {object} timings - Timing info for various parts of the rendering logic including SDF\n *           generation, typesetting, etc.\n * @frozen\n */\n\n/**\n * @callback getTextRenderInfo~callback\n * @param {TroikaTextRenderInfo} textRenderInfo\n */\n\n/**\n * Main entry point for requesting the data needed to render a text string with given font parameters.\n * This is an asynchronous call, performing most of the logic in a web worker thread.\n * @param {object} args\n * @param {getTextRenderInfo~callback} callback\n */\nfunction getTextRenderInfo(args, callback) {\n  hasRequested = true;\n  args = assign({}, args);\n  const totalStart = now$1();\n\n  // Apply default font here to avoid a 'null' atlas, and convert relative\n  // URLs to absolute so they can be resolved in the worker\n  args.font = toAbsoluteURL(args.font || CONFIG.defaultFontURL);\n\n  // Normalize text to a string\n  args.text = '' + args.text;\n\n  args.sdfGlyphSize = args.sdfGlyphSize || CONFIG.sdfGlyphSize;\n\n  // Normalize colors\n  if (args.colorRanges != null) {\n    let colors = {};\n    for (let key in args.colorRanges) {\n      if (args.colorRanges.hasOwnProperty(key)) {\n        let val = args.colorRanges[key];\n        if (typeof val !== 'number') {\n          val = tempColor.set(val).getHex();\n        }\n        colors[key] = val;\n      }\n    }\n    args.colorRanges = colors;\n  }\n\n  Object.freeze(args);\n\n  // Init the atlas if needed\n  const {textureWidth, sdfExponent} = CONFIG;\n  const {sdfGlyphSize} = args;\n  const glyphsPerRow = (textureWidth / sdfGlyphSize * 4);\n  let atlas = atlases[sdfGlyphSize];\n  if (!atlas) {\n    const canvas = document.createElement('canvas');\n    canvas.width = textureWidth;\n    canvas.height = sdfGlyphSize * 256 / glyphsPerRow; // start tall enough to fit 256 glyphs\n    atlas = atlases[sdfGlyphSize] = {\n      glyphCount: 0,\n      sdfGlyphSize,\n      sdfCanvas: canvas,\n      sdfTexture: new Texture(\n        canvas,\n        undefined,\n        undefined,\n        undefined,\n        LinearFilter,\n        LinearFilter\n      ),\n      contextLost: false,\n      glyphsByFont: new Map()\n    };\n    atlas.sdfTexture.generateMipmaps = false;\n    initContextLossHandling(atlas);\n  }\n\n  const {sdfTexture, sdfCanvas} = atlas;\n  let fontGlyphs = atlas.glyphsByFont.get(args.font);\n  if (!fontGlyphs) {\n    atlas.glyphsByFont.set(args.font, fontGlyphs = new Map());\n  }\n\n  // Issue request to the typesetting engine in the worker\n  typesetInWorker(args).then(result => {\n    const {glyphIds, glyphPositions, fontSize, unitsPerEm, timings} = result;\n    const neededSDFs = [];\n    const glyphBounds = new Float32Array(glyphIds.length * 4);\n    const fontSizeMult = fontSize / unitsPerEm;\n    let boundsIdx = 0;\n    let positionsIdx = 0;\n    const quadsStart = now$1();\n    glyphIds.forEach((glyphId, i) => {\n      let glyphInfo = fontGlyphs.get(glyphId);\n\n      // If this is a glyphId not seen before, add it to the atlas\n      if (!glyphInfo) {\n        const {path, pathBounds} = result.glyphData[glyphId];\n\n        // Margin around path edges in SDF, based on a percentage of the glyph's max dimension.\n        // Note we add an extra 0.5 px over the configured value because the outer 0.5 doesn't contain\n        // useful interpolated values and will be ignored anyway.\n        const fontUnitsMargin = Math.max(pathBounds[2] - pathBounds[0], pathBounds[3] - pathBounds[1])\n          / sdfGlyphSize * (CONFIG.sdfMargin * sdfGlyphSize + 0.5);\n\n        const atlasIndex = atlas.glyphCount++;\n        const sdfViewBox = [\n          pathBounds[0] - fontUnitsMargin,\n          pathBounds[1] - fontUnitsMargin,\n          pathBounds[2] + fontUnitsMargin,\n          pathBounds[3] + fontUnitsMargin,\n        ];\n        fontGlyphs.set(glyphId, (glyphInfo = { path, atlasIndex, sdfViewBox }));\n\n        // Collect those that need SDF generation\n        neededSDFs.push(glyphInfo);\n      }\n\n      // Calculate bounds for renderable quads\n      // TODO can we get this back off the main thread?\n      const {sdfViewBox} = glyphInfo;\n      const posX = glyphPositions[positionsIdx++];\n      const posY = glyphPositions[positionsIdx++];\n      glyphBounds[boundsIdx++] = posX + sdfViewBox[0] * fontSizeMult;\n      glyphBounds[boundsIdx++] = posY + sdfViewBox[1] * fontSizeMult;\n      glyphBounds[boundsIdx++] = posX + sdfViewBox[2] * fontSizeMult;\n      glyphBounds[boundsIdx++] = posY + sdfViewBox[3] * fontSizeMult;\n\n      // Convert glyphId to SDF index for the shader\n      glyphIds[i] = glyphInfo.atlasIndex;\n    });\n    timings.quads = (timings.quads || 0) + (now$1() - quadsStart);\n\n    const sdfStart = now$1();\n    timings.sdf = {};\n\n    // Grow the texture height by power of 2 if needed\n    const currentHeight = sdfCanvas.height;\n    const neededRows = Math.ceil(atlas.glyphCount / glyphsPerRow);\n    const neededHeight = Math.pow(2, Math.ceil(Math.log2(neededRows * sdfGlyphSize)));\n    if (neededHeight > currentHeight) {\n      // Since resizing the canvas clears its render buffer, it needs special handling to copy the old contents over\n      console.info(`Increasing SDF texture size ${currentHeight}->${neededHeight}`);\n      resizeWebGLCanvasWithoutClearing(sdfCanvas, textureWidth, neededHeight);\n      // As of Three r136 textures cannot be resized once they're allocated on the GPU, we must dispose to reallocate it\n      sdfTexture.dispose();\n    }\n\n    Promise.all(neededSDFs.map(glyphInfo =>\n      generateGlyphSDF(glyphInfo, atlas, args.gpuAccelerateSDF).then(({timing}) => {\n        timings.sdf[glyphInfo.atlasIndex] = timing;\n      })\n    )).then(() => {\n      if (neededSDFs.length && !atlas.contextLost) {\n        safariPre15Workaround(atlas);\n        sdfTexture.needsUpdate = true;\n      }\n      timings.sdfTotal = now$1() - sdfStart;\n      timings.total = now$1() - totalStart;\n      // console.log(`SDF - ${timings.sdfTotal}, Total - ${timings.total - timings.fontLoad}`)\n\n      // Invoke callback with the text layout arrays and updated texture\n      callback(Object.freeze({\n        parameters: args,\n        sdfTexture,\n        sdfGlyphSize,\n        sdfExponent,\n        glyphBounds,\n        glyphAtlasIndices: glyphIds,\n        glyphColors: result.glyphColors,\n        caretPositions: result.caretPositions,\n        caretHeight: result.caretHeight,\n        chunkedBounds: result.chunkedBounds,\n        ascender: result.ascender,\n        descender: result.descender,\n        lineHeight: result.lineHeight,\n        capHeight: result.capHeight,\n        xHeight: result.xHeight,\n        topBaseline: result.topBaseline,\n        blockBounds: result.blockBounds,\n        visibleBounds: result.visibleBounds,\n        timings: result.timings,\n      }));\n    });\n  });\n\n  // While the typesetting request is being handled, go ahead and make sure the atlas canvas context is\n  // \"warmed up\"; the first request will be the longest due to shader program compilation so this gets\n  // a head start on that process before SDFs actually start getting processed.\n  Promise.resolve().then(() => {\n    if (!atlas.contextLost) {\n      warmUpSDFCanvas(sdfCanvas);\n    }\n  });\n}\n\nfunction generateGlyphSDF({path, atlasIndex, sdfViewBox}, {sdfGlyphSize, sdfCanvas, contextLost}, useGPU) {\n  if (contextLost) {\n    // If the context is lost there's nothing we can do, just quit silently and let it\n    // get regenerated when the context is restored\n    return Promise.resolve({timing: -1})\n  }\n  const {textureWidth, sdfExponent} = CONFIG;\n  const maxDist = Math.max(sdfViewBox[2] - sdfViewBox[0], sdfViewBox[3] - sdfViewBox[1]);\n  const squareIndex = Math.floor(atlasIndex / 4);\n  const x = squareIndex % (textureWidth / sdfGlyphSize) * sdfGlyphSize;\n  const y = Math.floor(squareIndex / (textureWidth / sdfGlyphSize)) * sdfGlyphSize;\n  const channel = atlasIndex % 4;\n  return generateSDF(sdfGlyphSize, sdfGlyphSize, path, sdfViewBox, maxDist, sdfExponent, sdfCanvas, x, y, channel, useGPU)\n}\n\nfunction initContextLossHandling(atlas) {\n  const canvas = atlas.sdfCanvas;\n\n  /*\n  // Begin context loss simulation\n  if (!window.WebGLDebugUtils) {\n    let script = document.getElementById('WebGLDebugUtilsScript')\n    if (!script) {\n      script = document.createElement('script')\n      script.id = 'WebGLDebugUtils'\n      document.head.appendChild(script)\n      script.src = 'https://cdn.jsdelivr.net/gh/KhronosGroup/WebGLDeveloperTools@b42e702/src/debug/webgl-debug.js'\n    }\n    script.addEventListener('load', () => {\n      initContextLossHandling(atlas)\n    })\n    return\n  }\n  window.WebGLDebugUtils.makeLostContextSimulatingCanvas(canvas)\n  canvas.loseContextInNCalls(500)\n  canvas.addEventListener('webglcontextrestored', (event) => {\n    canvas.loseContextInNCalls(5000)\n  })\n  // End context loss simulation\n  */\n\n  canvas.addEventListener('webglcontextlost', (event) => {\n    console.log('Context Lost', event);\n    event.preventDefault();\n    atlas.contextLost = true;\n  });\n  canvas.addEventListener('webglcontextrestored', (event) => {\n    console.log('Context Restored', event);\n    atlas.contextLost = false;\n    // Regenerate all glyphs into the restored canvas:\n    const promises = [];\n    atlas.glyphsByFont.forEach(glyphMap => {\n      glyphMap.forEach(glyph => {\n        promises.push(generateGlyphSDF(glyph, atlas, true));\n      });\n    });\n    Promise.all(promises).then(() => {\n      safariPre15Workaround(atlas);\n      atlas.sdfTexture.needsUpdate = true;\n    });\n  });\n}\n\n/**\n * Preload a given font and optionally pre-generate glyph SDFs for one or more character sequences.\n * This can be useful to avoid long pauses when first showing text in a scene, by preloading the\n * needed fonts and glyphs up front along with other assets.\n *\n * @param {object} options\n * @param {string} options.font - URL of the font file to preload. If not given, the default font will\n *        be loaded.\n * @param {string|string[]} options.characters - One or more character sequences for which to pre-\n *        generate glyph SDFs. Note that this will honor ligature substitution, so you may need\n *        to specify ligature sequences in addition to their individual characters to get all\n *        possible glyphs, e.g. `[\"t\", \"h\", \"th\"]` to get the \"t\" and \"h\" glyphs plus the \"th\" ligature.\n * @param {number} options.sdfGlyphSize - The size at which to prerender the SDF textures for the\n *        specified `characters`.\n * @param {function} callback - A function that will be called when the preloading is complete.\n */\nfunction preloadFont({font, characters, sdfGlyphSize}, callback) {\n  let text = Array.isArray(characters) ? characters.join('\\n') : '' + characters;\n  getTextRenderInfo({ font, sdfGlyphSize, text }, callback);\n}\n\n\n// Local assign impl so we don't have to import troika-core\nfunction assign(toObj, fromObj) {\n  for (let key in fromObj) {\n    if (fromObj.hasOwnProperty(key)) {\n      toObj[key] = fromObj[key];\n    }\n  }\n  return toObj\n}\n\n// Utility for making URLs absolute\nlet linkEl;\nfunction toAbsoluteURL(path) {\n  if (!linkEl) {\n    linkEl = typeof document === 'undefined' ? {} : document.createElement('a');\n  }\n  linkEl.href = path;\n  return linkEl.href\n}\n\n/**\n * Safari < v15 seems unable to use the SDF webgl canvas as a texture. This applies a workaround\n * where it reads the pixels out of that canvas and uploads them as a data texture instead, at\n * a slight performance cost.\n */\nfunction safariPre15Workaround(atlas) {\n  // Use createImageBitmap support as a proxy for Safari<15, all other mainstream browsers\n  // have supported it for a long while so any false positives should be minimal.\n  if (typeof createImageBitmap !== 'function') {\n    console.info('Safari<15: applying SDF canvas workaround');\n    const {sdfCanvas, sdfTexture} = atlas;\n    const {width, height} = sdfCanvas;\n    const gl = atlas.sdfCanvas.getContext('webgl');\n    let pixels = sdfTexture.image.data;\n    if (!pixels || pixels.length !== width * height * 4) {\n      pixels = new Uint8Array(width * height * 4);\n      sdfTexture.image = {width, height, data: pixels};\n      sdfTexture.flipY = false;\n      sdfTexture.isDataTexture = true;\n    }\n    gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n  }\n}\n\n\nconst typesetterWorkerModule = /*#__PURE__*/defineWorkerModule({\n  name: 'Typesetter',\n  dependencies: [\n    CONFIG,\n    workerModule,\n    createTypesetter,\n    bidiFactory\n  ],\n  init(config, fontParser, createTypesetter, bidiFactory) {\n    const {defaultFontURL} = config;\n    return createTypesetter(fontParser, bidiFactory(), { defaultFontURL })\n  }\n});\n\nconst typesetInWorker = /*#__PURE__*/defineWorkerModule({\n  name: 'Typesetter',\n  dependencies: [\n    typesetterWorkerModule,\n  ],\n  init(typesetter) {\n    return function(args) {\n      return new Promise(resolve => {\n        typesetter.typeset(args, resolve);\n      })\n    }\n  },\n  getTransferables(result) {\n    // Mark array buffers as transferable to avoid cloning during postMessage\n    const transferables = [\n      result.glyphPositions.buffer,\n      result.glyphIds.buffer\n    ];\n    if (result.caretPositions) {\n      transferables.push(result.caretPositions.buffer);\n    }\n    if (result.glyphColors) {\n      transferables.push(result.glyphColors.buffer);\n    }\n    return transferables\n  }\n});\n\nfunction dumpSDFTextures() {\n  Object.keys(atlases).forEach(size => {\n    const canvas = atlases[size].sdfCanvas;\n    const {width, height} = canvas;\n    console.log(\"%c.\", `\n      background: url(${canvas.toDataURL()});\n      background-size: ${width}px ${height}px;\n      color: transparent;\n      font-size: 0;\n      line-height: ${height}px;\n      padding-left: ${width}px;\n    `);\n  });\n}\n\nconst templateGeometries = {};\n\nfunction getTemplateGeometry(detail) {\n  let geom = templateGeometries[detail];\n  if (!geom) {\n    // Geometry is two planes back-to-back, which will always be rendered FrontSide only but\n    // appear as DoubleSide by default. FrontSide/BackSide are emulated using drawRange.\n    // We do it this way to avoid the performance hit of two draw calls for DoubleSide materials\n    // introduced by Three.js in r130 - see https://github.com/mrdoob/three.js/pull/21967\n    const front = new PlaneGeometry(1, 1, detail, detail);\n    const back = front.clone();\n    const frontAttrs = front.attributes;\n    const backAttrs = back.attributes;\n    const combined = new BufferGeometry();\n    const vertCount = frontAttrs.uv.count;\n    for (let i = 0; i < vertCount; i++) {\n      backAttrs.position.array[i * 3] *= -1; // flip position x\n      backAttrs.normal.array[i * 3 + 2] *= -1; // flip normal z\n    }\n    ['position', 'normal', 'uv'].forEach(name => {\n      combined.setAttribute(name, new Float32BufferAttribute(\n        [...frontAttrs[name].array, ...backAttrs[name].array],\n        frontAttrs[name].itemSize)\n      );\n    });\n    combined.setIndex([...front.index.array, ...back.index.array.map(n => n + vertCount)]);\n    combined.translate(0.5, 0.5, 0);\n    geom = templateGeometries[detail] = combined;\n  }\n  return geom\n}\n\nconst glyphBoundsAttrName = 'aTroikaGlyphBounds';\nconst glyphIndexAttrName = 'aTroikaGlyphIndex';\nconst glyphColorAttrName = 'aTroikaGlyphColor';\n\n/**\n@class GlyphsGeometry\n\nA specialized Geometry for rendering a set of text glyphs. Uses InstancedBufferGeometry to\nrender the glyphs using GPU instancing of a single quad, rather than constructing a whole\ngeometry with vertices, for much smaller attribute arraybuffers according to this math:\n\n  Where N = number of glyphs...\n\n  Instanced:\n  - position: 4 * 3\n  - index: 2 * 3\n  - normal: 4 * 3\n  - uv: 4 * 2\n  - glyph x/y bounds: N * 4\n  - glyph indices: N * 1\n  = 5N + 38\n\n  Non-instanced:\n  - position: N * 4 * 3\n  - index: N * 2 * 3\n  - normal: N * 4 * 3\n  - uv: N * 4 * 2\n  - glyph indices: N * 1\n  = 39N\n\nA downside of this is the rare-but-possible lack of the instanced arrays extension,\nwhich we could potentially work around with a fallback non-instanced implementation.\n\n*/\nclass GlyphsGeometry extends InstancedBufferGeometry {\n  constructor() {\n    super();\n\n    this.detail = 1;\n    this.curveRadius = 0;\n\n    // Define groups for rendering text outline as a separate pass; these will only\n    // be used when the `material` getter returns an array, i.e. outlineWidth > 0.\n    this.groups = [\n      {start: 0, count: Infinity, materialIndex: 0},\n      {start: 0, count: Infinity, materialIndex: 1}\n    ];\n\n    // Preallocate empty bounding objects\n    this.boundingSphere = new Sphere();\n    this.boundingBox = new Box3();\n  }\n\n  computeBoundingSphere () {\n    // No-op; we'll sync the boundingSphere proactively when needed.\n  }\n\n  computeBoundingBox() {\n    // No-op; we'll sync the boundingBox proactively when needed.\n  }\n\n  // Since our base geometry contains triangles for both front and back sides, we can emulate\n  // the \"side\" by restricting the draw range.\n  setSide(side) {\n    const verts = this.getIndex().count;\n    this.setDrawRange(side === BackSide ? verts / 2 : 0, side === DoubleSide ? verts : verts / 2);\n  }\n\n  set detail(detail) {\n    if (detail !== this._detail) {\n      this._detail = detail;\n      if (typeof detail !== 'number' || detail < 1) {\n        detail = 1;\n      }\n      let tpl = getTemplateGeometry(detail)\n      ;['position', 'normal', 'uv'].forEach(attr => {\n        this.attributes[attr] = tpl.attributes[attr].clone();\n      });\n      this.setIndex(tpl.getIndex().clone());\n    }\n  }\n  get detail() {\n    return this._detail\n  }\n\n  set curveRadius(r) {\n    if (r !== this._curveRadius) {\n      this._curveRadius = r;\n      this._updateBounds();\n    }\n  }\n  get curveRadius() {\n    return this._curveRadius\n  }\n\n  /**\n   * Update the geometry for a new set of glyphs.\n   * @param {Float32Array} glyphBounds - An array holding the planar bounds for all glyphs\n   *        to be rendered, 4 entries for each glyph: x1,x2,y1,y1\n   * @param {Float32Array} glyphAtlasIndices - An array holding the index of each glyph within\n   *        the SDF atlas texture.\n   * @param {Array} blockBounds - An array holding the [minX, minY, maxX, maxY] across all glyphs\n   * @param {Array} [chunkedBounds] - An array of objects describing bounds for each chunk of N\n   *        consecutive glyphs: `{start:N, end:N, rect:[minX, minY, maxX, maxY]}`. This can be\n   *        used with `applyClipRect` to choose an optimized `instanceCount`.\n   * @param {Uint8Array} [glyphColors] - An array holding r,g,b values for each glyph.\n   */\n  updateGlyphs(glyphBounds, glyphAtlasIndices, blockBounds, chunkedBounds, glyphColors) {\n    // Update the instance attributes\n    updateBufferAttr(this, glyphBoundsAttrName, glyphBounds, 4);\n    updateBufferAttr(this, glyphIndexAttrName, glyphAtlasIndices, 1);\n    updateBufferAttr(this, glyphColorAttrName, glyphColors, 3);\n    this._blockBounds = blockBounds;\n    this._chunkedBounds = chunkedBounds;\n    this.instanceCount = glyphAtlasIndices.length;\n    this._updateBounds();\n  }\n\n  _updateBounds() {\n    const bounds = this._blockBounds;\n    if (bounds) {\n      const { curveRadius, boundingBox: bbox } = this;\n      if (curveRadius) {\n        const { PI, floor, min, max, sin, cos } = Math;\n        const halfPi = PI / 2;\n        const twoPi = PI * 2;\n        const absR = Math.abs(curveRadius);\n        const leftAngle = bounds[0] / absR;\n        const rightAngle = bounds[2] / absR;\n        const minX = floor((leftAngle + halfPi) / twoPi) !== floor((rightAngle + halfPi) / twoPi)\n          ? -absR : min(sin(leftAngle) * absR, sin(rightAngle) * absR);\n        const maxX = floor((leftAngle - halfPi) / twoPi) !== floor((rightAngle - halfPi) / twoPi)\n          ? absR : max(sin(leftAngle) * absR, sin(rightAngle) * absR);\n        const maxZ = floor((leftAngle + PI) / twoPi) !== floor((rightAngle + PI) / twoPi)\n          ? absR * 2 : max(absR - cos(leftAngle) * absR, absR - cos(rightAngle) * absR);\n        bbox.min.set(minX, bounds[1], curveRadius < 0 ? -maxZ : 0);\n        bbox.max.set(maxX, bounds[3], curveRadius < 0 ? 0 : maxZ);\n      } else {\n        bbox.min.set(bounds[0], bounds[1], 0);\n        bbox.max.set(bounds[2], bounds[3], 0);\n      }\n      bbox.getBoundingSphere(this.boundingSphere);\n    }\n  }\n\n  /**\n   * Given a clipping rect, and the chunkedBounds from the last updateGlyphs call, choose the lowest\n   * `instanceCount` that will show all glyphs within the clipped view. This is an optimization\n   * for long blocks of text that are clipped, to skip vertex shader evaluation for glyphs that would\n   * be clipped anyway.\n   *\n   * Note that since `drawElementsInstanced[ANGLE]` only accepts an instance count and not a starting\n   * offset, this optimization becomes less effective as the clipRect moves closer to the end of the\n   * text block. We could fix that by switching from instancing to a full geometry with a drawRange,\n   * but at the expense of much larger attribute buffers (see classdoc above.)\n   *\n   * @param {Vector4} clipRect\n   */\n  applyClipRect(clipRect) {\n    let count = this.getAttribute(glyphIndexAttrName).count;\n    let chunks = this._chunkedBounds;\n    if (chunks) {\n      for (let i = chunks.length; i--;) {\n        count = chunks[i].end;\n        let rect = chunks[i].rect;\n        // note: both rects are l-b-r-t\n        if (rect[1] < clipRect.w && rect[3] > clipRect.y && rect[0] < clipRect.z && rect[2] > clipRect.x) {\n          break\n        }\n      }\n    }\n    this.instanceCount = count;\n  }\n}\n\n\nfunction updateBufferAttr(geom, attrName, newArray, itemSize) {\n  const attr = geom.getAttribute(attrName);\n  if (newArray) {\n    // If length isn't changing, just update the attribute's array data\n    if (attr && attr.array.length === newArray.length) {\n      attr.array.set(newArray);\n      attr.needsUpdate = true;\n    } else {\n      geom.setAttribute(attrName, new InstancedBufferAttribute(newArray, itemSize));\n      // If the new attribute has a different size, we also have to (as of r117) manually clear the\n      // internal cached max instance count. See https://github.com/mrdoob/three.js/issues/19706\n      // It's unclear if this is a threejs bug or a truly unsupported scenario; discussion in\n      // that ticket is ambiguous as to whether replacing a BufferAttribute with one of a\n      // different size is supported, but https://github.com/mrdoob/three.js/pull/17418 strongly\n      // implies it should be supported. It's possible we need to\n      delete geom._maxInstanceCount; //for r117+, could be fragile\n      geom.dispose(); //for r118+, more robust feeling, but more heavy-handed than I'd like\n    }\n  } else if (attr) {\n    geom.deleteAttribute(attrName);\n  }\n}\n\n// language=GLSL\nconst VERTEX_DEFS = `\nuniform vec2 uTroikaSDFTextureSize;\nuniform float uTroikaSDFGlyphSize;\nuniform vec4 uTroikaTotalBounds;\nuniform vec4 uTroikaClipRect;\nuniform mat3 uTroikaOrient;\nuniform bool uTroikaUseGlyphColors;\nuniform float uTroikaDistanceOffset;\nuniform float uTroikaBlurRadius;\nuniform vec2 uTroikaPositionOffset;\nuniform float uTroikaCurveRadius;\nattribute vec4 aTroikaGlyphBounds;\nattribute float aTroikaGlyphIndex;\nattribute vec3 aTroikaGlyphColor;\nvarying vec2 vTroikaGlyphUV;\nvarying vec4 vTroikaTextureUVBounds;\nvarying float vTroikaTextureChannel;\nvarying vec3 vTroikaGlyphColor;\nvarying vec2 vTroikaGlyphDimensions;\n`;\n\n// language=GLSL prefix=\"void main() {\" suffix=\"}\"\nconst VERTEX_TRANSFORM = `\nvec4 bounds = aTroikaGlyphBounds;\nbounds.xz += uTroikaPositionOffset.x;\nbounds.yw -= uTroikaPositionOffset.y;\n\nvec4 outlineBounds = vec4(\n  bounds.xy - uTroikaDistanceOffset - uTroikaBlurRadius,\n  bounds.zw + uTroikaDistanceOffset + uTroikaBlurRadius\n);\nvec4 clippedBounds = vec4(\n  clamp(outlineBounds.xy, uTroikaClipRect.xy, uTroikaClipRect.zw),\n  clamp(outlineBounds.zw, uTroikaClipRect.xy, uTroikaClipRect.zw)\n);\n\nvec2 clippedXY = (mix(clippedBounds.xy, clippedBounds.zw, position.xy) - bounds.xy) / (bounds.zw - bounds.xy);\n\nposition.xy = mix(bounds.xy, bounds.zw, clippedXY);\n\nuv = (position.xy - uTroikaTotalBounds.xy) / (uTroikaTotalBounds.zw - uTroikaTotalBounds.xy);\n\nfloat rad = uTroikaCurveRadius;\nif (rad != 0.0) {\n  float angle = position.x / rad;\n  position.xz = vec2(sin(angle) * rad, rad - cos(angle) * rad);\n  normal.xz = vec2(sin(angle), cos(angle));\n}\n  \nposition = uTroikaOrient * position;\nnormal = uTroikaOrient * normal;\n\nvTroikaGlyphUV = clippedXY.xy;\nvTroikaGlyphDimensions = vec2(bounds[2] - bounds[0], bounds[3] - bounds[1]);\n\n${''/* NOTE: it seems important to calculate the glyph's bounding texture UVs here in the\n  vertex shader, rather than in the fragment shader, as the latter gives strange artifacts\n  on some glyphs (those in the leftmost texture column) on some systems. The exact reason\n  isn't understood but doing this here, then mix()-ing in the fragment shader, seems to work. */}\nfloat txCols = uTroikaSDFTextureSize.x / uTroikaSDFGlyphSize;\nvec2 txUvPerSquare = uTroikaSDFGlyphSize / uTroikaSDFTextureSize;\nvec2 txStartUV = txUvPerSquare * vec2(\n  mod(floor(aTroikaGlyphIndex / 4.0), txCols),\n  floor(floor(aTroikaGlyphIndex / 4.0) / txCols)\n);\nvTroikaTextureUVBounds = vec4(txStartUV, vec2(txStartUV) + txUvPerSquare);\nvTroikaTextureChannel = mod(aTroikaGlyphIndex, 4.0);\n`;\n\n// language=GLSL\nconst FRAGMENT_DEFS = `\nuniform sampler2D uTroikaSDFTexture;\nuniform vec2 uTroikaSDFTextureSize;\nuniform float uTroikaSDFGlyphSize;\nuniform float uTroikaSDFExponent;\nuniform float uTroikaDistanceOffset;\nuniform float uTroikaFillOpacity;\nuniform float uTroikaOutlineOpacity;\nuniform float uTroikaBlurRadius;\nuniform vec3 uTroikaStrokeColor;\nuniform float uTroikaStrokeWidth;\nuniform float uTroikaStrokeOpacity;\nuniform bool uTroikaSDFDebug;\nvarying vec2 vTroikaGlyphUV;\nvarying vec4 vTroikaTextureUVBounds;\nvarying float vTroikaTextureChannel;\nvarying vec2 vTroikaGlyphDimensions;\n\nfloat troikaSdfValueToSignedDistance(float alpha) {\n  // Inverse of exponential encoding in webgl-sdf-generator\n  ${''/* TODO - there's some slight inaccuracy here when dealing with interpolated alpha values; those\n    are linearly interpolated where the encoding is exponential. Look into improving this by rounding\n    to nearest 2 whole texels, decoding those exponential values, and linearly interpolating the result.\n  */}\n  float maxDimension = max(vTroikaGlyphDimensions.x, vTroikaGlyphDimensions.y);\n  float absDist = (1.0 - pow(2.0 * (alpha > 0.5 ? 1.0 - alpha : alpha), 1.0 / uTroikaSDFExponent)) * maxDimension;\n  float signedDist = absDist * (alpha > 0.5 ? -1.0 : 1.0);\n  return signedDist;\n}\n\nfloat troikaGlyphUvToSdfValue(vec2 glyphUV) {\n  vec2 textureUV = mix(vTroikaTextureUVBounds.xy, vTroikaTextureUVBounds.zw, glyphUV);\n  vec4 rgba = texture2D(uTroikaSDFTexture, textureUV);\n  float ch = floor(vTroikaTextureChannel + 0.5); //NOTE: can't use round() in WebGL1\n  return ch == 0.0 ? rgba.r : ch == 1.0 ? rgba.g : ch == 2.0 ? rgba.b : rgba.a;\n}\n\nfloat troikaGlyphUvToDistance(vec2 uv) {\n  return troikaSdfValueToSignedDistance(troikaGlyphUvToSdfValue(uv));\n}\n\nfloat troikaGetAADist() {\n  ${''/*\n    When the standard derivatives extension is available, we choose an antialiasing alpha threshold based\n    on the potential change in the SDF's alpha from this fragment to its neighbor. This strategy maximizes \n    readability and edge crispness at all sizes and screen resolutions.\n  */}\n  #if defined(GL_OES_standard_derivatives) || __VERSION__ >= 300\n  return length(fwidth(vTroikaGlyphUV * vTroikaGlyphDimensions)) * 0.5;\n  #else\n  return vTroikaGlyphDimensions.x / 64.0;\n  #endif\n}\n\nfloat troikaGetFragDistValue() {\n  vec2 clampedGlyphUV = clamp(vTroikaGlyphUV, 0.5 / uTroikaSDFGlyphSize, 1.0 - 0.5 / uTroikaSDFGlyphSize);\n  float distance = troikaGlyphUvToDistance(clampedGlyphUV);\n \n  // Extrapolate distance when outside bounds:\n  distance += clampedGlyphUV == vTroikaGlyphUV ? 0.0 : \n    length((vTroikaGlyphUV - clampedGlyphUV) * vTroikaGlyphDimensions);\n\n  ${''/* \n  // TODO more refined extrapolated distance by adjusting for angle of gradient at edge...\n  // This has potential but currently gives very jagged extensions, maybe due to precision issues?\n  float uvStep = 1.0 / uTroikaSDFGlyphSize;\n  vec2 neighbor1UV = clampedGlyphUV + (\n    vTroikaGlyphUV.x != clampedGlyphUV.x ? vec2(0.0, uvStep * sign(0.5 - vTroikaGlyphUV.y)) :\n    vTroikaGlyphUV.y != clampedGlyphUV.y ? vec2(uvStep * sign(0.5 - vTroikaGlyphUV.x), 0.0) :\n    vec2(0.0)\n  );\n  vec2 neighbor2UV = clampedGlyphUV + (\n    vTroikaGlyphUV.x != clampedGlyphUV.x ? vec2(0.0, uvStep * -sign(0.5 - vTroikaGlyphUV.y)) :\n    vTroikaGlyphUV.y != clampedGlyphUV.y ? vec2(uvStep * -sign(0.5 - vTroikaGlyphUV.x), 0.0) :\n    vec2(0.0)\n  );\n  float neighbor1Distance = troikaGlyphUvToDistance(neighbor1UV);\n  float neighbor2Distance = troikaGlyphUvToDistance(neighbor2UV);\n  float distToUnclamped = length((vTroikaGlyphUV - clampedGlyphUV) * vTroikaGlyphDimensions);\n  float distToNeighbor = length((clampedGlyphUV - neighbor1UV) * vTroikaGlyphDimensions);\n  float gradientAngle1 = min(asin(abs(neighbor1Distance - distance) / distToNeighbor), PI / 2.0);\n  float gradientAngle2 = min(asin(abs(neighbor2Distance - distance) / distToNeighbor), PI / 2.0);\n  distance += (cos(gradientAngle1) + cos(gradientAngle2)) / 2.0 * distToUnclamped;\n  */}\n\n  return distance;\n}\n\nfloat troikaGetEdgeAlpha(float distance, float distanceOffset, float aaDist) {\n  #if defined(IS_DEPTH_MATERIAL) || defined(IS_DISTANCE_MATERIAL)\n  float alpha = step(-distanceOffset, -distance);\n  #else\n\n  float alpha = smoothstep(\n    distanceOffset + aaDist,\n    distanceOffset - aaDist,\n    distance\n  );\n  #endif\n\n  return alpha;\n}\n`;\n\n// language=GLSL prefix=\"void main() {\" suffix=\"}\"\nconst FRAGMENT_TRANSFORM = `\nfloat aaDist = troikaGetAADist();\nfloat fragDistance = troikaGetFragDistValue();\nfloat edgeAlpha = uTroikaSDFDebug ?\n  troikaGlyphUvToSdfValue(vTroikaGlyphUV) :\n  troikaGetEdgeAlpha(fragDistance, uTroikaDistanceOffset, max(aaDist, uTroikaBlurRadius));\n\n#if !defined(IS_DEPTH_MATERIAL) && !defined(IS_DISTANCE_MATERIAL)\nvec4 fillRGBA = gl_FragColor;\nfillRGBA.a *= uTroikaFillOpacity;\nvec4 strokeRGBA = uTroikaStrokeWidth == 0.0 ? fillRGBA : vec4(uTroikaStrokeColor, uTroikaStrokeOpacity);\nif (fillRGBA.a == 0.0) fillRGBA.rgb = strokeRGBA.rgb;\ngl_FragColor = mix(fillRGBA, strokeRGBA, smoothstep(\n  -uTroikaStrokeWidth - aaDist,\n  -uTroikaStrokeWidth + aaDist,\n  fragDistance\n));\ngl_FragColor.a *= edgeAlpha;\n#endif\n\nif (edgeAlpha == 0.0) {\n  discard;\n}\n`;\n\n\n/**\n * Create a material for rendering text, derived from a baseMaterial\n */\nfunction createTextDerivedMaterial(baseMaterial) {\n  const textMaterial = createDerivedMaterial(baseMaterial, {\n    chained: true,\n    extensions: {\n      derivatives: true\n    },\n    uniforms: {\n      uTroikaSDFTexture: {value: null},\n      uTroikaSDFTextureSize: {value: new Vector2()},\n      uTroikaSDFGlyphSize: {value: 0},\n      uTroikaSDFExponent: {value: 0},\n      uTroikaTotalBounds: {value: new Vector4(0,0,0,0)},\n      uTroikaClipRect: {value: new Vector4(0,0,0,0)},\n      uTroikaDistanceOffset: {value: 0},\n      uTroikaOutlineOpacity: {value: 0},\n      uTroikaFillOpacity: {value: 1},\n      uTroikaPositionOffset: {value: new Vector2()},\n      uTroikaCurveRadius: {value: 0},\n      uTroikaBlurRadius: {value: 0},\n      uTroikaStrokeWidth: {value: 0},\n      uTroikaStrokeColor: {value: new Color()},\n      uTroikaStrokeOpacity: {value: 1},\n      uTroikaOrient: {value: new Matrix3()},\n      uTroikaUseGlyphColors: {value: true},\n      uTroikaSDFDebug: {value: false}\n    },\n    vertexDefs: VERTEX_DEFS,\n    vertexTransform: VERTEX_TRANSFORM,\n    fragmentDefs: FRAGMENT_DEFS,\n    fragmentColorTransform: FRAGMENT_TRANSFORM,\n    customRewriter({vertexShader, fragmentShader}) {\n      let uDiffuseRE = /\\buniform\\s+vec3\\s+diffuse\\b/;\n      if (uDiffuseRE.test(fragmentShader)) {\n        // Replace all instances of `diffuse` with our varying\n        fragmentShader = fragmentShader\n          .replace(uDiffuseRE, 'varying vec3 vTroikaGlyphColor')\n          .replace(/\\bdiffuse\\b/g, 'vTroikaGlyphColor');\n        // Make sure the vertex shader declares the uniform so we can grab it as a fallback\n        if (!uDiffuseRE.test(vertexShader)) {\n          vertexShader = vertexShader.replace(\n            voidMainRegExp,\n            'uniform vec3 diffuse;\\n$&\\nvTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;\\n'\n          );\n        }\n      }\n      return { vertexShader, fragmentShader }\n    }\n  });\n\n  // Force transparency - TODO is this reasonable?\n  textMaterial.transparent = true;\n\n  Object.defineProperties(textMaterial, {\n    isTroikaTextMaterial: {value: true},\n\n    // WebGLShadowMap reverses the side of the shadow material by default, which fails\n    // for planes, so here we force the `shadowSide` to always match the main side.\n    shadowSide: {\n      get() {\n        return this.side\n      },\n      set() {\n        //no-op\n      }\n    }\n  });\n\n  return textMaterial\n}\n\nconst defaultMaterial = /*#__PURE__*/ new MeshBasicMaterial({\n  color: 0xffffff,\n  side: DoubleSide,\n  transparent: true\n});\nconst defaultStrokeColor = 0x808080;\n\nconst tempMat4 = /*#__PURE__*/ new Matrix4();\nconst tempVec3a = /*#__PURE__*/ new Vector3();\nconst tempVec3b = /*#__PURE__*/ new Vector3();\nconst tempArray = [];\nconst origin = /*#__PURE__*/ new Vector3();\nconst defaultOrient = '+x+y';\n\nfunction first(o) {\n  return Array.isArray(o) ? o[0] : o\n}\n\nlet getFlatRaycastMesh = () => {\n  const mesh = new Mesh(\n    new PlaneGeometry(1, 1),\n    defaultMaterial\n  );\n  getFlatRaycastMesh = () => mesh;\n  return mesh\n};\nlet getCurvedRaycastMesh = () => {\n  const mesh = new Mesh(\n    new PlaneGeometry(1, 1, 32, 1),\n    defaultMaterial\n  );\n  getCurvedRaycastMesh = () => mesh;\n  return mesh\n};\n\nconst syncStartEvent = { type: 'syncstart' };\nconst syncCompleteEvent = { type: 'synccomplete' };\n\nconst SYNCABLE_PROPS = [\n  'font',\n  'fontSize',\n  'letterSpacing',\n  'lineHeight',\n  'maxWidth',\n  'overflowWrap',\n  'text',\n  'direction',\n  'textAlign',\n  'textIndent',\n  'whiteSpace',\n  'anchorX',\n  'anchorY',\n  'colorRanges',\n  'sdfGlyphSize'\n];\n\nconst COPYABLE_PROPS = SYNCABLE_PROPS.concat(\n  'material',\n  'color',\n  'depthOffset',\n  'clipRect',\n  'curveRadius',\n  'orientation',\n  'glyphGeometryDetail'\n);\n\n/**\n * @class Text\n *\n * A ThreeJS Mesh that renders a string of text on a plane in 3D space using signed distance\n * fields (SDF).\n */\nclass Text extends Mesh {\n  constructor() {\n    const geometry = new GlyphsGeometry();\n    super(geometry, null);\n\n    // === Text layout properties: === //\n\n    /**\n     * @member {string} text\n     * The string of text to be rendered.\n     */\n    this.text = '';\n\n    /**\n     * @member {number|string} anchorX\n     * Defines the horizontal position in the text block that should line up with the local origin.\n     * Can be specified as a numeric x position in local units, a string percentage of the total\n     * text block width e.g. `'25%'`, or one of the following keyword strings: 'left', 'center',\n     * or 'right'.\n     */\n    this.anchorX = 0;\n\n    /**\n     * @member {number|string} anchorX\n     * Defines the vertical position in the text block that should line up with the local origin.\n     * Can be specified as a numeric y position in local units (note: down is negative y), a string\n     * percentage of the total text block height e.g. `'25%'`, or one of the following keyword strings:\n     * 'top', 'top-baseline', 'top-cap', 'top-ex', 'middle', 'bottom-baseline', or 'bottom'.\n     */\n    this.anchorY = 0;\n\n    /**\n     * @member {number} curveRadius\n     * Defines a cylindrical radius along which the text's plane will be curved. Positive numbers put\n     * the cylinder's centerline (oriented vertically) that distance in front of the text, for a concave\n     * curvature, while negative numbers put it behind the text for a convex curvature. The centerline\n     * will be aligned with the text's local origin; you can use `anchorX` to offset it.\n     *\n     * Since each glyph is by default rendered with a simple quad, each glyph remains a flat plane\n     * internally. You can use `glyphGeometryDetail` to add more vertices for curvature inside glyphs.\n     */\n    this.curveRadius = 0;\n\n    /**\n     * @member {string} direction\n     * Sets the base direction for the text. The default value of \"auto\" will choose a direction based\n     * on the text's content according to the bidi spec. A value of \"ltr\" or \"rtl\" will force the direction.\n     */\n    this.direction = 'auto';\n\n    /**\n     * @member {string} font\n     * URL of a custom font to be used. Font files can be in .ttf, .otf, or .woff (not .woff2) formats.\n     * Defaults to the Roboto font loaded from Google Fonts.\n     */\n    this.font = null; //will use default from TextBuilder\n\n    /**\n     * @member {number} fontSize\n     * The size at which to render the font in local units; corresponds to the em-box height\n     * of the chosen `font`.\n     */\n    this.fontSize = 0.1;\n\n    /**\n     * @member {number} letterSpacing\n     * Sets a uniform adjustment to spacing between letters after kerning is applied. Positive\n     * numbers increase spacing and negative numbers decrease it.\n     */\n    this.letterSpacing = 0;\n\n    /**\n     * @member {number|string} lineHeight\n     * Sets the height of each line of text, as a multiple of the `fontSize`. Defaults to 'normal'\n     * which chooses a reasonable height based on the chosen font's ascender/descender metrics.\n     */\n    this.lineHeight = 'normal';\n\n    /**\n     * @member {number} maxWidth\n     * The maximum width of the text block, above which text may start wrapping according to the\n     * `whiteSpace` and `overflowWrap` properties.\n     */\n    this.maxWidth = Infinity;\n\n    /**\n     * @member {string} overflowWrap\n     * Defines how text wraps if the `whiteSpace` property is `normal`. Can be either `'normal'`\n     * to break at whitespace characters, or `'break-word'` to allow breaking within words.\n     * Defaults to `'normal'`.\n     */\n    this.overflowWrap = 'normal';\n\n    /**\n     * @member {string} textAlign\n     * The horizontal alignment of each line of text within the overall text bounding box.\n     */\n    this.textAlign = 'left';\n\n    /**\n     * @member {number} textIndent\n     * Indentation for the first character of a line; see CSS `text-indent`.\n     */\n    this.textIndent = 0;\n\n    /**\n     * @member {string} whiteSpace\n     * Defines whether text should wrap when a line reaches the `maxWidth`. Can\n     * be either `'normal'` (the default), to allow wrapping according to the `overflowWrap` property,\n     * or `'nowrap'` to prevent wrapping. Note that `'normal'` here honors newline characters to\n     * manually break lines, making it behave more like `'pre-wrap'` does in CSS.\n     */\n    this.whiteSpace = 'normal';\n\n\n    // === Presentation properties: === //\n\n    /**\n     * @member {THREE.Material} material\n     * Defines a _base_ material to be used when rendering the text. This material will be\n     * automatically replaced with a material derived from it, that adds shader code to\n     * decrease the alpha for each fragment (pixel) outside the text glyphs, with antialiasing.\n     * By default it will derive from a simple white MeshBasicMaterial, but you can use any\n     * of the other mesh materials to gain other features like lighting, texture maps, etc.\n     *\n     * Also see the `color` shortcut property.\n     */\n    this.material = null;\n\n    /**\n     * @member {string|number|THREE.Color} color\n     * This is a shortcut for setting the `color` of the text's material. You can use this\n     * if you don't want to specify a whole custom `material`. Also, if you do use a custom\n     * `material`, this color will only be used for this particuar Text instance, even if\n     * that same material instance is shared across multiple Text objects.\n     */\n    this.color = null;\n\n    /**\n     * @member {object|null} colorRanges\n     * WARNING: This API is experimental and may change.\n     * This allows more fine-grained control of colors for individual or ranges of characters,\n     * taking precedence over the material's `color`. Its format is an Object whose keys each\n     * define a starting character index for a range, and whose values are the color for each\n     * range. The color value can be a numeric hex color value, a `THREE.Color` object, or\n     * any of the strings accepted by `THREE.Color`.\n     */\n    this.colorRanges = null;\n\n    /**\n     * @member {number|string} outlineWidth\n     * WARNING: This API is experimental and may change.\n     * The width of an outline/halo to be drawn around each text glyph using the `outlineColor` and `outlineOpacity`.\n     * Can be specified as either an absolute number in local units, or as a percentage string e.g.\n     * `\"12%\"` which is treated as a percentage of the `fontSize`. Defaults to `0`, which means\n     * no outline will be drawn unless an `outlineOffsetX/Y` or `outlineBlur` is set.\n     */\n    this.outlineWidth = 0;\n\n    /**\n     * @member {string|number|THREE.Color} outlineColor\n     * WARNING: This API is experimental and may change.\n     * The color of the text outline, if `outlineWidth`/`outlineBlur`/`outlineOffsetX/Y` are set.\n     * Defaults to black.\n     */\n    this.outlineColor = 0x000000;\n\n    /**\n     * @member {number} outlineOpacity\n     * WARNING: This API is experimental and may change.\n     * The opacity of the outline, if `outlineWidth`/`outlineBlur`/`outlineOffsetX/Y` are set.\n     * Defaults to `1`.\n     */\n    this.outlineOpacity = 1;\n\n    /**\n     * @member {number|string} outlineBlur\n     * WARNING: This API is experimental and may change.\n     * A blur radius applied to the outer edge of the text's outline. If the `outlineWidth` is\n     * zero, the blur will be applied at the glyph edge, like CSS's `text-shadow` blur radius.\n     * Can be specified as either an absolute number in local units, or as a percentage string e.g.\n     * `\"12%\"` which is treated as a percentage of the `fontSize`. Defaults to `0`.\n     */\n    this.outlineBlur = 0;\n\n    /**\n     * @member {number|string} outlineOffsetX\n     * WARNING: This API is experimental and may change.\n     * A horizontal offset for the text outline.\n     * Can be specified as either an absolute number in local units, or as a percentage string e.g. `\"12%\"`\n     * which is treated as a percentage of the `fontSize`. Defaults to `0`.\n     */\n    this.outlineOffsetX = 0;\n\n    /**\n     * @member {number|string} outlineOffsetY\n     * WARNING: This API is experimental and may change.\n     * A vertical offset for the text outline.\n     * Can be specified as either an absolute number in local units, or as a percentage string e.g. `\"12%\"`\n     * which is treated as a percentage of the `fontSize`. Defaults to `0`.\n     */\n    this.outlineOffsetY = 0;\n\n    /**\n     * @member {number|string} strokeWidth\n     * WARNING: This API is experimental and may change.\n     * The width of an inner stroke drawn inside each text glyph using the `strokeColor` and `strokeOpacity`.\n     * Can be specified as either an absolute number in local units, or as a percentage string e.g. `\"12%\"`\n     * which is treated as a percentage of the `fontSize`. Defaults to `0`.\n     */\n    this.strokeWidth = 0;\n\n    /**\n     * @member {string|number|THREE.Color} strokeColor\n     * WARNING: This API is experimental and may change.\n     * The color of the text stroke, if `strokeWidth` is greater than zero. Defaults to gray.\n     */\n    this.strokeColor = defaultStrokeColor;\n\n    /**\n     * @member {number} strokeOpacity\n     * WARNING: This API is experimental and may change.\n     * The opacity of the stroke, if `strokeWidth` is greater than zero. Defaults to `1`.\n     */\n    this.strokeOpacity = 1;\n\n    /**\n     * @member {number} fillOpacity\n     * WARNING: This API is experimental and may change.\n     * The opacity of the glyph's fill from 0 to 1. This behaves like the material's `opacity` but allows\n     * giving the fill a different opacity than the `strokeOpacity`. A fillOpacity of `0` makes the\n     * interior of the glyph invisible, leaving just the `strokeWidth`. Defaults to `1`.\n     */\n    this.fillOpacity = 1;\n\n    /**\n     * @member {number} depthOffset\n     * This is a shortcut for setting the material's `polygonOffset` and related properties,\n     * which can be useful in preventing z-fighting when this text is laid on top of another\n     * plane in the scene. Positive numbers are further from the camera, negatives closer.\n     */\n    this.depthOffset = 0;\n\n    /**\n     * @member {Array<number>} clipRect\n     * If specified, defines a `[minX, minY, maxX, maxY]` of a rectangle outside of which all\n     * pixels will be discarded. This can be used for example to clip overflowing text when\n     * `whiteSpace='nowrap'`.\n     */\n    this.clipRect = null;\n\n    /**\n     * @member {string} orientation\n     * Defines the axis plane on which the text should be laid out when the mesh has no extra\n     * rotation transform. It is specified as a string with two axes: the horizontal axis with\n     * positive pointing right, and the vertical axis with positive pointing up. By default this\n     * is '+x+y', meaning the text sits on the xy plane with the text's top toward positive y\n     * and facing positive z. A value of '+x-z' would place it on the xz plane with the text's\n     * top toward negative z and facing positive y.\n     */\n    this.orientation = defaultOrient;\n\n    /**\n     * @member {number} glyphGeometryDetail\n     * Controls number of vertical/horizontal segments that make up each glyph's rectangular\n     * plane. Defaults to 1. This can be increased to provide more geometrical detail for custom\n     * vertex shader effects, for example.\n     */\n    this.glyphGeometryDetail = 1;\n\n    /**\n     * @member {number|null} sdfGlyphSize\n     * The size of each glyph's SDF (signed distance field) used for rendering. This must be a\n     * power-of-two number. Defaults to 64 which is generally a good balance of size and quality\n     * for most fonts. Larger sizes can improve the quality of glyph rendering by increasing\n     * the sharpness of corners and preventing loss of very thin lines, at the expense of\n     * increased memory footprint and longer SDF generation time.\n     */\n    this.sdfGlyphSize = null;\n\n    /**\n     * @member {boolean} gpuAccelerateSDF\n     * When `true`, the SDF generation process will be GPU-accelerated with WebGL when possible,\n     * making it much faster especially for complex glyphs, and falling back to a JavaScript version\n     * executed in web workers when support isn't available. It should automatically detect support,\n     * but it's still somewhat experimental, so you can set it to `false` to force it to use the JS\n     * version if you encounter issues with it.\n     */\n    this.gpuAccelerateSDF = true;\n\n    this.debugSDF = false;\n  }\n\n  /**\n   * Updates the text rendering according to the current text-related configuration properties.\n   * This is an async process, so you can pass in a callback function to be executed when it\n   * finishes.\n   * @param {function} [callback]\n   */\n  sync(callback) {\n    if (this._needsSync) {\n      this._needsSync = false;\n\n      // If there's another sync still in progress, queue\n      if (this._isSyncing) {\n        (this._queuedSyncs || (this._queuedSyncs = [])).push(callback);\n      } else {\n        this._isSyncing = true;\n        this.dispatchEvent(syncStartEvent);\n\n        getTextRenderInfo({\n          text: this.text,\n          font: this.font,\n          fontSize: this.fontSize || 0.1,\n          letterSpacing: this.letterSpacing || 0,\n          lineHeight: this.lineHeight || 'normal',\n          maxWidth: this.maxWidth,\n          direction: this.direction || 'auto',\n          textAlign: this.textAlign,\n          textIndent: this.textIndent,\n          whiteSpace: this.whiteSpace,\n          overflowWrap: this.overflowWrap,\n          anchorX: this.anchorX,\n          anchorY: this.anchorY,\n          colorRanges: this.colorRanges,\n          includeCaretPositions: true, //TODO parameterize\n          sdfGlyphSize: this.sdfGlyphSize,\n          gpuAccelerateSDF: this.gpuAccelerateSDF,\n        }, textRenderInfo => {\n          this._isSyncing = false;\n\n          // Save result for later use in onBeforeRender\n          this._textRenderInfo = textRenderInfo;\n\n          // Update the geometry attributes\n          this.geometry.updateGlyphs(\n            textRenderInfo.glyphBounds,\n            textRenderInfo.glyphAtlasIndices,\n            textRenderInfo.blockBounds,\n            textRenderInfo.chunkedBounds,\n            textRenderInfo.glyphColors\n          );\n\n          // If we had extra sync requests queued up, kick it off\n          const queued = this._queuedSyncs;\n          if (queued) {\n            this._queuedSyncs = null;\n            this._needsSync = true;\n            this.sync(() => {\n              queued.forEach(fn => fn && fn());\n            });\n          }\n\n          this.dispatchEvent(syncCompleteEvent);\n          if (callback) {\n            callback();\n          }\n        });\n      }\n    }\n  }\n\n  /**\n   * Initiate a sync if needed - note it won't complete until next frame at the\n   * earliest so if possible it's a good idea to call sync() manually as soon as\n   * all the properties have been set.\n   * @override\n   */\n  onBeforeRender(renderer, scene, camera, geometry, material, group) {\n    this.sync();\n\n    // This may not always be a text material, e.g. if there's a scene.overrideMaterial present\n    if (material.isTroikaTextMaterial) {\n      this._prepareForRender(material);\n    }\n\n    // We need to force the material to FrontSide to avoid the double-draw-call performance hit\n    // introduced in Three.js r130: https://github.com/mrdoob/three.js/pull/21967 - The sidedness\n    // is instead applied via drawRange in the GlyphsGeometry.\n    material._hadOwnSide = material.hasOwnProperty('side');\n    this.geometry.setSide(material._actualSide = material.side);\n    material.side = FrontSide;\n  }\n\n  onAfterRender(renderer, scene, camera, geometry, material, group) {\n    // Restore original material side\n    if (material._hadOwnSide) {\n      material.side = material._actualSide;\n    } else {\n      delete material.side; // back to inheriting from base material\n    }\n  }\n\n  /**\n   * Shortcut to dispose the geometry specific to this instance.\n   * Note: we don't also dispose the derived material here because if anything else is\n   * sharing the same base material it will result in a pause next frame as the program\n   * is recompiled. Instead users can dispose the base material manually, like normal,\n   * and we'll also dispose the derived material at that time.\n   */\n  dispose() {\n    this.geometry.dispose();\n  }\n\n  /**\n   * @property {TroikaTextRenderInfo|null} textRenderInfo\n   * @readonly\n   * The current processed rendering data for this TextMesh, returned by the TextBuilder after\n   * a `sync()` call. This will be `null` initially, and may be stale for a short period until\n   * the asynchrous `sync()` process completes.\n   */\n  get textRenderInfo() {\n    return this._textRenderInfo || null\n  }\n\n  // Handler for automatically wrapping the base material with our upgrades. We do the wrapping\n  // lazily on _read_ rather than write to avoid unnecessary wrapping on transient values.\n  get material() {\n    let derivedMaterial = this._derivedMaterial;\n    const baseMaterial = this._baseMaterial || this._defaultMaterial || (this._defaultMaterial = defaultMaterial.clone());\n    if (!derivedMaterial || derivedMaterial.baseMaterial !== baseMaterial) {\n      derivedMaterial = this._derivedMaterial = createTextDerivedMaterial(baseMaterial);\n      // dispose the derived material when its base material is disposed:\n      baseMaterial.addEventListener('dispose', function onDispose() {\n        baseMaterial.removeEventListener('dispose', onDispose);\n        derivedMaterial.dispose();\n      });\n    }\n    // If text outline is configured, render it as a preliminary draw using Three's multi-material\n    // feature (see GlyphsGeometry which sets up `groups` for this purpose) Doing it with multi\n    // materials ensures the layers are always rendered consecutively in a consistent order.\n    // Each layer will trigger onBeforeRender with the appropriate material.\n    if (this.outlineWidth || this.outlineBlur || this.outlineOffsetX || this.outlineOffsetY) {\n      let outlineMaterial = derivedMaterial._outlineMtl;\n      if (!outlineMaterial) {\n        outlineMaterial = derivedMaterial._outlineMtl = Object.create(derivedMaterial, {\n          id: {value: derivedMaterial.id + 0.1}\n        });\n        outlineMaterial.isTextOutlineMaterial = true;\n        outlineMaterial.depthWrite = false;\n        outlineMaterial.map = null; //???\n        derivedMaterial.addEventListener('dispose', function onDispose() {\n          derivedMaterial.removeEventListener('dispose', onDispose);\n          outlineMaterial.dispose();\n        });\n      }\n      return [\n        outlineMaterial,\n        derivedMaterial\n      ]\n    } else {\n      return derivedMaterial\n    }\n  }\n  set material(baseMaterial) {\n    if (baseMaterial && baseMaterial.isTroikaTextMaterial) { //prevent double-derivation\n      this._derivedMaterial = baseMaterial;\n      this._baseMaterial = baseMaterial.baseMaterial;\n    } else {\n      this._baseMaterial = baseMaterial;\n    }\n  }\n\n  get glyphGeometryDetail() {\n    return this.geometry.detail\n  }\n  set glyphGeometryDetail(detail) {\n    this.geometry.detail = detail;\n  }\n\n  get curveRadius() {\n    return this.geometry.curveRadius\n  }\n  set curveRadius(r) {\n    this.geometry.curveRadius = r;\n  }\n\n  // Create and update material for shadows upon request:\n  get customDepthMaterial() {\n    return first(this.material).getDepthMaterial()\n  }\n  get customDistanceMaterial() {\n    return first(this.material).getDistanceMaterial()\n  }\n\n  _prepareForRender(material) {\n    const isOutline = material.isTextOutlineMaterial;\n    const uniforms = material.uniforms;\n    const textInfo = this.textRenderInfo;\n    if (textInfo) {\n      const {sdfTexture, blockBounds} = textInfo;\n      uniforms.uTroikaSDFTexture.value = sdfTexture;\n      uniforms.uTroikaSDFTextureSize.value.set(sdfTexture.image.width, sdfTexture.image.height);\n      uniforms.uTroikaSDFGlyphSize.value = textInfo.sdfGlyphSize;\n      uniforms.uTroikaSDFExponent.value = textInfo.sdfExponent;\n      uniforms.uTroikaTotalBounds.value.fromArray(blockBounds);\n      uniforms.uTroikaUseGlyphColors.value = !isOutline && !!textInfo.glyphColors;\n\n      let distanceOffset = 0;\n      let blurRadius = 0;\n      let strokeWidth = 0;\n      let fillOpacity;\n      let strokeOpacity;\n      let strokeColor;\n      let offsetX = 0;\n      let offsetY = 0;\n\n      if (isOutline) {\n        let {outlineWidth, outlineOffsetX, outlineOffsetY, outlineBlur, outlineOpacity} = this;\n        distanceOffset = this._parsePercent(outlineWidth) || 0;\n        blurRadius = Math.max(0, this._parsePercent(outlineBlur) || 0);\n        fillOpacity = outlineOpacity;\n        offsetX = this._parsePercent(outlineOffsetX) || 0;\n        offsetY = this._parsePercent(outlineOffsetY) || 0;\n      } else {\n        strokeWidth = Math.max(0, this._parsePercent(this.strokeWidth) || 0);\n        if (strokeWidth) {\n          strokeColor = this.strokeColor;\n          uniforms.uTroikaStrokeColor.value.set(strokeColor == null ? defaultStrokeColor : strokeColor);\n          strokeOpacity = this.strokeOpacity;\n          if (strokeOpacity == null) strokeOpacity = 1;\n        }\n        fillOpacity = this.fillOpacity;\n      }\n\n      uniforms.uTroikaDistanceOffset.value = distanceOffset;\n      uniforms.uTroikaPositionOffset.value.set(offsetX, offsetY);\n      uniforms.uTroikaBlurRadius.value = blurRadius;\n      uniforms.uTroikaStrokeWidth.value = strokeWidth;\n      uniforms.uTroikaStrokeOpacity.value = strokeOpacity;\n      uniforms.uTroikaFillOpacity.value = fillOpacity == null ? 1 : fillOpacity;\n      uniforms.uTroikaCurveRadius.value = this.curveRadius || 0;\n\n      let clipRect = this.clipRect;\n      if (clipRect && Array.isArray(clipRect) && clipRect.length === 4) {\n        uniforms.uTroikaClipRect.value.fromArray(clipRect);\n      } else {\n        // no clipping - choose a finite rect that shouldn't ever be reached by overflowing glyphs or outlines\n        const pad = (this.fontSize || 0.1) * 100;\n        uniforms.uTroikaClipRect.value.set(\n          blockBounds[0] - pad,\n          blockBounds[1] - pad,\n          blockBounds[2] + pad,\n          blockBounds[3] + pad\n        );\n      }\n      this.geometry.applyClipRect(uniforms.uTroikaClipRect.value);\n    }\n    uniforms.uTroikaSDFDebug.value = !!this.debugSDF;\n    material.polygonOffset = !!this.depthOffset;\n    material.polygonOffsetFactor = material.polygonOffsetUnits = this.depthOffset || 0;\n\n    // Shortcut for setting material color via `color` prop on the mesh; this is\n    // applied only to the derived material to avoid mutating a shared base material.\n    const color = isOutline ? (this.outlineColor || 0) : this.color;\n\n    if (color == null) {\n      delete material.color; //inherit from base\n    } else {\n      const colorObj = material.hasOwnProperty('color') ? material.color : (material.color = new Color());\n      if (color !== colorObj._input || typeof color === 'object') {\n        colorObj.set(colorObj._input = color);\n      }\n    }\n\n    // base orientation\n    let orient = this.orientation || defaultOrient;\n    if (orient !== material._orientation) {\n      let rotMat = uniforms.uTroikaOrient.value;\n      orient = orient.replace(/[^-+xyz]/g, '');\n      let match = orient !== defaultOrient && orient.match(/^([-+])([xyz])([-+])([xyz])$/);\n      if (match) {\n        let [, hSign, hAxis, vSign, vAxis] = match;\n        tempVec3a.set(0, 0, 0)[hAxis] = hSign === '-' ? 1 : -1;\n        tempVec3b.set(0, 0, 0)[vAxis] = vSign === '-' ? -1 : 1;\n        tempMat4.lookAt(origin, tempVec3a.cross(tempVec3b), tempVec3b);\n        rotMat.setFromMatrix4(tempMat4);\n      } else {\n        rotMat.identity();\n      }\n      material._orientation = orient;\n    }\n  }\n\n  _parsePercent(value) {\n    if (typeof value === 'string') {\n      let match = value.match(/^(-?[\\d.]+)%$/);\n      let pct = match ? parseFloat(match[1]) : NaN;\n      value = (isNaN(pct) ? 0 : pct / 100) * this.fontSize;\n    }\n    return value\n  }\n\n  /**\n   * Translate a point in local space to an x/y in the text plane.\n   */\n  localPositionToTextCoords(position, target = new Vector2()) {\n    target.copy(position); //simple non-curved case is 1:1\n    const r = this.curveRadius;\n    if (r) { //flatten the curve\n      target.x = Math.atan2(position.x, Math.abs(r) - Math.abs(position.z)) * Math.abs(r);\n    }\n    return target\n  }\n\n  /**\n   * Translate a point in world space to an x/y in the text plane.\n   */\n  worldPositionToTextCoords(position, target = new Vector2()) {\n    tempVec3a.copy(position);\n    return this.localPositionToTextCoords(this.worldToLocal(tempVec3a), target)\n  }\n\n  /**\n   * @override Custom raycasting to test against the whole text block's max rectangular bounds\n   * TODO is there any reason to make this more granular, like within individual line or glyph rects?\n   */\n  raycast(raycaster, intersects) {\n    const {textRenderInfo, curveRadius} = this;\n    if (textRenderInfo) {\n      const bounds = textRenderInfo.blockBounds;\n      const raycastMesh = curveRadius ? getCurvedRaycastMesh() : getFlatRaycastMesh();\n      const geom = raycastMesh.geometry;\n      const {position, uv} = geom.attributes;\n      for (let i = 0; i < uv.count; i++) {\n        let x = bounds[0] + (uv.getX(i) * (bounds[2] - bounds[0]));\n        const y = bounds[1] + (uv.getY(i) * (bounds[3] - bounds[1]));\n        let z = 0;\n        if (curveRadius) {\n          z = curveRadius - Math.cos(x / curveRadius) * curveRadius;\n          x = Math.sin(x / curveRadius) * curveRadius;\n        }\n        position.setXYZ(i, x, y, z);\n      }\n      geom.boundingSphere = this.geometry.boundingSphere;\n      geom.boundingBox = this.geometry.boundingBox;\n      raycastMesh.matrixWorld = this.matrixWorld;\n      raycastMesh.material.side = this.material.side;\n      tempArray.length = 0;\n      raycastMesh.raycast(raycaster, tempArray);\n      for (let i = 0; i < tempArray.length; i++) {\n        tempArray[i].object = this;\n        intersects.push(tempArray[i]);\n      }\n    }\n  }\n\n  copy(source) {\n    // Prevent copying the geometry reference so we don't end up sharing attributes between instances\n    const geom = this.geometry;\n    super.copy(source);\n    this.geometry = geom;\n\n    COPYABLE_PROPS.forEach(prop => {\n      this[prop] = source[prop];\n    });\n    return this\n  }\n\n  clone() {\n    return new this.constructor().copy(this)\n  }\n}\n\n\n// Create setters for properties that affect text layout:\nSYNCABLE_PROPS.forEach(prop => {\n  const privateKey = '_private_' + prop;\n  Object.defineProperty(Text.prototype, prop, {\n    get() {\n      return this[privateKey]\n    },\n    set(value) {\n      if (value !== this[privateKey]) {\n        this[privateKey] = value;\n        this._needsSync = true;\n      }\n    }\n  });\n});\n\n//=== Utility functions for dealing with carets and selection ranges ===//\n\n/**\n * @typedef {object} TextCaret\n * @property {number} x - x position of the caret\n * @property {number} y - y position of the caret's bottom\n * @property {number} height - height of the caret\n * @property {number} charIndex - the index in the original input string of this caret's target\n *   character; the caret will be for the position _before_ that character.\n */\n\n/**\n * Given a local x/y coordinate in the text block plane, find the nearest caret position.\n * @param {TroikaTextRenderInfo} textRenderInfo - a result object from TextBuilder#getTextRenderInfo\n * @param {number} x\n * @param {number} y\n * @return {TextCaret | null}\n */\nfunction getCaretAtPoint(textRenderInfo, x, y) {\n  let closestCaret = null;\n  const {caretHeight} = textRenderInfo;\n  const caretsByRow = groupCaretsByRow(textRenderInfo);\n\n  // Find nearest row by y first\n  let closestRowY = Infinity;\n  caretsByRow.forEach((carets, rowY) => {\n    if (Math.abs(y - (rowY + caretHeight / 2)) < Math.abs(y - (closestRowY + caretHeight / 2))) {\n      closestRowY = rowY;\n    }\n  });\n\n  // Then find closest caret by x within that row\n  caretsByRow.get(closestRowY).forEach(caret => {\n    if (!closestCaret || Math.abs(x - caret.x) < Math.abs(x - closestCaret.x)) {\n      closestCaret = caret;\n    }\n  });\n  return closestCaret\n}\n\n\nconst _rectsCache = new WeakMap();\n\n/**\n * Given start and end character indexes, return a list of rectangles covering all the\n * characters within that selection.\n * @param {TroikaTextRenderInfo} textRenderInfo\n * @param {number} start - index of the first char in the selection\n * @param {number} end - index of the first char after the selection\n * @return {Array<{left, top, right, bottom}> | null}\n */\nfunction getSelectionRects(textRenderInfo, start, end) {\n  let rects;\n  if (textRenderInfo) {\n    // Check cache - textRenderInfo is frozen so it's safe to cache based on it\n    let prevResult = _rectsCache.get(textRenderInfo);\n    if (prevResult && prevResult.start === start && prevResult.end === end) {\n      return prevResult.rects\n    }\n\n    const {caretPositions, caretHeight} = textRenderInfo;\n\n    // Normalize\n    if (end < start) {\n      const s = start;\n      start = end;\n      end = s;\n    }\n    start = Math.max(start, 0);\n    end = Math.min(end, caretPositions.length + 1);\n\n    // Build list of rects, expanding the current rect for all characters in a run and starting\n    // a new rect whenever reaching a new line or a new bidi direction\n    rects = [];\n    let currentRect = null;\n    for (let i = start; i < end; i++) {\n      const x1 = caretPositions[i * 3];\n      const x2 = caretPositions[i * 3 + 1];\n      const left = Math.min(x1, x2);\n      const right = Math.max(x1, x2);\n      const bottom = caretPositions[i * 3 + 2];\n      if (!currentRect || bottom !== currentRect.bottom || left > currentRect.right || right < currentRect.left) {\n        currentRect = {\n          left: Infinity,\n          right: -Infinity,\n          bottom: bottom,\n          top: bottom + caretHeight\n        };\n        rects.push(currentRect);\n      }\n      currentRect.left = Math.min(left, currentRect.left);\n      currentRect.right = Math.max(right, currentRect.right);\n    }\n\n    // Merge any overlapping rects, e.g. those formed by adjacent bidi runs\n    rects.sort((a, b) => b.bottom - a.bottom || a.left - b.left);\n    for (let i = rects.length - 1; i-- > 0;) {\n      const rectA = rects[i];\n      const rectB = rects[i + 1];\n      if (rectA.bottom === rectB.bottom && rectA.left <= rectB.right && rectA.right >= rectB.left) {\n        rectB.left = Math.min(rectB.left, rectA.left);\n        rectB.right = Math.max(rectB.right, rectA.right);\n        rects.splice(i, 1);\n      }\n    }\n\n    _rectsCache.set(textRenderInfo, {start, end, rects});\n  }\n  return rects\n}\n\nconst _caretsByRowCache = new WeakMap();\n\nfunction groupCaretsByRow(textRenderInfo) {\n  // textRenderInfo is frozen so it's safe to cache based on it\n  let caretsByRow = _caretsByRowCache.get(textRenderInfo);\n  if (!caretsByRow) {\n    const {caretPositions, caretHeight} = textRenderInfo;\n    caretsByRow = new Map();\n    for (let i = 0; i < caretPositions.length; i += 3) {\n      const rowY = caretPositions[i + 2];\n      let rowCarets = caretsByRow.get(rowY);\n      if (!rowCarets) {\n        caretsByRow.set(rowY, rowCarets = []);\n      }\n      rowCarets.push({\n        x: caretPositions[i],\n        y: rowY,\n        height: caretHeight,\n        charIndex: i / 3\n      });\n      // Add one more caret after the final char\n      if (i + 3 >= caretPositions.length) {\n        rowCarets.push({\n          x: caretPositions[i + 1],\n          y: rowY,\n          height: caretHeight,\n          charIndex: i / 3 + 1\n        });\n      }\n    }\n  }\n  _caretsByRowCache.set(textRenderInfo, caretsByRow);\n  return caretsByRow\n}\n\nexport { GlyphsGeometry, Text, configureTextBuilder, createTextDerivedMaterial, dumpSDFTextures, getCaretAtPoint, getSelectionRects, preloadFont, typesetterWorkerModule };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { Text as Text$1, preloadFont } from 'troika-three-text';\nimport { useThree } from '@react-three/fiber';\nimport { suspend } from 'suspend-react';\n\n// eslint-disable-next-line prettier/prettier\nconst Text = /*#__PURE__*/React.forwardRef(({\n  sdfGlyphSize = 64,\n  anchorX = 'center',\n  anchorY = 'middle',\n  font,\n  fontSize = 1,\n  children,\n  characters,\n  onSync,\n  ...props\n}, ref) => {\n  const invalidate = useThree(({\n    invalidate\n  }) => invalidate);\n  const [troikaMesh] = React.useState(() => new Text$1());\n  const [nodes, text] = React.useMemo(() => {\n    const n = [];\n    let t = '';\n    React.Children.forEach(children, child => {\n      if (typeof child === 'string' || typeof child === 'number') {\n        t += child;\n      } else {\n        n.push(child);\n      }\n    });\n    return [n, t];\n  }, [children]);\n  suspend(() => new Promise(res => preloadFont({\n    font,\n    characters\n  }, res)), ['troika-text', font, characters]);\n  React.useLayoutEffect(() => void troikaMesh.sync(() => {\n    invalidate();\n    if (onSync) onSync(troikaMesh);\n  }));\n  React.useEffect(() => {\n    return () => troikaMesh.dispose();\n  }, [troikaMesh]);\n  return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n    object: troikaMesh,\n    ref: ref,\n    font: font,\n    text: text,\n    anchorX: anchorX,\n    anchorY: anchorY,\n    fontSize: fontSize,\n    sdfGlyphSize: sdfGlyphSize\n  }, props), nodes);\n});\n\nexport { Text };\n","import React, { useMemo, useEffect, memo, useRef, Suspense, forwardRef, useLayoutEffect, useState } from 'react';\nimport { useThree, addEffect, addAfterEffect, addTail, useFrame, Canvas } from '@react-three/fiber';\nimport * as THREE from 'three';\nimport { MathUtils } from 'three';\nimport create from 'zustand';\nimport { styled } from '@stitches/react';\nimport { PauseIcon, TriangleDownIcon, TriangleUpIcon, LayersIcon, ImageIcon, RocketIcon, EyeOpenIcon, EyeNoneIcon, ButtonIcon, CubeIcon, VercelLogoIcon, ActivityLogIcon, LightningBoltIcon, RulerHorizontalIcon, LapTimerIcon, TextAlignJustifyIcon, BarChartIcon, MarginIcon, MinusIcon, DotIcon, DropdownMenuIcon } from '@radix-ui/react-icons';\nimport { Text } from '@react-three/drei';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { createRoot } from 'react-dom/client';\nimport { estimateBytesUsed } from 'three-stdlib';\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}\n\nconst overLimitFps = {\n  value: 0,\n  fpsLimit: 60,\n  isOverLimit: 0\n};\nconst average = arr => (arr === null || arr === void 0 ? void 0 : arr.reduce((a, b) => a + b, 0)) / arr.length;\nclass GLPerf {\n  constructor(settings = {}) {\n    this.names = [''];\n    this.finished = [];\n    this.gl = void 0;\n    this.extension = void 0;\n    this.query = void 0;\n    this.paused = false;\n    this.overClock = false;\n    this.queryHasResult = false;\n    this.queryCreated = false;\n    this.isWebGL2 = true;\n    this.memAccums = [];\n    this.gpuAccums = [];\n    this.activeAccums = [];\n    this.logsAccums = {\n      mem: [],\n      gpu: [],\n      cpu: [],\n      fps: [],\n      fpsFixed: []\n    };\n    this.fpsChart = [];\n    this.gpuChart = [];\n    this.cpuChart = [];\n    this.memChart = [];\n    this.paramLogger = () => {};\n    this.glFinish = () => {};\n    this.chartLogger = () => {};\n    this.chartLen = 60;\n    this.maxMemory = 1500;\n    this.chartHz = 10;\n    this.startCpuProfiling = false;\n    this.lastCalculateFixed = 0;\n    this.chartFrame = 0;\n    this.gpuTimeProcess = 0;\n    this.chartTime = 0;\n    this.activeQueries = 0;\n    this.circularId = 0;\n    this.detected = 0;\n    this.frameId = 0;\n    this.rafId = 0;\n    this.idleCbId = 0;\n    this.checkQueryId = 0;\n    this.uuid = undefined;\n    this.currentCpu = 0;\n    this.currentMem = 0;\n    this.paramFrame = 0;\n    this.paramTime = 0;\n    this.now = () => {};\n    this.t0 = 0;\n    window.GLPerf = window.GLPerf || {};\n    Object.assign(this, settings);\n    this.fpsChart = new Array(this.chartLen).fill(0);\n    this.gpuChart = new Array(this.chartLen).fill(0);\n    this.cpuChart = new Array(this.chartLen).fill(0);\n    this.memChart = new Array(this.chartLen).fill(0);\n    this.now = () => window.performance && window.performance.now ? window.performance.now() : Date.now();\n    this.initGpu();\n    this.is120hz();\n  }\n  initGpu() {\n    this.uuid = MathUtils.generateUUID();\n    if (this.gl) {\n      this.isWebGL2 = true;\n      if (!this.extension) {\n        this.extension = this.gl.getExtension('EXT_disjoint_timer_query_webgl2');\n      }\n      if (this.extension === null) {\n        this.isWebGL2 = false;\n      }\n    }\n  }\n  is120hz() {\n    let n = 0;\n    const loop = t => {\n      if (++n < 20) {\n        this.rafId = window.requestAnimationFrame(loop);\n      } else {\n        this.detected = Math.ceil(1e3 * n / (t - this.t0) / 70);\n        window.cancelAnimationFrame(this.rafId);\n      }\n      if (!this.t0) this.t0 = t;\n    };\n    this.rafId = window.requestAnimationFrame(loop);\n  }\n  addUI(name) {\n    if (this.names.indexOf(name) === -1) {\n      this.names.push(name);\n      this.gpuAccums.push(0);\n      this.activeAccums.push(false);\n    }\n  }\n  nextFps(d) {\n    const goal = 1000 / 60;\n    const elapsed = goal - d.timeRemaining();\n    const fps = goal * overLimitFps.fpsLimit / 10 / elapsed;\n    if (fps < 0) return;\n    overLimitFps.value = fps;\n    if (overLimitFps.isOverLimit < 25) {\n      overLimitFps.isOverLimit++;\n    } else {\n      usePerfStore.setState({\n        overclockingFps: true\n      });\n    }\n  }\n  nextFrame(now) {\n    this.frameId++;\n    const t = now || this.now();\n    let duration = t - this.paramTime;\n    let gpu = 0;\n    if (this.frameId <= 1) {\n      this.paramFrame = this.frameId;\n      this.paramTime = t;\n    } else {\n      if (t >= this.paramTime) {\n        this.maxMemory = window.performance.memory ? window.performance.memory.jsHeapSizeLimit / 1048576 : 0;\n        const frameCount = this.frameId - this.paramFrame;\n        const fpsFixed = frameCount * 1000 / duration;\n        const fps = usePerfStore.getState().overclockingFps ? overLimitFps.value : fpsFixed;\n        gpu = this.isWebGL2 ? this.gpuAccums[0] : this.gpuAccums[0] / duration;\n        if (this.isWebGL2) {\n          this.gpuAccums[0] = 0;\n        } else {\n          Promise.all(this.finished).then(() => {\n            this.gpuAccums[0] = 0;\n            this.finished = [];\n          });\n        }\n        this.currentMem = Math.round(window.performance && window.performance.memory ? window.performance.memory.usedJSHeapSize / 1048576 : 0);\n        if (window.performance && this.startCpuProfiling) {\n          window.performance.mark(\"cpu-finished\");\n          const cpuMeasure = performance.measure(\"cpu-duration\", \"cpu-started\", \"cpu-finished\");\n          this.currentCpu = cpuMeasure.duration;\n          this.logsAccums.cpu.push(this.currentCpu);\n          this.startCpuProfiling = false;\n        }\n        this.logsAccums.mem.push(this.currentMem);\n        this.logsAccums.fpsFixed.push(fpsFixed);\n        this.logsAccums.fps.push(fps);\n        this.logsAccums.gpu.push(gpu);\n        if (this.overClock && typeof window.requestIdleCallback !== 'undefined') {\n          if (overLimitFps.isOverLimit > 0 && fps > fpsFixed) {\n            overLimitFps.isOverLimit--;\n          } else if (usePerfStore.getState().overclockingFps) {\n            usePerfStore.setState({\n              overclockingFps: false\n            });\n          }\n        }\n        if (t >= this.paramTime + 180) {\n          this.paramLogger({\n            cpu: average(this.logsAccums.cpu),\n            gpu: average(this.logsAccums.gpu),\n            mem: average(this.logsAccums.mem),\n            fps: average(this.logsAccums.fps),\n            duration: Math.round(duration),\n            maxMemory: this.maxMemory,\n            frameCount\n          });\n          this.logsAccums.mem = [];\n          this.logsAccums.fps = [];\n          this.logsAccums.gpu = [];\n          this.logsAccums.cpu = [];\n          this.paramFrame = this.frameId;\n          this.paramTime = t;\n        }\n        if (this.overClock) {\n          if (t - this.lastCalculateFixed >= 2 * 1000) {\n            this.lastCalculateFixed = now;\n            overLimitFps.fpsLimit = Math.round(average(this.logsAccums.fpsFixed) / 10) * 100;\n            usePerfStore.setState({\n              fpsLimit: overLimitFps.fpsLimit / 10\n            });\n            this.logsAccums.fpsFixed = [];\n            this.paramFrame = this.frameId;\n            this.paramTime = t;\n          }\n        }\n      }\n    }\n    if (!this.detected || !this.chartFrame) {\n      this.chartFrame = this.frameId;\n      this.chartTime = t;\n      this.circularId = 0;\n    } else {\n      const timespan = t - this.chartTime;\n      let hz = this.chartHz * timespan / 1e3;\n      while (--hz > 0 && this.detected) {\n        const frameCount = this.frameId - this.chartFrame;\n        const fpsFixed = frameCount / timespan * 1e3;\n        const fps = usePerfStore.getState().overclockingFps ? overLimitFps.value : fpsFixed;\n        this.fpsChart[this.circularId % this.chartLen] = fps;\n        const memS = 1000 / this.currentMem;\n        const cpuS = this.currentCpu;\n        const gpuS = (this.isWebGL2 ? this.gpuAccums[1] * 2 : Math.round(this.gpuAccums[1] / duration * 100)) + 4;\n        if (gpuS > 0) {\n          this.gpuChart[this.circularId % this.chartLen] = gpuS;\n        }\n        if (cpuS > 0) {\n          this.cpuChart[this.circularId % this.chartLen] = cpuS;\n        }\n        if (memS > 0) {\n          this.memChart[this.circularId % this.chartLen] = memS;\n        }\n        for (let i = 0; i < this.names.length; i++) {\n          this.chartLogger({\n            i,\n            data: {\n              fps: this.fpsChart,\n              gpu: this.gpuChart,\n              cpu: this.cpuChart,\n              mem: this.memChart\n            },\n            circularId: this.circularId\n          });\n        }\n        this.circularId++;\n        this.chartFrame = this.frameId;\n        this.chartTime = t;\n      }\n    }\n  }\n  startGpu() {\n    const gl = this.gl;\n    const ext = this.extension;\n    if (!gl || !ext) return;\n    if (this.isWebGL2) {\n      let available = false;\n      let disjoint, ns;\n      if (this.query) {\n        this.queryHasResult = false;\n        let query = this.query;\n        available = gl.getQueryParameter(query, gl.QUERY_RESULT_AVAILABLE);\n        disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n        if (available && !disjoint) {\n          ns = gl.getQueryParameter(this.query, gl.QUERY_RESULT);\n          const ms = ns * 1e-6;\n          if (available && ms > 0) {\n            if (!disjoint) {\n              this.activeAccums.forEach((_active, i) => {\n                this.gpuAccums[i] = ms;\n              });\n            }\n          }\n        }\n      }\n      if (available || !this.query) {\n        this.queryCreated = true;\n        this.query = gl.createQuery();\n        gl.beginQuery(ext.TIME_ELAPSED_EXT, this.query);\n      }\n    }\n  }\n  endGpu() {\n    const ext = this.extension;\n    const gl = this.gl;\n    if (this.isWebGL2 && this.queryCreated && gl.getQuery(ext.TIME_ELAPSED_EXT, gl.CURRENT_QUERY)) {\n      gl.endQuery(ext.TIME_ELAPSED_EXT);\n    }\n  }\n  begin(name) {\n    this.startGpu();\n    this.updateAccums(name);\n  }\n  end(name) {\n    this.endGpu();\n    this.updateAccums(name);\n  }\n  updateAccums(name) {\n    let nameId = this.names.indexOf(name);\n    if (nameId === -1) {\n      nameId = this.names.length;\n      this.addUI(name);\n    }\n    const t = this.now();\n    this.activeAccums[nameId] = !this.activeAccums[nameId];\n    this.t0 = t;\n  }\n}\n\nconst countGeoDrawCalls = programs => {\n  programs.forEach((program, _pkey) => {\n    const {\n      meshes\n    } = program;\n    if (!meshes) {\n      return;\n    }\n    let drawCounts = {\n      total: 0,\n      type: 'Triangle',\n      data: []\n    };\n    Object.keys(meshes).forEach(key => {\n      const mesh = meshes[key];\n      const {\n        geometry,\n        material\n      } = mesh;\n      let index = geometry.index;\n      const position = geometry.attributes.position;\n      if (!position) return;\n      let rangeFactor = 1;\n      if (material.wireframe === true) {\n        rangeFactor = 0;\n      }\n      const dataCount = index !== null ? index.count : position.count;\n      const rangeStart = geometry.drawRange.start * rangeFactor;\n      const rangeCount = geometry.drawRange.count * rangeFactor;\n      const drawStart = rangeStart;\n      const drawEnd = Math.min(dataCount, rangeStart + rangeCount) - 1;\n      let countInstanceRatio = 1;\n      const instanceCount = mesh.count || 1;\n      let type = 'Triangle';\n      let mostDrawCalls = 0;\n      if (mesh.isMesh) {\n        if (material.wireframe === true) {\n          type = 'Line';\n          countInstanceRatio = countInstanceRatio / 2;\n        } else {\n          type = 'Triangle';\n          countInstanceRatio = countInstanceRatio / 3;\n        }\n      } else if (mesh.isLine) {\n        type = 'Line';\n        if (mesh.isLineSegments) {\n          countInstanceRatio = countInstanceRatio / 2;\n        } else if (mesh.isLineLoop) {\n          countInstanceRatio = countInstanceRatio;\n        } else {\n          countInstanceRatio = countInstanceRatio - 1;\n        }\n      } else if (mesh.isPoints) {\n        type = 'Point';\n        countInstanceRatio = countInstanceRatio;\n      } else if (mesh.isSprite) {\n        type = 'Triangle';\n        countInstanceRatio = countInstanceRatio / 3;\n      }\n      const drawCount = Math.round(Math.max(0, drawEnd - drawStart + 1) * (countInstanceRatio * instanceCount));\n      if (drawCount > mostDrawCalls) {\n        mostDrawCalls = drawCount;\n        drawCounts.type = type;\n      }\n      drawCounts.total += drawCount;\n      drawCounts.data.push({\n        drawCount,\n        type\n      });\n      mesh.userData.drawCount = {\n        type,\n        count: drawCount\n      };\n    });\n    program.drawCounts = drawCounts;\n  });\n};\n\nconst updateMatrixWorldTemp = THREE.Object3D.prototype.updateMatrixWorld;\nconst updateWorldMatrixTemp = THREE.Object3D.prototype.updateWorldMatrix;\nconst updateMatrixTemp = THREE.Object3D.prototype.updateMatrix;\nlet matriceWorldCount = {\n  value: 0\n};\nlet matriceCount = {\n  value: 0\n};\nconst isUUID = uuid => {\n  let s = '' + uuid;\n  s = s.match('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');\n  if (s === null) {\n    return false;\n  }\n  return true;\n};\nconst addMuiPerfID = (material, currentObjectWithMaterials) => {\n  if (!material.defines) {\n    material.defines = {};\n  }\n  if (material.defines && !material.defines.muiPerf) {\n    material.defines = Object.assign(material.defines || {}, {\n      muiPerf: material.uuid\n    });\n  }\n  const uuid = material.uuid;\n  if (!currentObjectWithMaterials[uuid]) {\n    currentObjectWithMaterials[uuid] = {\n      meshes: {},\n      material: material\n    };\n    material.needsUpdate = true;\n  }\n  material.needsUpdate = false;\n  return uuid;\n};\nconst getMUIIndex = muid => muid === 'muiPerf';\nconst usePerfStore = create(set => ({\n  log: null,\n  paused: false,\n  triggerProgramsUpdate: 0,\n  customData: 0,\n  fpsLimit: 60,\n  overclockingFps: false,\n  chart: {\n    data: {\n      fps: [],\n      cpu: [],\n      gpu: [],\n      mem: []\n    },\n    circularId: 0\n  },\n  gl: undefined,\n  objectWithMaterials: null,\n  scene: undefined,\n  programs: new Map(),\n  sceneLength: undefined,\n  tab: 'infos'\n}));\nconst setCustomData = customData => {\n  usePerfStore.setState({\n    customData\n  });\n};\nconst getCustomData = () => {\n  return usePerfStore.getState().customData;\n};\nconst usePerfFunc = () => {\n  var _usePerfStore;\n  return {\n    log: usePerfStore(state => state.log),\n    gl: (_usePerfStore = usePerfStore(state => state.gl)) === null || _usePerfStore === void 0 ? void 0 : _usePerfStore.info,\n    programs: usePerfStore(state => state.programs)\n  };\n};\nconst Headless = ({\n  trackCPU,\n  overClock,\n  chart,\n  deepAnalyze,\n  matrixUpdate\n}) => {\n  const {\n    gl,\n    scene\n  } = useThree();\n  usePerfStore.setState({\n    gl,\n    scene\n  });\n  const PerfLib = useMemo(() => {\n    const PerfLib = new GLPerf({\n      trackGPU: true,\n      overClock: overClock,\n      chartLen: chart ? chart.length : 120,\n      chartHz: chart ? chart.hz : 60,\n      gl: gl.getContext(),\n      chartLogger: chart => {\n        usePerfStore.setState({\n          chart\n        });\n      },\n      paramLogger: logger => {\n        usePerfStore.setState({\n          log: {\n            maxMemory: logger.maxMemory,\n            gpu: logger.gpu,\n            cpu: logger.cpu,\n            mem: logger.mem,\n            fps: logger.fps,\n            totalTime: logger.duration,\n            frameCount: logger.frameCount\n          }\n        });\n      }\n    });\n    const callbacks = new Map();\n    const callbacksAfter = new Map();\n    Object.defineProperty(THREE.Scene.prototype, 'onBeforeRender', {\n      get() {\n        return (...args) => {\n          var _callbacks$get;\n          if (PerfLib) {\n            PerfLib.begin('profiler');\n          }\n          (_callbacks$get = callbacks.get(this)) === null || _callbacks$get === void 0 ? void 0 : _callbacks$get(...args);\n        };\n      },\n      set(callback) {\n        callbacks.set(this, callback);\n      },\n      configurable: true\n    });\n    Object.defineProperty(THREE.Scene.prototype, 'onAfterRender', {\n      get() {\n        return (...args) => {\n          var _callbacksAfter$get;\n          if (PerfLib) {\n            PerfLib.end('profiler');\n          }\n          (_callbacksAfter$get = callbacksAfter.get(this)) === null || _callbacksAfter$get === void 0 ? void 0 : _callbacksAfter$get(...args);\n        };\n      },\n      set(callback) {\n        callbacksAfter.set(this, callback);\n      },\n      configurable: true\n    });\n    return PerfLib;\n  }, []);\n  useEffect(() => {\n    if (PerfLib) {\n      PerfLib.overClock = overClock || false;\n      if (overClock === false) {\n        usePerfStore.setState({\n          overclockingFps: false\n        });\n        overLimitFps.value = 0;\n        overLimitFps.isOverLimit = 0;\n      }\n      PerfLib.chartHz = (chart === null || chart === void 0 ? void 0 : chart.hz) || 60;\n      PerfLib.chartLen = (chart === null || chart === void 0 ? void 0 : chart.length) || 120;\n    }\n  }, [overClock, PerfLib, chart === null || chart === void 0 ? void 0 : chart.length, chart === null || chart === void 0 ? void 0 : chart.hz]);\n  useEffect(() => {\n    if (matrixUpdate) {\n      THREE.Object3D.prototype.updateMatrixWorld = function () {\n        if (this.matrixWorldNeedsUpdate || arguments[0]) {\n          matriceWorldCount.value++;\n        }\n        updateMatrixWorldTemp.apply(this, arguments);\n      };\n      THREE.Object3D.prototype.updateWorldMatrix = function () {\n        matriceWorldCount.value++;\n        updateWorldMatrixTemp.apply(this, arguments);\n      };\n      THREE.Object3D.prototype.updateMatrix = function () {\n        matriceCount.value++;\n        updateMatrixTemp.apply(this, arguments);\n      };\n    }\n    gl.info.autoReset = false;\n    let effectSub = null;\n    let afterEffectSub = null;\n    if (!gl.info) return;\n    effectSub = addEffect(function preRafR3FPerf() {\n      if (usePerfStore.getState().paused) {\n        usePerfStore.setState({\n          paused: false\n        });\n      }\n      if (window.performance) {\n        window.performance.mark(\"cpu-started\");\n        PerfLib.startCpuProfiling = true;\n      }\n      matriceCount.value -= 1;\n      matriceWorldCount.value = 0;\n      matriceCount.value = 0;\n      if (gl.info) {\n        gl.info.reset();\n      }\n    });\n    afterEffectSub = addAfterEffect(function postRafR3FPerf() {\n      if (PerfLib && !PerfLib.paused) {\n        PerfLib.nextFrame(window.performance.now());\n        if (overClock && typeof window.requestIdleCallback !== 'undefined') {\n          PerfLib.idleCbId = requestIdleCallback(PerfLib.nextFps);\n        }\n      }\n      if (deepAnalyze) {\n        var _gl$info, _gl$info$programs;\n        const currentObjectWithMaterials = {};\n        const programs = new Map();\n        scene.traverse(function deepAnalyzeR3FPerf(object) {\n          if (object instanceof THREE.Mesh || object instanceof THREE.Points) {\n            if (object.material) {\n              let uuid = object.material.uuid;\n              const isTroika = Array.isArray(object.material) && object.material.length > 1;\n              if (isTroika) {\n                uuid = addMuiPerfID(object.material[1], currentObjectWithMaterials);\n              } else {\n                uuid = addMuiPerfID(object.material, currentObjectWithMaterials);\n              }\n              currentObjectWithMaterials[uuid].meshes[object.uuid] = object;\n            }\n          }\n        });\n        gl === null || gl === void 0 ? void 0 : (_gl$info = gl.info) === null || _gl$info === void 0 ? void 0 : (_gl$info$programs = _gl$info.programs) === null || _gl$info$programs === void 0 ? void 0 : _gl$info$programs.forEach(program => {\n          const cacheKeySplited = program.cacheKey.split(',');\n          const muiPerfTracker = cacheKeySplited[cacheKeySplited.findIndex(getMUIIndex) + 1];\n          if (isUUID(muiPerfTracker) && currentObjectWithMaterials[muiPerfTracker]) {\n            const {\n              material,\n              meshes\n            } = currentObjectWithMaterials[muiPerfTracker];\n            programs.set(muiPerfTracker, {\n              program,\n              material,\n              meshes,\n              drawCounts: {\n                total: 0,\n                type: 'triangle',\n                data: []\n              },\n              expand: false,\n              visible: true\n            });\n          }\n        });\n        if (programs.size !== usePerfStore.getState().programs.size) {\n          countGeoDrawCalls(programs);\n          usePerfStore.setState({\n            programs: programs,\n            triggerProgramsUpdate: usePerfStore.getState().triggerProgramsUpdate++\n          });\n        }\n      }\n    });\n    return () => {\n      if (PerfLib) {\n        if (typeof window.cancelIdleCallback !== 'undefined') {\n          window.cancelIdleCallback(PerfLib.idleCbId);\n        }\n        window.cancelAnimationFrame(PerfLib.rafId);\n        window.cancelAnimationFrame(PerfLib.checkQueryId);\n      }\n      if (matrixUpdate) {\n        THREE.Object3D.prototype.updateMatrixWorld = updateMatrixTemp;\n      }\n      effectSub();\n      afterEffectSub();\n    };\n  }, [PerfLib, gl, trackCPU, chart, matrixUpdate]);\n  useEffect(() => {\n    const unsub = addTail(function postRafTailR3FPerf() {\n      if (PerfLib) {\n        PerfLib.paused = true;\n        matriceCount.value = 0;\n        matriceWorldCount.value = 0;\n        usePerfStore.setState({\n          paused: true,\n          log: {\n            maxMemory: 0,\n            gpu: 0,\n            mem: 0,\n            cpu: 0,\n            fps: 0,\n            totalTime: 0,\n            frameCount: 0\n          }\n        });\n      }\n      return false;\n    });\n    return () => {\n      unsub();\n    };\n  }, []);\n  return null;\n};\n\nconst PerfS = styled('div', {\n  position: 'fixed',\n  top: 0,\n  right: 0,\n  zIndex: 9999,\n  fontFamily: `-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif`,\n  backgroundColor: 'rgba(36, 36, 36, .9)',\n  color: '#fff',\n  margin: 0,\n  minHeight: '100px',\n  padding: '4px 0',\n  '-webkit-font-smoothing': 'antialiased',\n  '-moz-osx-font-smoothing': 'grayscale',\n  userSelect: 'none',\n  '&.top-left': {\n    right: 'initial',\n    left: 0\n  },\n  '&.bottom-left': {\n    right: 'initial',\n    top: 'initial',\n    bottom: 0,\n    left: 0,\n    '.__perf_toggle': {\n      top: '-20px',\n      bottom: 'initial'\n    }\n  },\n  '&.bottom-right': {\n    top: 'initial',\n    bottom: 0,\n    '.__perf_toggle': {\n      top: '-20px',\n      bottom: 'initial'\n    }\n  },\n  '&.minimal': {\n    backgroundColor: 'rgba(36, 36, 36, .75)'\n  },\n  '*': {\n    margin: '0',\n    padding: '0',\n    border: '0',\n    fontSize: '100%',\n    lineHeight: '1',\n    verticalAlign: 'baseline'\n  }\n});\nconst PerfSmallI = styled('small', {\n  position: 'absolute',\n  right: 0,\n  fontSize: '10px'\n});\nconst PerfI = styled('div', {\n  display: 'inline-flex',\n  fontStyle: 'normal',\n  padding: 0,\n  lineHeight: '13px',\n  fontSize: '14px',\n  width: '62px',\n  position: 'relative',\n  pointerEvents: 'auto',\n  cursor: 'default',\n  fontWeight: 500,\n  letterSpacing: '0px',\n  textAlign: 'left',\n  height: '29px',\n  whiteSpace: 'nowrap',\n  justifyContent: 'space-evenly',\n  fontVariantNumeric: 'tabular-nums',\n  small: {\n    paddingLeft: '12px'\n  },\n  svg: {\n    padding: 0,\n    color: 'rgba(145, 145, 145, 0.3)',\n    fontSize: '40px',\n    position: 'absolute',\n    zIndex: 1,\n    maxHeight: '20px',\n    left: ' 50%',\n    marginLeft: '-23px',\n    top: '4px'\n  }\n});\nconst PerfB = styled('span', {\n  verticalAlign: 'bottom',\n  position: 'absolute',\n  bottom: '5px',\n  color: 'rgba(101, 197, 188, 1)',\n  textAlign: 'right',\n  letterSpacing: '1px',\n  fontSize: '8px',\n  fontWeight: '500',\n  width: '60px'\n});\nconst PerfIContainer = styled('div', {\n  display: 'flex'\n});\nconst ProgramHeader = styled('div', {\n  backgroundColor: '#404040',\n  padding: '6px',\n  display: 'block',\n  fontSize: '12px',\n  marginBottom: '6px',\n  cursor: 'pointer',\n  '*': {\n    cursor: 'pointer !important'\n  },\n  '> span': {},\n  small: {\n    fontSize: '9px'\n  },\n  '> b': {\n    marginRight: '4px',\n    cursor: 'pointer'\n  }\n});\nconst Graph = styled('div', {\n  height: '66px',\n  overflow: 'hidden',\n  position: 'absolute',\n  pointerEvents: 'none',\n  display: 'flex',\n  top: '0px',\n  justifyContent: 'center',\n  width: '100%',\n  minWidth: '310px',\n  margin: '0 auto',\n  canvas: {\n    background: 'transparent !important',\n    position: 'absolute !important'\n  }\n});\nconst Graphpc = styled('div', {\n  textAlign: 'center',\n  fontWeight: 700,\n  fontSize: '12px',\n  lineHeight: '12px',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  verticalAlign: 'middle',\n  color: '#f1f1f1',\n  padding: '7px',\n  width: '100%',\n  backgroundColor: 'rgba(36, 36, 37, 0.8)',\n  zIndex: 1,\n  position: 'absolute',\n  height: '100%'\n});\nconst Toggle = styled('div', {\n  pointerEvents: 'auto',\n  justifyContent: 'center',\n  cursor: 'pointer',\n  fontSize: '12px',\n  backgroundColor: 'rgb(41, 43, 45)',\n  marginTop: '6px',\n  width: 'auto',\n  margin: '0',\n  color: 'rgba(145, 145, 145, 1)',\n  textAlign: 'center',\n  display: 'inline-block',\n  verticalAlign: 'middle',\n  padding: '4px 6px',\n  '&.__perf_toggle_tab_active': {\n    backgroundColor: 'rgb(31 31 31)'\n  },\n  svg: {\n    width: '12px',\n    height: '12px',\n    float: 'left'\n  }\n});\nconst ToggleVisible = styled('div', {\n  pointerEvents: 'auto',\n  justifyContent: 'center',\n  cursor: 'pointer',\n  fontSize: '12px',\n  float: 'right',\n  backgroundColor: 'rgb(41, 43, 45)',\n  width: 'auto',\n  margin: '0',\n  color: 'rgba(145, 145, 145, 1)',\n  textAlign: 'center',\n  display: 'inline-block',\n  verticalAlign: 'middle',\n  padding: '4px 6px',\n  '&.__perf_toggle_tab_active': {\n    backgroundColor: 'rgb(31 31 31)'\n  },\n  svg: {\n    width: '12px',\n    height: '12px',\n    float: 'left'\n  }\n});\nconst ProgramGeo = styled('div', {\n  padding: '4px 6px',\n  fontSize: '12px',\n  pointerEvents: 'auto'\n});\nconst ProgramTitle = styled('span', {\n  fontWeight: 'bold',\n  letterSpacing: '0.08em',\n  maxWidth: '145px',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  display: 'inline-block',\n  verticalAlign: 'middle',\n  fontSize: '11px',\n  marginRight: '10px'\n});\nconst ContainerScroll = styled('div', {\n  maxHeight: '50vh',\n  overflowY: 'auto',\n  marginTop: '38px'\n});\nconst ProgramsContainer = styled('div', {\n  marginTop: '0'\n});\nconst ProgramsULHeader = styled('div', {\n  display: 'flex',\n  position: 'relative',\n  fontWeight: 'bold',\n  color: '#fff',\n  lineHeight: '14px',\n  svg: {\n    marginRight: '4px',\n    display: 'inline-block'\n  }\n});\nconst ProgramsUL = styled('ul', {\n  display: 'block',\n  position: 'relative',\n  paddingLeft: '10px',\n  margin: '6px 6px',\n  img: {\n    maxHeight: '60px',\n    maxWidth: '100%',\n    margin: '6px auto',\n    display: 'block'\n  },\n  '&:after': {\n    content: '',\n    position: 'absolute',\n    left: '0px',\n    top: '0px',\n    width: '1px',\n    height: '100%',\n    backgroundColor: 'grey',\n    transform: 'translateX(-50%)',\n    maxHeight: '50vh',\n    overflowY: 'auto'\n  },\n  li: {\n    borderBottom: '1px solid #313131',\n    display: 'block',\n    padding: '4px',\n    margin: 0,\n    lineHeight: 1,\n    verticalAlign: 'middle',\n    height: '24px'\n  },\n  b: {\n    fontWeight: 'bold'\n  },\n  small: {\n    textAlign: 'revert',\n    letterSpacing: '1px',\n    fontSize: '10px',\n    fontWeight: '500',\n    marginLeft: '2px',\n    color: 'rgb(101, 197, 188)'\n  }\n});\nconst ProgramConsole = styled('button', {\n  fontWeight: 'bold',\n  letterSpacing: '0.02em',\n  backgroundColor: 'rgb(41, 43, 45)',\n  color: 'rgb(211, 211, 211)',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  cursor: 'pointer',\n  display: 'block',\n  verticalAlign: 'middle',\n  fontSize: '11px',\n  padding: '5px',\n  margin: '4px auto'\n});\nconst ToggleContainer = styled('div', {\n  display: 'flex',\n  justifyContent: 'center',\n  cursor: 'pointer',\n  fontSize: '12px',\n  backgroundColor: 'rgb(41, 43, 45)',\n  marginTop: '6px',\n  width: 'auto',\n  margin: '0 auto',\n  color: 'rgba(145, 145, 145, 1)',\n  textAlign: 'center',\n  position: 'absolute',\n  right: 0,\n  bottom: ' -20px',\n  svg: {\n    width: '12px',\n    height: '12px',\n    float: 'left'\n  }\n});\nconst ProgramsGeoLi = styled('li', {\n  display: 'flex !important',\n  height: 'auto !important',\n  span: {\n    height: '40px',\n    display: 'block',\n    position: 'relative'\n  },\n  b: {\n    paddingLeft: '12px'\n  }\n});\n\nconst TextHighHZ = memo(({\n  isPerf,\n  color,\n  colorBlind,\n  customData,\n  isMemory,\n  isShadersInfo,\n  metric,\n  fontSize,\n  offsetY: _offsetY = 0,\n  offsetX,\n  round,\n  hasInstance\n}) => {\n  const {\n    width: w,\n    height: h\n  } = useThree(s => s.viewport);\n  const fpsRef = useRef(null);\n  const fpsInstanceRef = useRef(null);\n  useFrame(function updateR3FPerfText() {\n    const gl = usePerfStore.getState().gl;\n    const log = usePerfStore.getState().log;\n    if (!log || !fpsRef.current) return;\n    if (customData) {\n      fpsRef.current.text = usePerfStore.getState().customData;\n    }\n    if (!metric) return;\n    let info = log[metric];\n    if (isShadersInfo) {\n      var _gl$info$programs;\n      info = (_gl$info$programs = gl.info.programs) === null || _gl$info$programs === void 0 ? void 0 : _gl$info$programs.length;\n    } else if (metric === 'matriceCount') {\n      info = matriceCount.value;\n    } else if (!isPerf && gl.info.render) {\n      const infos = isMemory ? gl.info.memory : gl.info.render;\n      info = infos[metric];\n    }\n    if (metric === 'fps') {\n      fpsRef.current.color = usePerfStore.getState().overclockingFps ? colorsGraph(colorBlind).overClock.toString() : `rgb(${colorsGraph(colorBlind).fps.toString()})`;\n    }\n    fpsRef.current.text = (Math.round(info * Math.pow(10, round)) / Math.pow(10, round)).toFixed(round);\n    if (hasInstance) {\n      const infosInstance = gl.info.instance;\n      if (typeof infosInstance === 'undefined' && metric !== 'matriceCount') {\n        return;\n      }\n      let infoInstance;\n      if (metric === 'matriceCount') {\n        infoInstance = matriceWorldCount.value;\n      } else {\n        infoInstance = infosInstance[metric];\n      }\n      if (infoInstance > 0) {\n        fpsRef.current.fontSize = fontSize / 1.15;\n        fpsInstanceRef.current.fontSize = info > 0 ? fontSize / 1.4 : fontSize;\n        fpsRef.current.position.y = h / 2 - _offsetY - fontSize / 1.9;\n        fpsInstanceRef.current.text = ' ±\t' + (Math.round(infoInstance * Math.pow(10, round)) / Math.pow(10, round)).toFixed(round);\n      } else {\n        fpsRef.current.position.y = h / 2 - _offsetY - fontSize;\n        fpsRef.current.fontSize = fontSize;\n      }\n    }\n    matriceCount.value -= 1;\n    fpsRef.current.updateMatrix();\n    fpsRef.current.matrixWorld.copy(fpsRef.current.matrix);\n  });\n  return jsxs(Suspense, {\n    fallback: null,\n    children: [jsxs(Text, {\n      textAlign: \"justify\",\n      matrixAutoUpdate: false,\n      ref: fpsRef,\n      fontSize: fontSize,\n      position: [-w / 2 + offsetX + fontSize, h / 2 - _offsetY - fontSize, 0],\n      color: color,\n      characters: \"0123456789\",\n      onUpdate: self => {\n        self.updateMatrix();\n        matriceCount.value -= 1;\n        self.matrixWorld.copy(self.matrix);\n      },\n      children: [jsx(\"meshBasicMaterial\", {\n        blending: THREE.NormalBlending\n      }), \"0\"]\n    }), hasInstance && jsx(Text, {\n      textAlign: \"justify\",\n      matrixAutoUpdate: false,\n      ref: fpsInstanceRef,\n      fontSize: 8,\n      position: [-w / 2 + offsetX + fontSize, h / 2 - _offsetY - fontSize * 1.15, 0],\n      color: 'lightgrey',\n      characters: \"0123456789\",\n      onUpdate: self => {\n        self.updateMatrix();\n        matriceCount.value -= 1;\n        self.matrixWorld.copy(self.matrix);\n      },\n      children: jsx(\"meshBasicMaterial\", {\n        blending: THREE.NormalBlending\n      })\n    })]\n  });\n});\nconst TextsHighHZ = ({\n  colorBlind,\n  customData,\n  minimal,\n  matrixUpdate\n}) => {\n  const fontSize = 14;\n  return jsxs(Fragment, {\n    children: [jsx(TextHighHZ, {\n      colorBlind: colorBlind,\n      color: `rgb(${colorsGraph(colorBlind).fps.toString()})`,\n      isPerf: true,\n      metric: \"fps\",\n      fontSize: fontSize,\n      offsetX: 140,\n      round: 0\n    }), jsx(TextHighHZ, {\n      color: `rgb(${colorsGraph(colorBlind).cpu.toString()})`,\n      isPerf: true,\n      metric: \"cpu\",\n      fontSize: fontSize,\n      offsetX: 72,\n      round: 3\n    }), jsx(TextHighHZ, {\n      color: `rgb(${colorsGraph(colorBlind).gpu.toString()})`,\n      isPerf: true,\n      metric: \"gpu\",\n      fontSize: fontSize,\n      offsetX: 10,\n      round: 3\n    }), !minimal ? jsxs(Fragment, {\n      children: [jsx(TextHighHZ, {\n        metric: \"calls\",\n        fontSize: fontSize,\n        offsetX: 200,\n        round: 0,\n        hasInstance: true\n      }), jsx(TextHighHZ, {\n        metric: \"triangles\",\n        fontSize: fontSize,\n        offsetX: 260,\n        round: 0,\n        hasInstance: true\n      }), jsx(TextHighHZ, {\n        isMemory: true,\n        metric: \"geometries\",\n        fontSize: fontSize,\n        offsetY: 30,\n        offsetX: 0,\n        round: 0\n      }), jsx(TextHighHZ, {\n        isMemory: true,\n        metric: \"textures\",\n        fontSize: fontSize,\n        offsetY: 30,\n        offsetX: 80,\n        round: 0\n      }), jsx(TextHighHZ, {\n        isShadersInfo: true,\n        metric: \"programs\",\n        fontSize: fontSize,\n        offsetY: 30,\n        offsetX: 140,\n        round: 0\n      }), jsx(TextHighHZ, {\n        metric: \"lines\",\n        fontSize: fontSize,\n        offsetY: 30,\n        offsetX: 200,\n        round: 0,\n        hasInstance: true\n      }), jsx(TextHighHZ, {\n        metric: \"points\",\n        fontSize: fontSize,\n        offsetY: 30,\n        offsetX: 260,\n        round: 0,\n        hasInstance: true\n      }), matrixUpdate && jsx(TextHighHZ, {\n        isPerf: true,\n        metric: \"matriceCount\",\n        fontSize: fontSize,\n        offsetY: 30,\n        offsetX: 320,\n        round: 0,\n        hasInstance: true\n      })]\n    }) : null, customData && jsx(TextHighHZ, {\n      color: `rgb(${colorsGraph(colorBlind).custom.toString()})`,\n      customData: customData,\n      fontSize: fontSize,\n      offsetY: 0,\n      offsetX: minimal ? 200 : 320,\n      round: 0\n    })]\n  });\n};\nconst ChartCurve = ({\n  colorBlind,\n  minimal,\n  chart: _chart = {\n    length: 30,\n    hz: 15\n  }\n}) => {\n  const curves = useMemo(() => {\n    return {\n      fps: new Float32Array(_chart.length * 3),\n      cpu: new Float32Array(_chart.length * 3),\n      gpu: new Float32Array(_chart.length * 3)\n    };\n  }, [_chart]);\n  const fpsRef = useRef(null);\n  const fpsMatRef = useRef(null);\n  const gpuRef = useRef(null);\n  const cpuRef = useRef(null);\n  const dummyVec3 = useMemo(() => new THREE.Vector3(0, 0, 0), []);\n  const updatePoints = (element, factor = 1, ref, viewport) => {\n    let maxVal = 0;\n    const {\n      width: w,\n      height: h\n    } = viewport;\n    const chart = usePerfStore.getState().chart.data[element];\n    if (!chart || chart.length === 0) {\n      return;\n    }\n    const padding = minimal ? 2 : 6;\n    const paddingTop = minimal ? 12 : 50;\n    let len = chart.length;\n    for (let i = 0; i < len; i++) {\n      let id = (usePerfStore.getState().chart.circularId + i + 1) % len;\n      if (chart[id] !== undefined) {\n        if (chart[id] > maxVal) {\n          maxVal = chart[id] * factor;\n        }\n        dummyVec3.set(padding + i / (len - 1) * (w - padding * 2) - w / 2, Math.min(100, chart[id]) * factor / 100 * (h - padding * 2 - paddingTop) - h / 2, 0);\n        dummyVec3.toArray(ref.attributes.position.array, i * 3);\n      }\n    }\n    ref.attributes.position.needsUpdate = true;\n  };\n  useFrame(function updateChartCurve({\n    viewport\n  }) {\n    updatePoints('fps', 1, fpsRef.current, viewport);\n    if (fpsMatRef.current) {\n      fpsMatRef.current.color.set(usePerfStore.getState().overclockingFps ? colorsGraph(colorBlind).overClock.toString() : `rgb(${colorsGraph(colorBlind).fps.toString()})`);\n    }\n    updatePoints('gpu', 5, gpuRef.current, viewport);\n    updatePoints('cpu', 5, cpuRef.current, viewport);\n  });\n  return jsxs(Fragment, {\n    children: [jsxs(\"line\", {\n      children: [jsx(\"bufferGeometry\", {\n        ref: fpsRef,\n        children: jsx(\"bufferAttribute\", {\n          attach: 'attributes-position',\n          count: _chart.length,\n          array: curves.fps,\n          itemSize: 3,\n          usage: THREE.DynamicDrawUsage,\n          needsUpdate: true\n        })\n      }), jsx(\"lineBasicMaterial\", {\n        ref: fpsMatRef,\n        color: `rgb(${colorsGraph(colorBlind).fps.toString()})`,\n        transparent: true,\n        opacity: 0.5\n      })]\n    }), jsxs(\"line\", {\n      children: [jsx(\"bufferGeometry\", {\n        ref: gpuRef,\n        children: jsx(\"bufferAttribute\", {\n          attach: 'attributes-position',\n          count: _chart.length,\n          array: curves.gpu,\n          itemSize: 3,\n          usage: THREE.DynamicDrawUsage,\n          needsUpdate: true\n        })\n      }), jsx(\"lineBasicMaterial\", {\n        color: `rgb(${colorsGraph(colorBlind).gpu.toString()})`,\n        transparent: true,\n        opacity: 0.5\n      })]\n    }), jsxs(\"line\", {\n      children: [jsx(\"bufferGeometry\", {\n        ref: cpuRef,\n        children: jsx(\"bufferAttribute\", {\n          attach: 'attributes-position',\n          count: _chart.length,\n          array: curves.cpu,\n          itemSize: 3,\n          usage: THREE.DynamicDrawUsage,\n          needsUpdate: true\n        })\n      }), jsx(\"lineBasicMaterial\", {\n        color: `rgb(${colorsGraph(colorBlind).cpu.toString()})`,\n        transparent: true,\n        opacity: 0.5\n      })]\n    })]\n  });\n};\nconst ChartUI = ({\n  colorBlind,\n  chart,\n  customData,\n  matrixUpdate,\n  showGraph: _showGraph = true,\n  antialias: _antialias = true,\n  minimal\n}) => {\n  const canvas = useRef(undefined);\n  const paused = usePerfStore(state => state.paused);\n  return jsxs(Graph, {\n    style: {\n      display: 'flex',\n      position: 'absolute',\n      height: `${minimal ? 37 : _showGraph ? 100 : 60}px`,\n      minWidth: `${minimal ? '100px' : customData ? '370px' : '310px'}`\n    },\n    children: [jsx(Canvas, {\n      ref: canvas,\n      orthographic: true,\n      dpr: _antialias ? [1, 2] : 1,\n      gl: {\n        antialias: true,\n        alpha: true,\n        stencil: false,\n        depth: false\n      },\n      onCreated: ({\n        scene\n      }) => {\n        scene.traverse(obj => {\n          obj.matrixWorldAutoUpdate = false;\n          obj.matrixAutoUpdate = false;\n        });\n      },\n      flat: true,\n      style: {\n        marginBottom: `-42px`,\n        position: 'relative',\n        pointerEvents: 'none',\n        background: 'transparent !important',\n        height: `${minimal ? 37 : _showGraph ? 100 : 60}px`\n      },\n      children: !paused ? jsxs(Fragment, {\n        children: [jsx(Renderer, {}), jsx(TextsHighHZ, {\n          customData: customData,\n          minimal: minimal,\n          matrixUpdate: matrixUpdate\n        }), _showGraph && jsx(ChartCurve, {\n          colorBlind: colorBlind,\n          minimal: minimal,\n          chart: chart\n        })]\n      }) : null\n    }), paused && jsxs(Graphpc, {\n      children: [jsx(PauseIcon, {}), \" PAUSED\"]\n    })]\n  });\n};\nconst Renderer = () => {\n  useFrame(function updateR3FPerf({\n    gl,\n    scene,\n    camera\n  }) {\n    camera.updateMatrix();\n    matriceCount.value -= 1;\n    camera.matrixWorld.copy(camera.matrix);\n    camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n    gl.render(scene, camera);\n    matriceWorldCount.value = 0;\n    matriceCount.value = 0;\n  }, Infinity);\n  return null;\n};\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nconst _excluded = [\"portal\", \"className\", \"children\"];\nconst Html = forwardRef((_ref, ref) => {\n  let {\n      portal,\n      className,\n      children\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  const gl = useThree(state => state.gl);\n  const group = useRef(null);\n  const rootRef = useRef(null);\n  const target = (portal === null || portal === void 0 ? void 0 : portal.current) != null ? portal.current : gl.domElement.parentNode;\n  useLayoutEffect(() => {\n    if (!group.current || !target) return;\n    const el = document.createElement('div');\n    const root = rootRef.current = createRoot(el);\n    target.appendChild(el);\n    return () => {\n      root.unmount();\n      rootRef.current = null;\n      target.removeChild(el);\n    };\n  }, [target]);\n  useLayoutEffect(() => {\n    const root = rootRef.current;\n    if (!root) return;\n    root.render(jsx(\"div\", {\n      ref: ref,\n      className: className,\n      children: children\n    }));\n  });\n  return jsx(\"group\", _objectSpread2(_objectSpread2({}, props), {}, {\n    ref: group\n  }));\n});\n\nconst addTextureUniforms = (id, texture) => {\n  const repeatType = wrap => {\n    switch (wrap) {\n      case 1000:\n        return 'RepeatWrapping';\n      case 1001:\n        return 'ClampToEdgeWrapping';\n      case 1002:\n        return 'MirroredRepeatWrapping';\n      default:\n        return 'ClampToEdgeWrapping';\n    }\n  };\n  const encodingType = encoding => {\n    switch (encoding) {\n      case 3000:\n        return 'LinearEncoding';\n      case 3001:\n        return 'sRGBEncoding';\n      case 3002:\n        return 'RGBEEncoding';\n      case 3003:\n        return 'LogLuvEncoding';\n      case 3004:\n        return 'RGBM7Encoding';\n      case 3005:\n        return 'RGBM16Encoding';\n      case 3006:\n        return 'RGBDEncoding';\n      case 3007:\n        return 'GammaEncoding';\n      default:\n        return 'ClampToEdgeWrapping';\n    }\n  };\n  return {\n    name: id,\n    url: texture.image.currentSrc,\n    encoding: encodingType(texture.encoding),\n    wrapT: repeatType(texture.image.wrapT),\n    flipY: texture.flipY.toString()\n  };\n};\nconst UniformsGL = ({\n  program,\n  material,\n  setTexNumber\n}) => {\n  const gl = usePerfStore(state => state.gl);\n  const [uniforms, set] = useState(null);\n  useEffect(() => {\n    if (gl) {\n      const data = program === null || program === void 0 ? void 0 : program.getUniforms();\n      let TexCount = 0;\n      const format = new Map();\n      data.seq.forEach(e => {\n        if (!e.id.includes('uTroika') && e.id !== 'isOrthographic' && e.id !== 'uvTransform' && e.id !== 'lightProbe' && e.id !== 'projectionMatrix' && e.id !== 'viewMatrix' && e.id !== 'normalMatrix' && e.id !== 'modelMatrix' && e.id !== 'modelViewMatrix') {\n          let values = [];\n          let data = {\n            name: e.id\n          };\n          if (e.cache) {\n            e.cache.forEach(v => {\n              if (typeof v !== 'undefined') {\n                values.push(v.toString().substring(0, 4));\n              }\n            });\n            data.value = values.join();\n            if (material[e.id] && material[e.id].image) {\n              if (material[e.id].image) {\n                TexCount++;\n                data.value = addTextureUniforms(e.id, material[e.id]);\n              }\n            }\n            if (!data.value) {\n              data.value = 'empty';\n            }\n            format.set(e.id, data);\n          }\n        }\n      });\n      if (material.uniforms) {\n        Object.keys(material.uniforms).forEach(key => {\n          const uniform = material.uniforms[key];\n          if (uniform.value) {\n            const {\n              value\n            } = uniform;\n            let data = {\n              name: key\n            };\n            if (key.includes('uTroika')) {\n              return;\n            }\n            if (value instanceof THREE.Texture) {\n              TexCount++;\n              data.value = addTextureUniforms(key, value);\n            } else {\n              let sb = JSON.stringify(value);\n              try {\n                sb = JSON.stringify(value);\n              } catch (_err) {\n                sb = value.toString();\n              }\n              data.value = sb;\n            }\n            format.set(key, data);\n          }\n        });\n      }\n      if (TexCount > 0) {\n        setTexNumber(TexCount);\n      }\n      set(format);\n    }\n  }, []);\n  return jsx(ProgramsUL, {\n    children: uniforms && Array.from(uniforms.values()).map(uniform => {\n      return jsx(\"span\", {\n        children: typeof uniform.value === 'string' ? jsx(\"li\", {\n          children: jsxs(\"span\", {\n            children: [uniform.name, \" :\", ' ', jsxs(\"b\", {\n              children: [uniform.value.substring(0, 30), uniform.value.length > 30 ? '...' : '']\n            })]\n          })\n        }) : jsxs(Fragment, {\n          children: [jsx(\"li\", {\n            children: jsxs(\"b\", {\n              children: [uniform.value.name, \":\"]\n            })\n          }), jsxs(\"div\", {\n            children: [Object.keys(uniform.value).map(key => {\n              return key !== 'name' ? jsx(\"div\", {\n                children: key === 'url' ? jsx(\"a\", {\n                  href: uniform.value[key],\n                  target: \"_blank\",\n                  children: jsx(\"img\", {\n                    src: uniform.value[key]\n                  })\n                }) : jsxs(\"li\", {\n                  children: [key, \": \", jsx(\"b\", {\n                    children: uniform.value[key]\n                  })]\n                })\n              }, key) : null;\n            }), jsxs(ProgramConsole, {\n              onClick: () => {\n                var _material$uniforms$un;\n                console.info(material[uniform.value.name] || (material === null || material === void 0 ? void 0 : (_material$uniforms$un = material.uniforms[uniform.value.name]) === null || _material$uniforms$un === void 0 ? void 0 : _material$uniforms$un.value));\n              },\n              children: [\"console.info(\", uniform.value.name, \");\"]\n            })]\n          })]\n        })\n      }, uniform.name);\n    })\n  });\n};\nconst DynamicDrawCallInfo = ({\n  el\n}) => {\n  usePerfStore(state => state.log);\n  const gl = usePerfStore(state => state.gl);\n  const getVal = el => {\n    if (!gl) return 0;\n    const res = Math.round(el.drawCounts.total / (gl.info.render.triangles + gl.info.render.lines + gl.info.render.points) * 100 * 10) / 10;\n    return isFinite(res) && res || 0;\n  };\n  return jsx(Fragment, {\n    children: el.drawCounts.total > 0 && jsxs(PerfI, {\n      style: {\n        height: 'auto',\n        width: 'auto',\n        margin: '0 4px'\n      },\n      children: [el.drawCounts.type === 'Triangle' ? jsx(VercelLogoIcon, {\n        style: {\n          top: '-1px'\n        }\n      }) : jsx(ActivityLogIcon, {\n        style: {\n          top: '-1px'\n        }\n      }), el.drawCounts.total, jsxs(\"small\", {\n        children: [el.drawCounts.type, \"s\"]\n      }), gl && jsxs(PerfB, {\n        style: {\n          bottom: '-10px',\n          width: '40px',\n          fontWeight: 'bold'\n        },\n        children: [el.visible && !el.material.wireframe ? getVal(el) : 0, \"%\"]\n      })]\n    })\n  });\n};\nconst ProgramUI = ({\n  el\n}) => {\n  const [showProgram, setShowProgram] = useState(el.visible);\n  const [toggleProgram, set] = useState(el.expand);\n  const [texNumber, setTexNumber] = useState(0);\n  const {\n    meshes,\n    program,\n    material\n  } = el;\n  return jsxs(ProgramGeo, {\n    children: [jsxs(ProgramHeader, {\n      onClick: () => {\n        el.expand = !toggleProgram;\n        Object.keys(meshes).forEach(key => {\n          const mesh = meshes[key];\n          mesh.material.wireframe = false;\n        });\n        set(!toggleProgram);\n      },\n      children: [jsx(Toggle, {\n        style: {\n          marginRight: '6px'\n        },\n        children: toggleProgram ? jsx(\"span\", {\n          children: jsx(TriangleDownIcon, {})\n        }) : jsx(\"span\", {\n          children: jsx(TriangleUpIcon, {})\n        })\n      }), program && jsxs(\"span\", {\n        children: [jsx(ProgramTitle, {\n          children: program.name\n        }), jsxs(PerfI, {\n          style: {\n            height: 'auto',\n            width: 'auto',\n            margin: '0 4px'\n          },\n          children: [jsx(LayersIcon, {\n            style: {\n              top: '-1px'\n            }\n          }), Object.keys(meshes).length, jsx(\"small\", {\n            children: Object.keys(meshes).length > 1 ? 'users' : 'user'\n          })]\n        }), texNumber > 0 && jsxs(PerfI, {\n          style: {\n            height: 'auto',\n            width: 'auto',\n            margin: '0 4px'\n          },\n          children: [texNumber > 1 ? jsx(ImageIcon, {\n            style: {\n              top: '-1px'\n            }\n          }) : jsx(ImageIcon, {\n            style: {\n              top: '-1px'\n            }\n          }), texNumber, jsx(\"small\", {\n            children: \"tex\"\n          })]\n        }), jsx(DynamicDrawCallInfo, {\n          el: el\n        }), material.glslVersion === '300 es' && jsxs(PerfI, {\n          style: {\n            height: 'auto',\n            width: 'auto',\n            margin: '0 4px'\n          },\n          children: [jsx(RocketIcon, {\n            style: {\n              top: '-1px'\n            }\n          }), \"300\", jsx(\"small\", {\n            children: \"es\"\n          }), jsx(PerfB, {\n            style: {\n              bottom: '-10px',\n              width: '40px'\n            },\n            children: \"glsl\"\n          })]\n        })]\n      }), jsx(ToggleVisible, {\n        onPointerEnter: () => {\n          Object.keys(meshes).forEach(key => {\n            const mesh = meshes[key];\n            mesh.material.wireframe = true;\n          });\n        },\n        onPointerLeave: () => {\n          Object.keys(meshes).forEach(key => {\n            const mesh = meshes[key];\n            mesh.material.wireframe = false;\n          });\n        },\n        onClick: e => {\n          e.stopPropagation();\n          Object.keys(meshes).forEach(key => {\n            const mesh = meshes[key];\n            const invert = !showProgram;\n            mesh.visible = invert;\n            el.visible = invert;\n            setShowProgram(invert);\n          });\n        },\n        children: showProgram ? jsx(EyeOpenIcon, {}) : jsx(EyeNoneIcon, {})\n      })]\n    }), jsxs(\"div\", {\n      style: {\n        maxHeight: toggleProgram ? '9999px' : 0,\n        overflow: 'hidden'\n      },\n      children: [jsxs(ProgramsULHeader, {\n        children: [jsx(ButtonIcon, {}), \" Uniforms:\"]\n      }), jsx(UniformsGL, {\n        program: program,\n        material: material,\n        setTexNumber: setTexNumber\n      }), jsxs(ProgramsULHeader, {\n        children: [jsx(CubeIcon, {}), \" Geometries:\"]\n      }), jsx(ProgramsUL, {\n        children: meshes && Object.keys(meshes).map(key => meshes[key] && meshes[key].geometry && jsxs(ProgramsGeoLi, {\n          children: [jsxs(\"span\", {\n            children: [meshes[key].geometry.type, \": \"]\n          }), meshes[key].userData && meshes[key].userData.drawCount && jsxs(\"b\", {\n            children: [jsxs(\"div\", {\n              children: [meshes[key].userData.drawCount.count, jsxs(\"small\", {\n                children: [\" \", meshes[key].userData.drawCount.type, \"s\"]\n              })]\n            }), jsx(\"br\", {}), jsxs(\"div\", {\n              children: [Math.round(estimateBytesUsed(meshes[key].geometry) / 1024 * 1000) / 1000, \"Kb\", jsx(\"small\", {\n                children: \" memory used\"\n              })]\n            })]\n          })]\n        }, key))\n      }), jsxs(ProgramConsole, {\n        onClick: () => {\n          console.info(material);\n        },\n        children: [\"console.info(\", material.type, \")\"]\n      })]\n    })]\n  });\n};\nconst ProgramsUI = () => {\n  usePerfStore(state => state.triggerProgramsUpdate);\n  const programs = usePerfStore(state => state.programs);\n  return jsx(ProgramsContainer, {\n    children: programs && Array.from(programs.values()).map(el => {\n      if (!el) {\n        return null;\n      }\n      return el ? jsx(ProgramUI, {\n        el: el\n      }, el.material.uuid) : null;\n    })\n  });\n};\n\nconst colorsGraph = colorBlind => {\n  const colors = {\n    overClock: `#ff6eff`,\n    fps: colorBlind ? '100, 143, 255' : '238,38,110',\n    cpu: colorBlind ? '254, 254, 98' : '66,226,46',\n    gpu: colorBlind ? '254,254,254' : '253,151,31',\n    custom: colorBlind ? '86,180,233' : '40,255,255'\n  };\n  return colors;\n};\nconst DynamicUIPerf = ({\n  showGraph,\n  colorBlind\n}) => {\n  const overclockingFps = usePerfStore(s => s.overclockingFps);\n  const fpsLimit = usePerfStore(s => s.fpsLimit);\n  return jsxs(PerfB, {\n    style: showGraph ? {\n      color: overclockingFps ? colorsGraph(colorBlind).overClock.toString() : `rgb(${colorsGraph(colorBlind).fps})`\n    } : {},\n    children: [\"FPS \", overclockingFps ? `${fpsLimit}🚀` : '']\n  });\n};\nconst DynamicUI = ({\n  showGraph,\n  colorBlind,\n  customData,\n  minimal\n}) => {\n  const gl = usePerfStore(state => state.gl);\n  return gl ? jsxs(PerfIContainer, {\n    children: [jsxs(PerfI, {\n      children: [jsx(LightningBoltIcon, {}), jsx(PerfB, {\n        style: showGraph ? {\n          color: `rgb(${colorsGraph(colorBlind).gpu.toString()})`\n        } : {},\n        children: \"GPU\"\n      }), jsx(PerfSmallI, {\n        children: \"ms\"\n      })]\n    }), jsxs(PerfI, {\n      children: [jsx(RulerHorizontalIcon, {}), jsx(PerfB, {\n        style: showGraph ? {\n          color: `rgb(${colorsGraph(colorBlind).cpu.toString()})`\n        } : {},\n        children: \"CPU\"\n      }), jsx(PerfSmallI, {\n        children: \"ms\"\n      })]\n    }), jsxs(PerfI, {\n      children: [jsx(LapTimerIcon, {}), jsx(DynamicUIPerf, {\n        showGraph: showGraph,\n        colorBlind: colorBlind\n      })]\n    }), !minimal && gl && jsxs(PerfI, {\n      children: [jsx(TextAlignJustifyIcon, {}), jsx(PerfB, {\n        children: gl.info.render.calls === 1 ? 'call' : 'calls'\n      })]\n    }), !minimal && gl && jsxs(PerfI, {\n      children: [jsx(VercelLogoIcon, {}), jsx(PerfB, {\n        children: \"Triangles\"\n      })]\n    }), customData && jsxs(PerfI, {\n      children: [jsx(BarChartIcon, {}), jsx(PerfB, {\n        style: showGraph ? {\n          color: `rgb(${colorsGraph(colorBlind).custom})`\n        } : {},\n        children: customData.name\n      }), customData.info && jsx(PerfSmallI, {\n        children: customData.info\n      })]\n    })]\n  }) : null;\n};\nconst PerfUI = ({\n  showGraph,\n  colorBlind,\n  deepAnalyze,\n  customData,\n  matrixUpdate,\n  openByDefault,\n  minimal\n}) => {\n  return jsxs(Fragment, {\n    children: [jsx(DynamicUI, {\n      showGraph: showGraph,\n      colorBlind: colorBlind,\n      customData: customData,\n      minimal: minimal\n    }), !minimal && jsx(PerfThree, {\n      matrixUpdate: matrixUpdate,\n      openByDefault: openByDefault,\n      deepAnalyze: deepAnalyze,\n      showGraph: showGraph\n    })]\n  });\n};\nconst InfoUI = ({\n  matrixUpdate\n}) => {\n  return jsxs(\"div\", {\n    children: [jsxs(PerfI, {\n      children: [jsx(MarginIcon, {}), jsx(PerfB, {\n        children: \"Geometries\"\n      })]\n    }), jsxs(PerfI, {\n      children: [jsx(ImageIcon, {}), jsx(PerfB, {\n        children: \"Textures\"\n      })]\n    }), jsxs(PerfI, {\n      children: [jsx(ActivityLogIcon, {}), jsx(PerfB, {\n        children: \"shaders\"\n      })]\n    }), jsxs(PerfI, {\n      children: [jsx(MinusIcon, {}), jsx(PerfB, {\n        children: \"Lines\"\n      })]\n    }), jsxs(PerfI, {\n      children: [jsx(DotIcon, {}), jsx(PerfB, {\n        children: \"Points\"\n      })]\n    }), matrixUpdate && jsxs(PerfI, {\n      children: [jsx(DropdownMenuIcon, {}), jsx(PerfB, {\n        children: \"Matrices\"\n      })]\n    })]\n  });\n};\nconst ToggleEl = ({\n  tab,\n  title,\n  set\n}) => {\n  const tabStore = usePerfStore(state => state.tab);\n  return jsx(Toggle, {\n    className: `${tabStore === tab ? ' __perf_toggle_tab_active' : ''}`,\n    onClick: () => {\n      set(true);\n      usePerfStore.setState({\n        tab: tab\n      });\n    },\n    children: jsx(\"span\", {\n      children: title\n    })\n  });\n};\nconst PerfThree = ({\n  openByDefault,\n  showGraph,\n  deepAnalyze,\n  matrixUpdate\n}) => {\n  const [show, set] = React.useState(openByDefault);\n  return jsxs(\"span\", {\n    children: [jsx(TabContainers, {\n      show: show,\n      showGraph: showGraph,\n      matrixUpdate: matrixUpdate\n    }), openByDefault && !deepAnalyze ? null : jsxs(ToggleContainer, {\n      className: '__perf_toggle',\n      children: [deepAnalyze && jsx(ToggleEl, {\n        tab: \"programs\",\n        title: \"Programs\",\n        set: set\n      }), deepAnalyze && jsx(ToggleEl, {\n        tab: \"infos\",\n        title: \"Infos\",\n        set: set\n      }), jsx(Toggle, {\n        onClick: () => {\n          set(!show);\n        },\n        children: show ? jsxs(\"span\", {\n          children: [jsx(TriangleDownIcon, {}), \" Minimize\"]\n        }) : jsxs(\"span\", {\n          children: [jsx(TriangleUpIcon, {}), \" More\"]\n        })\n      })]\n    })]\n  });\n};\nconst TabContainers = ({\n  show,\n  showGraph,\n  matrixUpdate\n}) => {\n  const tab = usePerfStore(state => state.tab);\n  return jsxs(Fragment, {\n    children: [jsx(InfoUI, {\n      matrixUpdate: matrixUpdate\n    }), show && jsx(\"div\", {\n      children: jsx(ContainerScroll, {\n        style: {\n          marginTop: showGraph ? '38px' : 0\n        },\n        children: tab === 'programs' && jsx(ProgramsUI, {})\n      })\n    })]\n  });\n};\nconst Gui = ({\n  showGraph,\n  colorBlind,\n  openByDefault,\n  className,\n  overClock,\n  style,\n  position,\n  chart,\n  deepAnalyze,\n  antialias,\n  customData,\n  matrixUpdate,\n  minimal\n}) => {\n  const perfContainerRef = useRef(null);\n  return jsxs(Fragment, {\n    children: [jsx(Headless, {\n      chart: chart,\n      overClock: overClock,\n      deepAnalyze: deepAnalyze,\n      matrixUpdate: matrixUpdate\n    }), jsx(Html, {\n      transform: false,\n      children: jsxs(PerfS, {\n        className: (className ? ' '.concat(className) : ' ') + ` ${position ? position : ''} ${minimal ? 'minimal' : ''}`,\n        style: _objectSpread2({\n          minHeight: minimal ? '37px' : showGraph ? '100px' : '60px'\n        }, style),\n        ref: perfContainerRef,\n        children: [jsx(ChartUI, {\n          perfContainerRef: perfContainerRef,\n          colorBlind: colorBlind,\n          chart: chart,\n          showGraph: showGraph,\n          antialias: antialias,\n          customData: customData,\n          minimal: minimal,\n          matrixUpdate: matrixUpdate\n        }), jsx(PerfUI, {\n          colorBlind: colorBlind,\n          showGraph: showGraph,\n          deepAnalyze: deepAnalyze,\n          openByDefault: openByDefault,\n          customData: customData,\n          matrixUpdate: matrixUpdate,\n          minimal: minimal\n        })]\n      })\n    })]\n  });\n};\n\nconst Perf = ({\n  headless: _headless = false,\n  colorBlind: _colorBlind = false,\n  overClock: _overClock = false,\n  showGraph: _showGraph = true,\n  trackCPU: _trackCPU = false,\n  deepAnalyze: _deepAnalyze = false,\n  antialias: _antialias = true,\n  openByDefault: _openByDefault = true,\n  customData,\n  matrixUpdate: _matrixUpdate = false,\n  position: _position = 'top-right',\n  chart: _chart = {\n    length: 30,\n    hz: 15\n  },\n  className,\n  style,\n  minimal: _minimal = false\n}) => {\n  return _headless ? jsx(Headless, {\n    chart: _chart,\n    deepAnalyze: _deepAnalyze,\n    matrixUpdate: _matrixUpdate,\n    overClock: _overClock\n  }) : jsx(Gui, {\n    colorBlind: _colorBlind,\n    showGraph: _showGraph,\n    trackCPU: _trackCPU,\n    openByDefault: _openByDefault,\n    className: className,\n    style: style,\n    overClock: _overClock,\n    position: _position,\n    antialias: _antialias,\n    chart: _chart,\n    deepAnalyze: _deepAnalyze,\n    minimal: _minimal,\n    customData: customData,\n    matrixUpdate: _matrixUpdate\n  });\n};\nconst usePerf = usePerfFunc;\n\nexport { Perf, getCustomData, setCustomData, usePerf };\n","const _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range <a1, a2> to range <b1, b2>\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from <low, high> interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from <low, high> interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n\n\nexport {\n\tDEG2RAD,\n\tRAD2DEG,\n\tgenerateUUID,\n\tclamp,\n\teuclideanModulo,\n\tmapLinear,\n\tinverseLerp,\n\tlerp,\n\tdamp,\n\tpingpong,\n\tsmoothstep,\n\tsmootherstep,\n\trandInt,\n\trandFloat,\n\trandFloatSpread,\n\tseededRandom,\n\tdegToRad,\n\tradToDeg,\n\tisPowerOfTwo,\n\tceilPowerOfTwo,\n\tfloorPowerOfTwo,\n\tsetQuaternionFromProperEuler,\n\tnormalize,\n\tdenormalize,\n};\n","import * as React from 'react';\nimport { useThree, useFrame } from '@react-three/fiber';\n\nfunction useHelper(object3D, helperConstructor, ...args) {\n  const helper = React.useRef();\n  const scene = useThree(state => state.scene);\n  React.useLayoutEffect(() => {\n    let currentHelper = undefined;\n\n    if (object3D && object3D != null && object3D.current && helperConstructor) {\n      helper.current = currentHelper = new helperConstructor(object3D.current, ...args);\n    }\n\n    if (currentHelper) {\n      scene.add(currentHelper);\n      return () => {\n        helper.current = undefined;\n        scene.remove(currentHelper);\n        currentHelper.dispose == null ? void 0 : currentHelper.dispose();\n      };\n    }\n  }, [scene, helperConstructor, object3D, ...args]);\n  useFrame(() => {\n    var _helper$current;\n\n    return void ((_helper$current = helper.current) == null ? void 0 : _helper$current.update == null ? void 0 : _helper$current.update());\n  });\n  return helper;\n}\n\nexport { useHelper };\n","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { EventDispatcher, Vector3, MOUSE, TOUCH, PerspectiveCamera, Quaternion, Spherical, Vector2, OrthographicCamera } from 'three';\n\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n//    Orbit - left mouse / touch: one-finger move\n//    Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n//    Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst moduloWrapAround = (offset, capacity) => (offset % capacity + capacity) % capacity;\n\nclass OrbitControls extends EventDispatcher {\n  // Set to false to disable this control\n  // \"target\" sets the location of focus, where the object orbits around\n  // How far you can dolly in and out ( PerspectiveCamera only )\n  // How far you can zoom in and out ( OrthographicCamera only )\n  // How far you can orbit vertically, upper and lower limits.\n  // Range is 0 to Math.PI radians.\n  // radians\n  // radians\n  // How far you can orbit horizontally, upper and lower limits.\n  // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n  // radians\n  // radians\n  // Set to true to enable damping (inertia)\n  // If damping is enabled, you must call controls.update() in your animation loop\n  // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n  // Set to false to disable zooming\n  // Set to false to disable rotating\n  // Set to false to disable panning\n  // if false, pan orthogonal to world-space direction camera.up\n  // pixels moved per arrow key push\n  // Set to true to automatically rotate around the target\n  // If auto-rotate is enabled, you must call controls.update() in your animation loop\n  // 30 seconds per orbit when fps is 60\n  // true if you want to reverse the orbit to mouse drag from left to right = orbits left\n  // The four arrow keys\n  // Mouse buttons\n  // Touch fingers\n  // the target DOM element for key events\n  constructor(object, domElement) {\n    super();\n\n    _defineProperty(this, \"object\", void 0);\n\n    _defineProperty(this, \"domElement\", void 0);\n\n    _defineProperty(this, \"enabled\", true);\n\n    _defineProperty(this, \"target\", new Vector3());\n\n    _defineProperty(this, \"minDistance\", 0);\n\n    _defineProperty(this, \"maxDistance\", Infinity);\n\n    _defineProperty(this, \"minZoom\", 0);\n\n    _defineProperty(this, \"maxZoom\", Infinity);\n\n    _defineProperty(this, \"minPolarAngle\", 0);\n\n    _defineProperty(this, \"maxPolarAngle\", Math.PI);\n\n    _defineProperty(this, \"minAzimuthAngle\", -Infinity);\n\n    _defineProperty(this, \"maxAzimuthAngle\", Infinity);\n\n    _defineProperty(this, \"enableDamping\", false);\n\n    _defineProperty(this, \"dampingFactor\", 0.05);\n\n    _defineProperty(this, \"enableZoom\", true);\n\n    _defineProperty(this, \"zoomSpeed\", 1.0);\n\n    _defineProperty(this, \"enableRotate\", true);\n\n    _defineProperty(this, \"rotateSpeed\", 1.0);\n\n    _defineProperty(this, \"enablePan\", true);\n\n    _defineProperty(this, \"panSpeed\", 1.0);\n\n    _defineProperty(this, \"screenSpacePanning\", true);\n\n    _defineProperty(this, \"keyPanSpeed\", 7.0);\n\n    _defineProperty(this, \"autoRotate\", false);\n\n    _defineProperty(this, \"autoRotateSpeed\", 2.0);\n\n    _defineProperty(this, \"reverseOrbit\", false);\n\n    _defineProperty(this, \"keys\", {\n      LEFT: 'ArrowLeft',\n      UP: 'ArrowUp',\n      RIGHT: 'ArrowRight',\n      BOTTOM: 'ArrowDown'\n    });\n\n    _defineProperty(this, \"mouseButtons\", {\n      LEFT: MOUSE.ROTATE,\n      MIDDLE: MOUSE.DOLLY,\n      RIGHT: MOUSE.PAN\n    });\n\n    _defineProperty(this, \"touches\", {\n      ONE: TOUCH.ROTATE,\n      TWO: TOUCH.DOLLY_PAN\n    });\n\n    _defineProperty(this, \"target0\", void 0);\n\n    _defineProperty(this, \"position0\", void 0);\n\n    _defineProperty(this, \"zoom0\", void 0);\n\n    _defineProperty(this, \"_domElementKeyEvents\", null);\n\n    _defineProperty(this, \"getPolarAngle\", void 0);\n\n    _defineProperty(this, \"getAzimuthalAngle\", void 0);\n\n    _defineProperty(this, \"setPolarAngle\", void 0);\n\n    _defineProperty(this, \"setAzimuthalAngle\", void 0);\n\n    _defineProperty(this, \"getDistance\", void 0);\n\n    _defineProperty(this, \"listenToKeyEvents\", void 0);\n\n    _defineProperty(this, \"saveState\", void 0);\n\n    _defineProperty(this, \"reset\", void 0);\n\n    _defineProperty(this, \"update\", void 0);\n\n    _defineProperty(this, \"connect\", void 0);\n\n    _defineProperty(this, \"dispose\", void 0);\n\n    this.object = object;\n    this.domElement = domElement; // for reset\n\n    this.target0 = this.target.clone();\n    this.position0 = this.object.position.clone();\n    this.zoom0 = this.object instanceof PerspectiveCamera ? this.object.zoom : 1; //\n    // public methods\n    //\n\n    this.getPolarAngle = () => spherical.phi;\n\n    this.getAzimuthalAngle = () => spherical.theta;\n\n    this.setPolarAngle = value => {\n      // use modulo wrapping to safeguard value\n      let phi = moduloWrapAround(value, 2 * Math.PI);\n      let currentPhi = spherical.phi; // convert to the equivalent shortest angle\n\n      if (currentPhi < 0) currentPhi += 2 * Math.PI;\n      if (phi < 0) phi += 2 * Math.PI;\n      let phiDist = Math.abs(phi - currentPhi);\n\n      if (2 * Math.PI - phiDist < phiDist) {\n        if (phi < currentPhi) {\n          phi += 2 * Math.PI;\n        } else {\n          currentPhi += 2 * Math.PI;\n        }\n      }\n\n      sphericalDelta.phi = phi - currentPhi;\n      scope.update();\n    };\n\n    this.setAzimuthalAngle = value => {\n      // use modulo wrapping to safeguard value\n      let theta = moduloWrapAround(value, 2 * Math.PI);\n      let currentTheta = spherical.theta; // convert to the equivalent shortest angle\n\n      if (currentTheta < 0) currentTheta += 2 * Math.PI;\n      if (theta < 0) theta += 2 * Math.PI;\n      let thetaDist = Math.abs(theta - currentTheta);\n\n      if (2 * Math.PI - thetaDist < thetaDist) {\n        if (theta < currentTheta) {\n          theta += 2 * Math.PI;\n        } else {\n          currentTheta += 2 * Math.PI;\n        }\n      }\n\n      sphericalDelta.theta = theta - currentTheta;\n      scope.update();\n    };\n\n    this.getDistance = () => scope.object.position.distanceTo(scope.target);\n\n    this.listenToKeyEvents = domElement => {\n      domElement.addEventListener('keydown', onKeyDown);\n      this._domElementKeyEvents = domElement;\n    };\n\n    this.saveState = () => {\n      scope.target0.copy(scope.target);\n      scope.position0.copy(scope.object.position);\n      scope.zoom0 = scope.object instanceof PerspectiveCamera ? scope.object.zoom : 1;\n    };\n\n    this.reset = () => {\n      scope.target.copy(scope.target0);\n      scope.object.position.copy(scope.position0);\n\n      if (scope.object instanceof PerspectiveCamera) {\n        scope.object.zoom = scope.zoom0;\n        scope.object.updateProjectionMatrix();\n      }\n\n      scope.dispatchEvent(changeEvent);\n      scope.update();\n      state = STATE.NONE;\n    }; // this method is exposed, but perhaps it would be better if we can make it private...\n\n\n    this.update = (() => {\n      const offset = new Vector3(); // so camera.up is the orbit axis\n\n      const quat = new Quaternion().setFromUnitVectors(object.up, new Vector3(0, 1, 0));\n      const quatInverse = quat.clone().invert();\n      const lastPosition = new Vector3();\n      const lastQuaternion = new Quaternion();\n      const twoPI = 2 * Math.PI;\n      return function update() {\n        const position = scope.object.position;\n        offset.copy(position).sub(scope.target); // rotate offset to \"y-axis-is-up\" space\n\n        offset.applyQuaternion(quat); // angle from z-axis around y-axis\n\n        spherical.setFromVector3(offset);\n\n        if (scope.autoRotate && state === STATE.NONE) {\n          rotateLeft(getAutoRotationAngle());\n        }\n\n        if (scope.enableDamping) {\n          spherical.theta += sphericalDelta.theta * scope.dampingFactor;\n          spherical.phi += sphericalDelta.phi * scope.dampingFactor;\n        } else {\n          spherical.theta += sphericalDelta.theta;\n          spherical.phi += sphericalDelta.phi;\n        } // restrict theta to be between desired limits\n\n\n        let min = scope.minAzimuthAngle;\n        let max = scope.maxAzimuthAngle;\n\n        if (isFinite(min) && isFinite(max)) {\n          if (min < -Math.PI) min += twoPI;else if (min > Math.PI) min -= twoPI;\n          if (max < -Math.PI) max += twoPI;else if (max > Math.PI) max -= twoPI;\n\n          if (min <= max) {\n            spherical.theta = Math.max(min, Math.min(max, spherical.theta));\n          } else {\n            spherical.theta = spherical.theta > (min + max) / 2 ? Math.max(min, spherical.theta) : Math.min(max, spherical.theta);\n          }\n        } // restrict phi to be between desired limits\n\n\n        spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n        spherical.makeSafe();\n        spherical.radius *= scale; // restrict radius to be between desired limits\n\n        spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius)); // move target to panned location\n\n        if (scope.enableDamping === true) {\n          scope.target.addScaledVector(panOffset, scope.dampingFactor);\n        } else {\n          scope.target.add(panOffset);\n        }\n\n        offset.setFromSpherical(spherical); // rotate offset back to \"camera-up-vector-is-up\" space\n\n        offset.applyQuaternion(quatInverse);\n        position.copy(scope.target).add(offset);\n        scope.object.lookAt(scope.target);\n\n        if (scope.enableDamping === true) {\n          sphericalDelta.theta *= 1 - scope.dampingFactor;\n          sphericalDelta.phi *= 1 - scope.dampingFactor;\n          panOffset.multiplyScalar(1 - scope.dampingFactor);\n        } else {\n          sphericalDelta.set(0, 0, 0);\n          panOffset.set(0, 0, 0);\n        }\n\n        scale = 1; // update condition is:\n        // min(camera displacement, camera rotation in radians)^2 > EPS\n        // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n        if (zoomChanged || lastPosition.distanceToSquared(scope.object.position) > EPS || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n          scope.dispatchEvent(changeEvent);\n          lastPosition.copy(scope.object.position);\n          lastQuaternion.copy(scope.object.quaternion);\n          zoomChanged = false;\n          return true;\n        }\n\n        return false;\n      };\n    })(); // https://github.com/mrdoob/three.js/issues/20575\n\n\n    this.connect = domElement => {\n      if (domElement === document) {\n        console.error('THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');\n      }\n\n      scope.domElement = domElement; // disables touch scroll\n      // touch-action needs to be defined for pointer events to work on mobile\n      // https://stackoverflow.com/a/48254578\n\n      scope.domElement.style.touchAction = 'none';\n      scope.domElement.addEventListener('contextmenu', onContextMenu);\n      scope.domElement.addEventListener('pointerdown', onPointerDown);\n      scope.domElement.addEventListener('pointercancel', onPointerCancel);\n      scope.domElement.addEventListener('wheel', onMouseWheel);\n    };\n\n    this.dispose = () => {\n      var _scope$domElement, _scope$domElement2, _scope$domElement3, _scope$domElement4, _scope$domElement5, _scope$domElement6;\n\n      (_scope$domElement = scope.domElement) === null || _scope$domElement === void 0 ? void 0 : _scope$domElement.removeEventListener('contextmenu', onContextMenu);\n      (_scope$domElement2 = scope.domElement) === null || _scope$domElement2 === void 0 ? void 0 : _scope$domElement2.removeEventListener('pointerdown', onPointerDown);\n      (_scope$domElement3 = scope.domElement) === null || _scope$domElement3 === void 0 ? void 0 : _scope$domElement3.removeEventListener('pointercancel', onPointerCancel);\n      (_scope$domElement4 = scope.domElement) === null || _scope$domElement4 === void 0 ? void 0 : _scope$domElement4.removeEventListener('wheel', onMouseWheel);\n      (_scope$domElement5 = scope.domElement) === null || _scope$domElement5 === void 0 ? void 0 : _scope$domElement5.ownerDocument.removeEventListener('pointermove', onPointerMove);\n      (_scope$domElement6 = scope.domElement) === null || _scope$domElement6 === void 0 ? void 0 : _scope$domElement6.ownerDocument.removeEventListener('pointerup', onPointerUp);\n\n      if (scope._domElementKeyEvents !== null) {\n        scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown);\n      } //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n    }; //\n    // internals\n    //\n\n\n    const scope = this;\n    const changeEvent = {\n      type: 'change'\n    };\n    const startEvent = {\n      type: 'start'\n    };\n    const endEvent = {\n      type: 'end'\n    };\n    const STATE = {\n      NONE: -1,\n      ROTATE: 0,\n      DOLLY: 1,\n      PAN: 2,\n      TOUCH_ROTATE: 3,\n      TOUCH_PAN: 4,\n      TOUCH_DOLLY_PAN: 5,\n      TOUCH_DOLLY_ROTATE: 6\n    };\n    let state = STATE.NONE;\n    const EPS = 0.000001; // current position in spherical coordinates\n\n    const spherical = new Spherical();\n    const sphericalDelta = new Spherical();\n    let scale = 1;\n    const panOffset = new Vector3();\n    let zoomChanged = false;\n    const rotateStart = new Vector2();\n    const rotateEnd = new Vector2();\n    const rotateDelta = new Vector2();\n    const panStart = new Vector2();\n    const panEnd = new Vector2();\n    const panDelta = new Vector2();\n    const dollyStart = new Vector2();\n    const dollyEnd = new Vector2();\n    const dollyDelta = new Vector2();\n    const pointers = [];\n    const pointerPositions = {};\n\n    function getAutoRotationAngle() {\n      return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n    }\n\n    function getZoomScale() {\n      return Math.pow(0.95, scope.zoomSpeed);\n    }\n\n    function rotateLeft(angle) {\n      if (scope.reverseOrbit) {\n        sphericalDelta.theta += angle;\n      } else {\n        sphericalDelta.theta -= angle;\n      }\n    }\n\n    function rotateUp(angle) {\n      if (scope.reverseOrbit) {\n        sphericalDelta.phi += angle;\n      } else {\n        sphericalDelta.phi -= angle;\n      }\n    }\n\n    const panLeft = (() => {\n      const v = new Vector3();\n      return function panLeft(distance, objectMatrix) {\n        v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\n\n        v.multiplyScalar(-distance);\n        panOffset.add(v);\n      };\n    })();\n\n    const panUp = (() => {\n      const v = new Vector3();\n      return function panUp(distance, objectMatrix) {\n        if (scope.screenSpacePanning === true) {\n          v.setFromMatrixColumn(objectMatrix, 1);\n        } else {\n          v.setFromMatrixColumn(objectMatrix, 0);\n          v.crossVectors(scope.object.up, v);\n        }\n\n        v.multiplyScalar(distance);\n        panOffset.add(v);\n      };\n    })(); // deltaX and deltaY are in pixels; right and down are positive\n\n\n    const pan = (() => {\n      const offset = new Vector3();\n      return function pan(deltaX, deltaY) {\n        const element = scope.domElement;\n\n        if (element && scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) {\n          // perspective\n          const position = scope.object.position;\n          offset.copy(position).sub(scope.target);\n          let targetDistance = offset.length(); // half of the fov is center to top of screen\n\n          targetDistance *= Math.tan(scope.object.fov / 2 * Math.PI / 180.0); // we use only clientHeight here so aspect ratio does not distort speed\n\n          panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n          panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n        } else if (element && scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera) {\n          // orthographic\n          panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n          panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n        } else {\n          // camera neither orthographic nor perspective\n          console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\n          scope.enablePan = false;\n        }\n      };\n    })();\n\n    function dollyOut(dollyScale) {\n      if (scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) {\n        scale /= dollyScale;\n      } else if (scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera) {\n        scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n        scope.object.updateProjectionMatrix();\n        zoomChanged = true;\n      } else {\n        console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n        scope.enableZoom = false;\n      }\n    }\n\n    function dollyIn(dollyScale) {\n      if (scope.object instanceof PerspectiveCamera && scope.object.isPerspectiveCamera) {\n        scale *= dollyScale;\n      } else if (scope.object instanceof OrthographicCamera && scope.object.isOrthographicCamera) {\n        scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n        scope.object.updateProjectionMatrix();\n        zoomChanged = true;\n      } else {\n        console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n        scope.enableZoom = false;\n      }\n    } //\n    // event callbacks - update the object state\n    //\n\n\n    function handleMouseDownRotate(event) {\n      rotateStart.set(event.clientX, event.clientY);\n    }\n\n    function handleMouseDownDolly(event) {\n      dollyStart.set(event.clientX, event.clientY);\n    }\n\n    function handleMouseDownPan(event) {\n      panStart.set(event.clientX, event.clientY);\n    }\n\n    function handleMouseMoveRotate(event) {\n      rotateEnd.set(event.clientX, event.clientY);\n      rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n      const element = scope.domElement;\n\n      if (element) {\n        rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n\n        rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n      }\n\n      rotateStart.copy(rotateEnd);\n      scope.update();\n    }\n\n    function handleMouseMoveDolly(event) {\n      dollyEnd.set(event.clientX, event.clientY);\n      dollyDelta.subVectors(dollyEnd, dollyStart);\n\n      if (dollyDelta.y > 0) {\n        dollyOut(getZoomScale());\n      } else if (dollyDelta.y < 0) {\n        dollyIn(getZoomScale());\n      }\n\n      dollyStart.copy(dollyEnd);\n      scope.update();\n    }\n\n    function handleMouseMovePan(event) {\n      panEnd.set(event.clientX, event.clientY);\n      panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n      pan(panDelta.x, panDelta.y);\n      panStart.copy(panEnd);\n      scope.update();\n    }\n\n    function handleMouseWheel(event) {\n      if (event.deltaY < 0) {\n        dollyIn(getZoomScale());\n      } else if (event.deltaY > 0) {\n        dollyOut(getZoomScale());\n      }\n\n      scope.update();\n    }\n\n    function handleKeyDown(event) {\n      let needsUpdate = false;\n\n      switch (event.code) {\n        case scope.keys.UP:\n          pan(0, scope.keyPanSpeed);\n          needsUpdate = true;\n          break;\n\n        case scope.keys.BOTTOM:\n          pan(0, -scope.keyPanSpeed);\n          needsUpdate = true;\n          break;\n\n        case scope.keys.LEFT:\n          pan(scope.keyPanSpeed, 0);\n          needsUpdate = true;\n          break;\n\n        case scope.keys.RIGHT:\n          pan(-scope.keyPanSpeed, 0);\n          needsUpdate = true;\n          break;\n      }\n\n      if (needsUpdate) {\n        // prevent the browser from scrolling on cursor keys\n        event.preventDefault();\n        scope.update();\n      }\n    }\n\n    function handleTouchStartRotate() {\n      if (pointers.length == 1) {\n        rotateStart.set(pointers[0].pageX, pointers[0].pageY);\n      } else {\n        const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n        const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n        rotateStart.set(x, y);\n      }\n    }\n\n    function handleTouchStartPan() {\n      if (pointers.length == 1) {\n        panStart.set(pointers[0].pageX, pointers[0].pageY);\n      } else {\n        const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);\n        const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);\n        panStart.set(x, y);\n      }\n    }\n\n    function handleTouchStartDolly() {\n      const dx = pointers[0].pageX - pointers[1].pageX;\n      const dy = pointers[0].pageY - pointers[1].pageY;\n      const distance = Math.sqrt(dx * dx + dy * dy);\n      dollyStart.set(0, distance);\n    }\n\n    function handleTouchStartDollyPan() {\n      if (scope.enableZoom) handleTouchStartDolly();\n      if (scope.enablePan) handleTouchStartPan();\n    }\n\n    function handleTouchStartDollyRotate() {\n      if (scope.enableZoom) handleTouchStartDolly();\n      if (scope.enableRotate) handleTouchStartRotate();\n    }\n\n    function handleTouchMoveRotate(event) {\n      if (pointers.length == 1) {\n        rotateEnd.set(event.pageX, event.pageY);\n      } else {\n        const position = getSecondPointerPosition(event);\n        const x = 0.5 * (event.pageX + position.x);\n        const y = 0.5 * (event.pageY + position.y);\n        rotateEnd.set(x, y);\n      }\n\n      rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n      const element = scope.domElement;\n\n      if (element) {\n        rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n\n        rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n      }\n\n      rotateStart.copy(rotateEnd);\n    }\n\n    function handleTouchMovePan(event) {\n      if (pointers.length == 1) {\n        panEnd.set(event.pageX, event.pageY);\n      } else {\n        const position = getSecondPointerPosition(event);\n        const x = 0.5 * (event.pageX + position.x);\n        const y = 0.5 * (event.pageY + position.y);\n        panEnd.set(x, y);\n      }\n\n      panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n      pan(panDelta.x, panDelta.y);\n      panStart.copy(panEnd);\n    }\n\n    function handleTouchMoveDolly(event) {\n      const position = getSecondPointerPosition(event);\n      const dx = event.pageX - position.x;\n      const dy = event.pageY - position.y;\n      const distance = Math.sqrt(dx * dx + dy * dy);\n      dollyEnd.set(0, distance);\n      dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));\n      dollyOut(dollyDelta.y);\n      dollyStart.copy(dollyEnd);\n    }\n\n    function handleTouchMoveDollyPan(event) {\n      if (scope.enableZoom) handleTouchMoveDolly(event);\n      if (scope.enablePan) handleTouchMovePan(event);\n    }\n\n    function handleTouchMoveDollyRotate(event) {\n      if (scope.enableZoom) handleTouchMoveDolly(event);\n      if (scope.enableRotate) handleTouchMoveRotate(event);\n    } //\n    // event handlers - FSM: listen for events and reset state\n    //\n\n\n    function onPointerDown(event) {\n      if (scope.enabled === false) return;\n\n      if (pointers.length === 0) {\n        var _scope$domElement7, _scope$domElement8;\n\n        (_scope$domElement7 = scope.domElement) === null || _scope$domElement7 === void 0 ? void 0 : _scope$domElement7.ownerDocument.addEventListener('pointermove', onPointerMove);\n        (_scope$domElement8 = scope.domElement) === null || _scope$domElement8 === void 0 ? void 0 : _scope$domElement8.ownerDocument.addEventListener('pointerup', onPointerUp);\n      }\n\n      addPointer(event);\n\n      if (event.pointerType === 'touch') {\n        onTouchStart(event);\n      } else {\n        onMouseDown(event);\n      }\n    }\n\n    function onPointerMove(event) {\n      if (scope.enabled === false) return;\n\n      if (event.pointerType === 'touch') {\n        onTouchMove(event);\n      } else {\n        onMouseMove(event);\n      }\n    }\n\n    function onPointerUp(event) {\n      removePointer(event);\n\n      if (pointers.length === 0) {\n        var _scope$domElement9, _scope$domElement10, _scope$domElement11;\n\n        (_scope$domElement9 = scope.domElement) === null || _scope$domElement9 === void 0 ? void 0 : _scope$domElement9.releasePointerCapture(event.pointerId);\n        (_scope$domElement10 = scope.domElement) === null || _scope$domElement10 === void 0 ? void 0 : _scope$domElement10.ownerDocument.removeEventListener('pointermove', onPointerMove);\n        (_scope$domElement11 = scope.domElement) === null || _scope$domElement11 === void 0 ? void 0 : _scope$domElement11.ownerDocument.removeEventListener('pointerup', onPointerUp);\n      }\n\n      scope.dispatchEvent(endEvent);\n      state = STATE.NONE;\n    }\n\n    function onPointerCancel(event) {\n      removePointer(event);\n    }\n\n    function onMouseDown(event) {\n      let mouseAction;\n\n      switch (event.button) {\n        case 0:\n          mouseAction = scope.mouseButtons.LEFT;\n          break;\n\n        case 1:\n          mouseAction = scope.mouseButtons.MIDDLE;\n          break;\n\n        case 2:\n          mouseAction = scope.mouseButtons.RIGHT;\n          break;\n\n        default:\n          mouseAction = -1;\n      }\n\n      switch (mouseAction) {\n        case MOUSE.DOLLY:\n          if (scope.enableZoom === false) return;\n          handleMouseDownDolly(event);\n          state = STATE.DOLLY;\n          break;\n\n        case MOUSE.ROTATE:\n          if (event.ctrlKey || event.metaKey || event.shiftKey) {\n            if (scope.enablePan === false) return;\n            handleMouseDownPan(event);\n            state = STATE.PAN;\n          } else {\n            if (scope.enableRotate === false) return;\n            handleMouseDownRotate(event);\n            state = STATE.ROTATE;\n          }\n\n          break;\n\n        case MOUSE.PAN:\n          if (event.ctrlKey || event.metaKey || event.shiftKey) {\n            if (scope.enableRotate === false) return;\n            handleMouseDownRotate(event);\n            state = STATE.ROTATE;\n          } else {\n            if (scope.enablePan === false) return;\n            handleMouseDownPan(event);\n            state = STATE.PAN;\n          }\n\n          break;\n\n        default:\n          state = STATE.NONE;\n      }\n\n      if (state !== STATE.NONE) {\n        scope.dispatchEvent(startEvent);\n      }\n    }\n\n    function onMouseMove(event) {\n      if (scope.enabled === false) return;\n\n      switch (state) {\n        case STATE.ROTATE:\n          if (scope.enableRotate === false) return;\n          handleMouseMoveRotate(event);\n          break;\n\n        case STATE.DOLLY:\n          if (scope.enableZoom === false) return;\n          handleMouseMoveDolly(event);\n          break;\n\n        case STATE.PAN:\n          if (scope.enablePan === false) return;\n          handleMouseMovePan(event);\n          break;\n      }\n    }\n\n    function onMouseWheel(event) {\n      if (scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE && state !== STATE.ROTATE) {\n        return;\n      }\n\n      event.preventDefault();\n      scope.dispatchEvent(startEvent);\n      handleMouseWheel(event);\n      scope.dispatchEvent(endEvent);\n    }\n\n    function onKeyDown(event) {\n      if (scope.enabled === false || scope.enablePan === false) return;\n      handleKeyDown(event);\n    }\n\n    function onTouchStart(event) {\n      trackPointer(event);\n\n      switch (pointers.length) {\n        case 1:\n          switch (scope.touches.ONE) {\n            case TOUCH.ROTATE:\n              if (scope.enableRotate === false) return;\n              handleTouchStartRotate();\n              state = STATE.TOUCH_ROTATE;\n              break;\n\n            case TOUCH.PAN:\n              if (scope.enablePan === false) return;\n              handleTouchStartPan();\n              state = STATE.TOUCH_PAN;\n              break;\n\n            default:\n              state = STATE.NONE;\n          }\n\n          break;\n\n        case 2:\n          switch (scope.touches.TWO) {\n            case TOUCH.DOLLY_PAN:\n              if (scope.enableZoom === false && scope.enablePan === false) return;\n              handleTouchStartDollyPan();\n              state = STATE.TOUCH_DOLLY_PAN;\n              break;\n\n            case TOUCH.DOLLY_ROTATE:\n              if (scope.enableZoom === false && scope.enableRotate === false) return;\n              handleTouchStartDollyRotate();\n              state = STATE.TOUCH_DOLLY_ROTATE;\n              break;\n\n            default:\n              state = STATE.NONE;\n          }\n\n          break;\n\n        default:\n          state = STATE.NONE;\n      }\n\n      if (state !== STATE.NONE) {\n        scope.dispatchEvent(startEvent);\n      }\n    }\n\n    function onTouchMove(event) {\n      trackPointer(event);\n\n      switch (state) {\n        case STATE.TOUCH_ROTATE:\n          if (scope.enableRotate === false) return;\n          handleTouchMoveRotate(event);\n          scope.update();\n          break;\n\n        case STATE.TOUCH_PAN:\n          if (scope.enablePan === false) return;\n          handleTouchMovePan(event);\n          scope.update();\n          break;\n\n        case STATE.TOUCH_DOLLY_PAN:\n          if (scope.enableZoom === false && scope.enablePan === false) return;\n          handleTouchMoveDollyPan(event);\n          scope.update();\n          break;\n\n        case STATE.TOUCH_DOLLY_ROTATE:\n          if (scope.enableZoom === false && scope.enableRotate === false) return;\n          handleTouchMoveDollyRotate(event);\n          scope.update();\n          break;\n\n        default:\n          state = STATE.NONE;\n      }\n    }\n\n    function onContextMenu(event) {\n      if (scope.enabled === false) return;\n      event.preventDefault();\n    }\n\n    function addPointer(event) {\n      pointers.push(event);\n    }\n\n    function removePointer(event) {\n      delete pointerPositions[event.pointerId];\n\n      for (let i = 0; i < pointers.length; i++) {\n        if (pointers[i].pointerId == event.pointerId) {\n          pointers.splice(i, 1);\n          return;\n        }\n      }\n    }\n\n    function trackPointer(event) {\n      let position = pointerPositions[event.pointerId];\n\n      if (position === undefined) {\n        position = new Vector2();\n        pointerPositions[event.pointerId] = position;\n      }\n\n      position.set(event.pageX, event.pageY);\n    }\n\n    function getSecondPointerPosition(event) {\n      const pointer = event.pointerId === pointers[0].pointerId ? pointers[1] : pointers[0];\n      return pointerPositions[pointer.pointerId];\n    } // connect events\n\n\n    if (domElement !== undefined) this.connect(domElement); // force an update at start\n\n    this.update();\n  }\n\n} // This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n//    Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n//    Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n//    Pan - left mouse, or arrow keys / touch: one-finger move\n\n\nclass MapControls extends OrbitControls {\n  constructor(object, domElement) {\n    super(object, domElement);\n    this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n    this.mouseButtons.LEFT = MOUSE.PAN;\n    this.mouseButtons.RIGHT = MOUSE.ROTATE;\n    this.touches.ONE = TOUCH.PAN;\n    this.touches.TWO = TOUCH.DOLLY_ROTATE;\n  }\n\n}\n\nexport { MapControls, OrbitControls };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport * as React from 'react';\nimport { OrbitControls as OrbitControls$1 } from 'three-stdlib';\n\nconst OrbitControls = /*#__PURE__*/React.forwardRef(({\n  makeDefault,\n  camera,\n  regress,\n  domElement,\n  enableDamping = true,\n  onChange,\n  onStart,\n  onEnd,\n  ...restProps\n}, ref) => {\n  const invalidate = useThree(state => state.invalidate);\n  const defaultCamera = useThree(state => state.camera);\n  const gl = useThree(state => state.gl);\n  const events = useThree(state => state.events);\n  const setEvents = useThree(state => state.setEvents);\n  const set = useThree(state => state.set);\n  const get = useThree(state => state.get);\n  const performance = useThree(state => state.performance);\n  const explCamera = camera || defaultCamera;\n  const explDomElement = domElement || events.connected || gl.domElement;\n  const controls = React.useMemo(() => new OrbitControls$1(explCamera), [explCamera]);\n  useFrame(() => {\n    if (controls.enabled) controls.update();\n  }, -1);\n  React.useEffect(() => {\n    controls.connect(explDomElement);\n    return () => void controls.dispose();\n  }, [explDomElement, regress, controls, invalidate]);\n  React.useEffect(() => {\n    const callback = e => {\n      invalidate();\n      if (regress) performance.regress();\n      if (onChange) onChange(e);\n    };\n\n    const onStartCb = e => {\n      if (onStart) onStart(e);\n    };\n\n    const onEndCb = e => {\n      if (onEnd) onEnd(e);\n    };\n\n    controls.addEventListener('change', callback);\n    controls.addEventListener('start', onStartCb);\n    controls.addEventListener('end', onEndCb);\n    return () => {\n      controls.removeEventListener('start', onStartCb);\n      controls.removeEventListener('end', onEndCb);\n      controls.removeEventListener('change', callback);\n    };\n  }, [onChange, onStart, onEnd, controls, invalidate, setEvents]);\n  React.useEffect(() => {\n    if (makeDefault) {\n      const old = get().controls;\n      set({\n        controls\n      });\n      return () => set({\n        controls: old\n      });\n    }\n  }, [makeDefault, controls]);\n  return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n    ref: ref,\n    object: controls,\n    enableDamping: enableDamping\n  }, restProps));\n});\n\nexport { OrbitControls };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport * as THREE from 'three';\n\nfunction create(type, effect) {\n  const El = type + 'Geometry';\n  return /*#__PURE__*/React.forwardRef(({\n    args,\n    children,\n    ...props\n  }, fref) => {\n    const ref = React.useRef(null);\n    React.useImperativeHandle(fref, () => ref.current);\n    React.useLayoutEffect(() => void (effect == null ? void 0 : effect(ref.current)));\n    return /*#__PURE__*/React.createElement(\"mesh\", _extends({\n      ref: ref\n    }, props), /*#__PURE__*/React.createElement(El, {\n      attach: \"geometry\",\n      args: args\n    }), children);\n  });\n}\n\nconst Box = create('box');\nconst Circle = create('circle');\nconst Cone = create('cone');\nconst Cylinder = create('cylinder');\nconst Sphere = create('sphere');\nconst Plane = create('plane');\nconst Tube = create('tube');\nconst Torus = create('torus');\nconst TorusKnot = create('torusKnot');\nconst Tetrahedron = create('tetrahedron');\nconst Ring = create('ring');\nconst Polyhedron = create('polyhedron');\nconst Icosahedron = create('icosahedron');\nconst Octahedron = create('octahedron');\nconst Dodecahedron = create('dodecahedron');\nconst Extrude = create('extrude');\nconst Lathe = create('lathe');\nconst Capsule = create('capsule');\nconst Shape = create('shape', ({\n  geometry\n}) => {\n  // Calculate UVs (by https://discourse.threejs.org/u/prisoner849)\n  // https://discourse.threejs.org/t/custom-shape-in-image-not-working/49348/10\n  const pos = geometry.attributes.position;\n  const b3 = new THREE.Box3().setFromBufferAttribute(pos);\n  const b3size = new THREE.Vector3();\n  b3.getSize(b3size);\n  const uv = [];\n  let x = 0,\n      y = 0,\n      u = 0,\n      v = 0;\n\n  for (let i = 0; i < pos.count; i++) {\n    x = pos.getX(i);\n    y = pos.getY(i);\n    u = (x - b3.min.x) / b3size.x;\n    v = (y - b3.min.y) / b3size.y;\n    uv.push(u, v);\n  }\n\n  geometry.setAttribute('uv', new THREE.Float32BufferAttribute(uv, 2));\n});\n\nexport { Box, Capsule, Circle, Cone, Cylinder, Dodecahedron, Extrude, Icosahedron, Lathe, Octahedron, Plane, Polyhedron, Ring, Shape, Sphere, Tetrahedron, Torus, TorusKnot, Tube };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport mergeRefs from 'react-merge-refs';\n\n/**\n * Wraps children in a billboarded group. Sample usage:\n *\n * ```js\n * <Billboard>\n *   <Text>hi</Text>\n * </Billboard>\n * ```\n */\nconst Billboard = /*#__PURE__*/React.forwardRef(function Billboard({\n  follow = true,\n  lockX = false,\n  lockY = false,\n  lockZ = false,\n  ...props\n}, ref) {\n  const localRef = React.useRef();\n  useFrame(({\n    camera\n  }) => {\n    if (!follow || !localRef.current) return; // save previous rotation in case we're locking an axis\n\n    const prevRotation = localRef.current.rotation.clone(); // always face the camera\n\n    camera.getWorldQuaternion(localRef.current.quaternion); // readjust any axis that is locked\n\n    if (lockX) localRef.current.rotation.x = prevRotation.x;\n    if (lockY) localRef.current.rotation.y = prevRotation.y;\n    if (lockZ) localRef.current.rotation.z = prevRotation.z;\n  });\n  return /*#__PURE__*/React.createElement(\"group\", _extends({\n    ref: mergeRefs([localRef, ref])\n  }, props));\n});\n\nexport { Billboard };\n","/* eslint-disable react/prop-types */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-param-reassign */\nimport React, { useRef, useEffect } from 'react';\nimport { Box, Text, Billboard } from '@react-three/drei';\nimport { Box3 } from 'three';\n\nimport { useFrame, useThree } from '@react-three/fiber';\n\nconst findLargestDimension = ({ model }) => {\n  return Math.max(\n    ...model.scene.children\n      .map((child) => [\n        child.geometry.boundingBox.max.x * child.scale.x,\n        child.geometry.boundingBox.max.y * child.scale.y,\n        child.geometry.boundingBox.max.z * child.scale.z,\n      ])\n      .flat()\n  );\n};\n\nconst Model = React.forwardRef(\n  (\n    {\n      targetRadius = 2,\n      model,\n      fixedRotationVal,\n      cutTransition,\n      rotationSpeedMultiplier = 0.35,\n      fontURL,\n      labels = [],\n      includeLabels = false,\n      setRenderFinished = () => {},\n    },\n    modelRefs\n  ) => {\n    const { groupRef, modelRef, labelsetRef } = modelRefs;\n    const { clock } = useThree();\n    const baseRadius = model ? findLargestDimension({ model }) : 1;\n\n    const scalar = targetRadius / baseRadius;\n    const adjustmentRate = 0.05;\n\n    useFrame(() => {\n      if (groupRef.current === null) {\n        return;\n      }\n\n      const currentY = groupRef.current.rotation.y;\n\n      if (fixedRotationVal) {\n        if (fixedRotationVal === currentY) {\n          return;\n        }\n\n        // This is a sort of hacky fix for finding the shortest path back to the fixed angle\n        // It gets a little complicated because of negative angles/radian math/etc\n        let halfBackRotation = currentY - Math.PI;\n        if (halfBackRotation - fixedRotationVal <= -Math.PI) {\n          halfBackRotation += 2 * Math.PI;\n        }\n\n        if (\n          cutTransition === true ||\n          Math.abs(currentY - fixedRotationVal) <= adjustmentRate ||\n          Math.abs(currentY) > 2 * Math.PI\n        ) {\n          groupRef.current.rotation.y = fixedRotationVal;\n        } else if (halfBackRotation <= fixedRotationVal) {\n          const newAngle = (currentY - adjustmentRate) % (2 * Math.PI);\n          groupRef.current.rotation.y = newAngle < 0 ? newAngle + 2 * Math.PI : newAngle;\n        } else {\n          groupRef.current.rotation.y = (currentY + adjustmentRate) % (2 * Math.PI);\n        }\n      } else {\n        // groupRef.current.rotation.y = (currentY + 0.004 * rotationSpeedMultiplier) % (2 * Math.PI);\n        groupRef.current.rotation.y =\n          (clock.getElapsedTime() * rotationSpeedMultiplier) % (2 * Math.PI);\n      }\n    });\n\n    return (\n      <group ref={groupRef}>\n        {model ? (\n          <group ref={modelRef} scale={scalar}>\n            <RenderedSceneChildren\n              model={model}\n              labels={labels}\n              scalar={scalar}\n              fontURL={fontURL}\n              setRenderFinished={setRenderFinished}\n              includeLabels={includeLabels}\n            />\n          </group>\n        ) : (\n          <Box position={[0, 0, 0]} args={[targetRadius / 2, targetRadius, targetRadius / 10]}>\n            <meshBasicMaterial color=\"gray\" attach=\"material\" />\n          </Box>\n        )}\n      </group>\n    );\n  }\n);\n\nconst RenderedSceneChildren = React.memo(\n  ({ model, labels, scalar, fontURL, setRenderFinished, includeLabels = false }) => {\n    useEffect(() => {\n      setRenderFinished(true);\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    return (\n      <React.Fragment>\n        {model.scene.clone().children.map((child) => (\n          <group userData={{ ...child.userData }} key={child.id}>\n            <primitive object={child} renderOrder={child.userData.render_order || 0} />\n            {includeLabels === true && labels[child.userData.id].length > 0 && (\n              <Billboard\n                follow\n                userData={{ id: child.userData.id, offsets: child.userData.label_offsets }}\n                renderOrder={1}\n                position={getLabelPosition({ child, scalar })}\n              >\n                <Text\n                  color=\"black\"\n                  outlineColor=\"#fff1e5\"\n                  outlineBlur=\"5%\"\n                  outlineWidth=\"3%\"\n                  anchorX=\"center\"\n                  anchorY=\"middle\"\n                  font={fontURL}\n                  fontSize={0.8}\n                  userData={{ id: child.userData.id, offsets: child.userData.label_offsets }}\n                  fillOpacity={0}\n                  outlineOpacity={0}\n                >\n                  {labels[child.userData.id]}\n                </Text>\n              </Billboard>\n            )}\n          </group>\n        ))}\n      </React.Fragment>\n    );\n  },\n  (prevProps, nextProps) => {\n    const sameModel = prevProps?.model?.scene?.uuid === nextProps?.model?.scene?.uuid;\n    const labelsAlreadySet = typeof prevProps.labels !== 'undefined';\n    const sameScalar = prevProps.scalar === nextProps.scalar;\n    const sameFontURL = prevProps.fontURL === nextProps.fontURL;\n\n    const propsEqual = sameModel && labelsAlreadySet && sameScalar && sameFontURL;\n    return propsEqual;\n  }\n);\n\nconst getLabelPosition = ({ child, scalar }) => {\n  const partBoundingBox = new Box3().setFromObject(child);\n  const top = partBoundingBox.max.y;\n\n  const y = top + child.userData.label_offsets.y / scalar;\n  return [0, y, 0];\n};\n\nexport default React.memo(Model, (prevProps, nextProps) => {\n  const sameModel = prevProps?.model?.scene?.uuid === nextProps?.model?.scene?.uuid;\n  const labelsAlreadySet = typeof prevProps.labels !== 'undefined';\n  const sameFontURL = prevProps.fontURL === nextProps.fontURL;\n\n  const sameRotationVal = prevProps.fixedRotationVal === nextProps.fixedRotationVal;\n  const sameCutTransition = prevProps.cutTransition === nextProps.cutTransition;\n\n  const propsEqual =\n    sameModel && labelsAlreadySet && sameFontURL && sameRotationVal && sameCutTransition;\n\n  return propsEqual;\n});\n","import React, { useEffect, useMemo, useRef } from 'react';\nimport { easeCubicInOut as easingFunction } from 'd3-ease';\nimport { useThree } from '@react-three/fiber';\n\nimport { deg2rad, spherical2cartesian } from '../../util/spatial.js';\n\nimport config from '../../config.json';\n\nconst getCameraStep = ({ cameraPositions, activeStep, screenWidth }) => {\n  if (screenWidth < config.mobile_breakpoint && cameraPositions[activeStep].mobile) {\n    return cameraPositions[activeStep].mobile;\n  }\n  return cameraPositions[activeStep];\n};\n\nconst processCameraPoint = (camera) => {\n  let { position } = camera;\n  if (camera.position.phi) {\n    const { altitude, phi, theta } = camera.position;\n    const { x, y, z } = spherical2cartesian(phi, theta, altitude);\n    position = { ...camera.position, x, y, z };\n  }\n\n  const rotation = Object.fromEntries(\n    Object.entries(camera.rotation).map(([key, val]) => [key, deg2rad(val)])\n  );\n\n  return { position, rotation };\n};\n\nconst processCameraPositions = ({ waypoints }) => {\n  const cameraPositions = waypoints.map((d, i) => {\n    const { camera } = d;\n\n    const processedData = processCameraPoint(camera);\n\n    const output = { ...camera, ...processedData, static: false };\n\n    if (camera.mobile) {\n      const mobileData = processCameraPoint(camera.mobile);\n      output.mobile = { ...camera.mobile, ...mobileData };\n    }\n\n    return output;\n  });\n\n  return cameraPositions.map((current, i) => {\n    if (i === 0) {\n      return current;\n    }\n\n    const last = cameraPositions[i - 1];\n\n    if (\n      JSON.stringify(last.position) === JSON.stringify(current.position) &&\n      JSON.stringify(last.rotation) === JSON.stringify(current.rotation)\n    ) {\n      current.static = true;\n    }\n\n    // if (\n    //   last.mobile &&\n    //   current.mobile &&\n    //   JSON.stringify(last.mobile.position) === JSON.stringify(current.mobile.position) &&\n    //   JSON.stringify(last.mobile.rotation) === JSON.stringify(current.mobile.rotation)\n    // ) {\n    //   current.mobile.static = true;\n    // }\n\n    return current;\n  });\n};\n\nconst CameraContext = ({\n  activeStep,\n  stepProgress,\n  waypoints,\n  screenWidth,\n  sceneCamera,\n  setSceneCamera,\n}) => {\n  const lastScreenWidth = useRef(null);\n  const lastActiveStep = useRef(null);\n  const { camera } = useThree();\n\n  useEffect(() => {\n    setSceneCamera(camera);\n  }, [stepProgress, camera, setSceneCamera]);\n\n  useEffect(() => {\n    if (sceneCamera) {\n      camera.position.set(sceneCamera.position.x, sceneCamera.position.y, sceneCamera.position.z);\n      camera.rotation.set(sceneCamera.rotation.x, sceneCamera.rotation.y, sceneCamera.rotation.z);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [sceneCamera]);\n\n  const cameraPositions = useMemo(() => processCameraPositions({ waypoints }), [waypoints]);\n\n  const lastIndex = Math.max(activeStep, 0);\n  const nextIndex = Math.min(cameraPositions.length - 1, activeStep + 1);\n\n  const shouldNotUpdate =\n    cameraPositions[nextIndex].static === true &&\n    lastScreenWidth.current === screenWidth &&\n    lastActiveStep.current === activeStep;\n\n  if (shouldNotUpdate === true) {\n    return <React.Fragment />;\n  }\n\n  const currentPosition = {};\n  const currentRotation = {};\n\n  const lastStep = getCameraStep({\n    cameraPositions,\n    activeStep: lastIndex,\n    screenWidth,\n  });\n\n  const nextStep = getCameraStep({\n    cameraPositions,\n    activeStep: nextIndex,\n    screenWidth,\n  });\n\n  const progress = nextStep.easing === 'cubic' ? easingFunction(stepProgress) : stepProgress;\n\n  const speedAdjustment = nextStep.speed_adjustment || 1;\n  const rotationSpeedAdjustment = nextStep.rotation_speed_adjustment || speedAdjustment;\n\n  const adjustedProgress = Math.min(1, progress / speedAdjustment);\n  const adjustedRotationProgress = Math.min(1, progress / rotationSpeedAdjustment);\n\n  ['x', 'y', 'z'].forEach((axis) => {\n    currentPosition[axis] =\n      lastStep.position[axis] +\n      (nextStep.position[axis] - lastStep.position[axis]) * adjustedProgress;\n\n    currentRotation[axis] =\n      lastStep.rotation[axis] +\n      (nextStep.rotation[axis] - lastStep.rotation[axis]) * adjustedRotationProgress;\n  });\n\n  camera.position.set(currentPosition.x, currentPosition.y, currentPosition.z);\n  camera.rotation.set(currentRotation.x, currentRotation.y, currentRotation.z);\n\n  // These updating, only at the end, ensures that even on a static step, it doesn't skip...\n  // moving the camera if there's been a fast scroll or a window resize\n  lastScreenWidth.current = screenWidth;\n  lastActiveStep.current = activeStep;\n\n  return <React.Fragment />;\n};\n\nexport default React.memo(CameraContext);\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","/* eslint-disable no-param-reassign */\nimport { Color } from 'three';\n\nexport const setPartPositions = ({\n  part,\n  lastStep,\n  currentStep,\n  stepProgress,\n  labelOpacity,\n  modelRotation,\n  newStep = false,\n}) => {\n  const lastOffsets = { ...lastStep.part_positions.offsets };\n  const currentOffsets = { ...currentStep.part_positions.offsets };\n\n  const lastRotations = lastStep.part_positions.rotations || { x: 0, y: 0, z: 0 };\n  const currentRotations = currentStep.part_positions.rotations || { x: 0, y: 0, z: 0 };\n\n  const lastOverride = lastStep.overrides?.find(\n    (or) => part.userData[or.property_name] === or.property_value\n  );\n  const currentOverride = currentStep.overrides?.find(\n    (or) => part.userData[or.property_name] === or.property_value\n  );\n\n  // Short-circuit if all the same\n  if (\n    JSON.stringify(lastOffsets) === JSON.stringify(currentOffsets) &&\n    JSON.stringify(lastRotations) === JSON.stringify(currentRotations) &&\n    JSON.stringify(lastOverride) === JSON.stringify(currentOverride) &&\n    newStep === false\n  ) {\n    return;\n  }\n\n  const modelMesh = part.children.find((child) => child.type === 'Mesh');\n  const labelObject = part.children.find((child) => child.type !== 'Mesh');\n\n  const overlapOffset = (0.5 - Math.random()) / 2000;\n\n  ['x', 'y', 'z'].forEach((axis) => {\n    const lastPosition = lastOffsets[axis] * (lastOverride?.[axis] || part.userData.position[axis]);\n    const currentPosition =\n      currentOffsets[axis] * (currentOverride?.[axis] || part.userData.position[axis]);\n\n    // We're applying a very small position offset to prevent some issues (more detail in app.js)\n    const axisOffset = part.userData.position[axis] / 2000 || overlapOffset;\n\n    part.position[axis] =\n      stepProgress * (currentPosition - lastPosition) + lastPosition + axisOffset;\n\n    const rotation =\n      stepProgress * (currentRotations[axis] - lastRotations[axis]) + lastRotations[axis];\n    part.rotation[axis] = rotation;\n\n    if (labelObject && axis === 'y') {\n      labelObject.children[0].rotation[axis] = -modelRotation - rotation;\n    }\n  });\n\n  if (labelObject) {\n    labelObject.visible = labelOpacity !== 0;\n    labelObject.children[0].fillOpacity = labelOpacity;\n    labelObject.children[0].outlineOpacity = labelOpacity;\n  }\n\n  // const lastOpacity = lastOverride?.opacity || lastStep.opacity || 1;\n  // const currentOpacity = currentOverride?.opacity || currentStep.opacity || 1;\n\n  // modelMesh.material.opacity = stepProgress * (currentOpacity - lastOpacity) + lastOpacity;\n};\n\nexport const highlightParts = ({\n  part,\n  lastStep,\n  currentStep,\n  stepProgress,\n  transitionSpeedMultiplier = 2,\n}) => {\n  const modelMesh = part.children.find((child) => child.type === 'Mesh');\n\n  const lastSectionIsHighlighted = lastStep.highlighted_parts?.length > 0;\n  const currentSectionIsHighlighted = currentStep.highlighted_parts?.length > 0;\n\n  if (\n    !lastSectionIsHighlighted &&\n    !currentSectionIsHighlighted &&\n    modelMesh.material.emissive.getHexString() !== '000000'\n  ) {\n    modelMesh.material.color = new Color('#fefefe');\n    modelMesh.material.emissive = new Color('#000000');\n    return;\n  }\n  if (!lastSectionIsHighlighted && !currentSectionIsHighlighted) {\n    return;\n  }\n\n  const lastHighlight = lastStep.highlighted_parts?.find((or) =>\n    part.userData[or.property_name].includes(or.property_value)\n  );\n  const currentHighlight = currentStep.highlighted_parts?.find((or) =>\n    part.userData[or.property_name].includes(or.property_value)\n  );\n\n  // using a multiplier here so that the transition can occur on scroll,\n  // but take less of the length of the scroll to complete\n  // (we may ultimately want to just do it on a timer or without interpolating)\n  const adjustedProgress = Math.min(1, transitionSpeedMultiplier * stepProgress);\n\n  if (typeof lastHighlight === 'undefined' && typeof currentHighlight === 'undefined') {\n    if (lastSectionIsHighlighted) {\n      // resets things just in case we have an issue on fast scroll\n      modelMesh.material.color = new Color('#fefefe');\n      modelMesh.material.emissive = new Color('#000000');\n      // modelMesh.material.opacity = 0.4;\n      return;\n    }\n    // resets things just in case we have an issue on fast scroll\n    modelMesh.material.color = new Color('#fefefe');\n    modelMesh.material.emissive = new Color('#000000');\n    // modelMesh.material.opacity = 1 - 0.6 * adjustedProgress;\n    return;\n  }\n\n  const lastEmissive = new Color(lastHighlight?.color || '#000000');\n  const currentEmissive = new Color(currentHighlight?.color || '#000000');\n\n  // if (lastHighlight && !currentHighlight) {\n  //   modelMesh.material.opacity = 1 - 0.6 * adjustedProgress;\n  // } else if (currentHighlight && !lastHighlight) {\n  //   modelMesh.material.opacity = 0.6 * adjustedProgress + 0.4;\n  // }\n\n  // modelMesh.material.color.lerpColors(lastColor, currentColor, adjustedProgress);\n  modelMesh.material.emissive.lerpColors(\n    lastEmissive,\n    currentEmissive,\n    Math.min(1, 20 * stepProgress)\n  );\n  modelMesh.material.emissiveIntensity = 0.35;\n  // if (!currentHighlight) {\n  //   modelMesh.material.opacity = 0.4;\n  // } else {\n  //   modelMesh.material.opacity = 1;\n  // }\n};\n","import { Box3, Vector3, InstancedBufferGeometry, Float32BufferAttribute, InstancedInterleavedBuffer, InterleavedBufferAttribute, WireframeGeometry, Sphere } from 'three';\n\nconst _box = new Box3();\n\nconst _vector = new Vector3();\n\nclass LineSegmentsGeometry extends InstancedBufferGeometry {\n  constructor() {\n    super();\n    this.isLineSegmentsGeometry = true;\n    this.type = 'LineSegmentsGeometry';\n    const positions = [-1, 2, 0, 1, 2, 0, -1, 1, 0, 1, 1, 0, -1, 0, 0, 1, 0, 0, -1, -1, 0, 1, -1, 0];\n    const uvs = [-1, 2, 1, 2, -1, 1, 1, 1, -1, -1, 1, -1, -1, -2, 1, -2];\n    const index = [0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5];\n    this.setIndex(index);\n    this.setAttribute('position', new Float32BufferAttribute(positions, 3));\n    this.setAttribute('uv', new Float32BufferAttribute(uvs, 2));\n  }\n\n  applyMatrix4(matrix) {\n    const start = this.attributes.instanceStart;\n    const end = this.attributes.instanceEnd;\n\n    if (start !== undefined) {\n      start.applyMatrix4(matrix);\n      end.applyMatrix4(matrix);\n      start.needsUpdate = true;\n    }\n\n    if (this.boundingBox !== null) {\n      this.computeBoundingBox();\n    }\n\n    if (this.boundingSphere !== null) {\n      this.computeBoundingSphere();\n    }\n\n    return this;\n  }\n\n  setPositions(array) {\n    let lineSegments;\n\n    if (array instanceof Float32Array) {\n      lineSegments = array;\n    } else if (Array.isArray(array)) {\n      lineSegments = new Float32Array(array);\n    }\n\n    const instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1); // xyz, xyz\n\n    this.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0)); // xyz\n\n    this.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3)); // xyz\n    //\n\n    this.computeBoundingBox();\n    this.computeBoundingSphere();\n    return this;\n  }\n\n  setColors(array) {\n    let colors;\n\n    if (array instanceof Float32Array) {\n      colors = array;\n    } else if (Array.isArray(array)) {\n      colors = new Float32Array(array);\n    }\n\n    const instanceColorBuffer = new InstancedInterleavedBuffer(colors, 6, 1); // rgb, rgb\n\n    this.setAttribute('instanceColorStart', new InterleavedBufferAttribute(instanceColorBuffer, 3, 0)); // rgb\n\n    this.setAttribute('instanceColorEnd', new InterleavedBufferAttribute(instanceColorBuffer, 3, 3)); // rgb\n\n    return this;\n  }\n\n  fromWireframeGeometry(geometry) {\n    this.setPositions(geometry.attributes.position.array);\n    return this;\n  }\n\n  fromEdgesGeometry(geometry) {\n    this.setPositions(geometry.attributes.position.array);\n    return this;\n  }\n\n  fromMesh(mesh) {\n    this.fromWireframeGeometry(new WireframeGeometry(mesh.geometry)); // set colors, maybe\n\n    return this;\n  }\n\n  fromLineSegments(lineSegments) {\n    const geometry = lineSegments.geometry;\n    this.setPositions(geometry.attributes.position.array); // assumes non-indexed\n    // set colors, maybe\n\n    return this;\n  }\n\n  computeBoundingBox() {\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n\n    const start = this.attributes.instanceStart;\n    const end = this.attributes.instanceEnd;\n\n    if (start !== undefined && end !== undefined) {\n      this.boundingBox.setFromBufferAttribute(start);\n\n      _box.setFromBufferAttribute(end);\n\n      this.boundingBox.union(_box);\n    }\n  }\n\n  computeBoundingSphere() {\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n\n    if (this.boundingBox === null) {\n      this.computeBoundingBox();\n    }\n\n    const start = this.attributes.instanceStart;\n    const end = this.attributes.instanceEnd;\n\n    if (start !== undefined && end !== undefined) {\n      const center = this.boundingSphere.center;\n      this.boundingBox.getCenter(center);\n      let maxRadiusSq = 0;\n\n      for (let i = 0, il = start.count; i < il; i++) {\n        _vector.fromBufferAttribute(start, i);\n\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector));\n\n        _vector.fromBufferAttribute(end, i);\n\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector));\n      }\n\n      this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n\n      if (isNaN(this.boundingSphere.radius)) {\n        console.error('THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this);\n      }\n    }\n  }\n\n  toJSON() {// todo\n  }\n\n  applyMatrix(matrix) {\n    console.warn('THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().');\n    return this.applyMatrix4(matrix);\n  }\n\n}\n\nexport { LineSegmentsGeometry };\n","import { UniformsLib, Vector2, ShaderLib, UniformsUtils, ShaderMaterial } from 'three';\n\n/**\n * parameters = {\n *  color: <hex>,\n *  linewidth: <float>,\n *  dashed: <boolean>,\n *  dashScale: <float>,\n *  dashSize: <float>,\n *  dashOffset: <float>,\n *  gapSize: <float>,\n *  resolution: <Vector2>, // to be set by renderer\n * }\n */\nUniformsLib.line = {\n  worldUnits: {\n    value: 1\n  },\n  linewidth: {\n    value: 1\n  },\n  resolution: {\n    value: new Vector2(1, 1)\n  },\n  dashOffset: {\n    value: 0\n  },\n  dashScale: {\n    value: 1\n  },\n  dashSize: {\n    value: 1\n  },\n  gapSize: {\n    value: 1\n  } // todo FIX - maybe change to totalSize\n\n};\nShaderLib['line'] = {\n  uniforms: UniformsUtils.merge([UniformsLib.common, UniformsLib.fog, UniformsLib.line]),\n  vertexShader:\n  /* glsl */\n  `\n\t\t#include <common>\n\t\t#include <color_pars_vertex>\n\t\t#include <fog_pars_vertex>\n\t\t#include <logdepthbuf_pars_vertex>\n\t\t#include <clipping_planes_pars_vertex>\n\n\t\tuniform float linewidth;\n\t\tuniform vec2 resolution;\n\n\t\tattribute vec3 instanceStart;\n\t\tattribute vec3 instanceEnd;\n\n\t\tattribute vec3 instanceColorStart;\n\t\tattribute vec3 instanceColorEnd;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashScale;\n\t\t\tattribute float instanceDistanceStart;\n\t\t\tattribute float instanceDistanceEnd;\n\t\t\tvarying float vLineDistance;\n\n\t\t#endif\n\n\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\n\n\t\t\t// trim end segment so it terminates between the camera plane and the near plane\n\n\t\t\t// conservative estimate of the near plane\n\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\n\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\n\t\t\tfloat nearEstimate = - 0.5 * b / a;\n\n\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\n\n\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#ifdef USE_COLOR\n\n\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\n\n\t\t\t#endif\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\tfloat aspect = resolution.x / resolution.y;\n\n\t\t\t// camera space\n\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\n\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\tworldStart = start.xyz;\n\t\t\t\tworldEnd = end.xyz;\n\n\t\t\t#else\n\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n\t\t\t// perhaps there is a more elegant solution -- WestLangley\n\n\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\n\n\t\t\tif ( perspective ) {\n\n\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( start, end );\n\n\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( end, start );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// clip space\n\t\t\tvec4 clipStart = projectionMatrix * start;\n\t\t\tvec4 clipEnd = projectionMatrix * end;\n\n\t\t\t// ndc space\n\t\t\tvec3 ndcStart = clipStart.xyz / clipStart.w;\n\t\t\tvec3 ndcEnd = clipEnd.xyz / clipEnd.w;\n\n\t\t\t// direction\n\t\t\tvec2 dir = ndcEnd.xy - ndcStart.xy;\n\n\t\t\t// account for clip-space aspect ratio\n\t\t\tdir.x *= aspect;\n\t\t\tdir = normalize( dir );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// get the offset direction as perpendicular to the view vector\n\t\t\t\tvec3 worldDir = normalize( end.xyz - start.xyz );\n\t\t\t\tvec3 offset;\n\t\t\t\tif ( position.y < 0.5 ) {\n\n\t\t\t\t\toffset = normalize( cross( start.xyz, worldDir ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\toffset = normalize( cross( end.xyz, worldDir ) );\n\n\t\t\t\t}\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\tfloat forwardOffset = dot( worldDir, vec3( 0.0, 0.0, 1.0 ) );\n\n\t\t\t\t// don't extend the line if we're rendering dashes because we\n\t\t\t\t// won't be rendering the endcaps\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t// extend the line bounds to encompass  endcaps\n\t\t\t\t\tstart.xyz += - worldDir * linewidth * 0.5;\n\t\t\t\t\tend.xyz += worldDir * linewidth * 0.5;\n\n\t\t\t\t\t// shift the position of the quad so it hugs the forward edge of the line\n\t\t\t\t\toffset.xy -= dir * forwardOffset;\n\t\t\t\t\toffset.z += 0.5;\n\n\t\t\t\t#endif\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y > 1.0 || position.y < 0.0 ) {\n\n\t\t\t\t\toffset.xy += dir * 2.0 * forwardOffset;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for linewidth\n\t\t\t\toffset *= linewidth * 0.5;\n\n\t\t\t\t// set the world position\n\t\t\t\tworldPos = ( position.y < 0.5 ) ? start : end;\n\t\t\t\tworldPos.xyz += offset;\n\n\t\t\t\t// project the worldpos\n\t\t\t\tvec4 clip = projectionMatrix * worldPos;\n\n\t\t\t\t// shift the depth of the projected points so the line\n\t\t\t\t// segments overlap neatly\n\t\t\t\tvec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;\n\t\t\t\tclip.z = clipPose.z * clip.w;\n\n\t\t\t#else\n\n\t\t\t\tvec2 offset = vec2( dir.y, - dir.x );\n\t\t\t\t// undo aspect ratio adjustment\n\t\t\t\tdir.x /= aspect;\n\t\t\t\toffset.x /= aspect;\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y < 0.0 ) {\n\n\t\t\t\t\toffset += - dir;\n\n\t\t\t\t} else if ( position.y > 1.0 ) {\n\n\t\t\t\t\toffset += dir;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for linewidth\n\t\t\t\toffset *= linewidth;\n\n\t\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\n\t\t\t\toffset /= resolution.y;\n\n\t\t\t\t// select end\n\t\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\n\n\t\t\t\t// back to clip space\n\t\t\t\toffset *= clip.w;\n\n\t\t\t\tclip.xy += offset;\n\n\t\t\t#endif\n\n\t\t\tgl_Position = clip;\n\n\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\n\n\t\t\t#include <logdepthbuf_vertex>\n\t\t\t#include <clipping_planes_vertex>\n\t\t\t#include <fog_vertex>\n\n\t\t}\n\t\t`,\n  fragmentShader:\n  /* glsl */\n  `\n\t\tuniform vec3 diffuse;\n\t\tuniform float opacity;\n\t\tuniform float linewidth;\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashOffset;\n\t\t\tuniform float dashSize;\n\t\t\tuniform float gapSize;\n\n\t\t#endif\n\n\t\tvarying float vLineDistance;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#include <common>\n\t\t#include <color_pars_fragment>\n\t\t#include <fog_pars_fragment>\n\t\t#include <logdepthbuf_pars_fragment>\n\t\t#include <clipping_planes_pars_fragment>\n\n\t\tvec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\n\n\t\t\tfloat mua;\n\t\t\tfloat mub;\n\n\t\t\tvec3 p13 = p1 - p3;\n\t\t\tvec3 p43 = p4 - p3;\n\n\t\t\tvec3 p21 = p2 - p1;\n\n\t\t\tfloat d1343 = dot( p13, p43 );\n\t\t\tfloat d4321 = dot( p43, p21 );\n\t\t\tfloat d1321 = dot( p13, p21 );\n\t\t\tfloat d4343 = dot( p43, p43 );\n\t\t\tfloat d2121 = dot( p21, p21 );\n\n\t\t\tfloat denom = d2121 * d4343 - d4321 * d4321;\n\n\t\t\tfloat numer = d1343 * d4321 - d1321 * d4343;\n\n\t\t\tmua = numer / denom;\n\t\t\tmua = clamp( mua, 0.0, 1.0 );\n\t\t\tmub = ( d1343 + d4321 * ( mua ) ) / d4343;\n\t\t\tmub = clamp( mub, 0.0, 1.0 );\n\n\t\t\treturn vec2( mua, mub );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#include <clipping_planes_fragment>\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n\n\t\t\t\tif ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\n\n\t\t\t#endif\n\n\t\t\tfloat alpha = opacity;\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// Find the closest points on the view ray and the line segment\n\t\t\t\tvec3 rayEnd = normalize( worldPos.xyz ) * 1e5;\n\t\t\t\tvec3 lineDir = worldEnd - worldStart;\n\t\t\t\tvec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );\n\n\t\t\t\tvec3 p1 = worldStart + lineDir * params.x;\n\t\t\t\tvec3 p2 = rayEnd * params.y;\n\t\t\t\tvec3 delta = p1 - p2;\n\t\t\t\tfloat len = length( delta );\n\t\t\t\tfloat norm = len / linewidth;\n\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t\tfloat dnorm = fwidth( norm );\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\tif ( norm > 0.5 ) {\n\n\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t#endif\n\n\t\t\t\t#endif\n\n\t\t\t#else\n\n\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t// artifacts appear on some hardware if a derivative is taken within a conditional\n\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\tfloat len2 = a * a + b * b;\n\t\t\t\t\tfloat dlen = fwidth( len2 );\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t#else\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\t\tfloat len2 = a * a + b * b;\n\n\t\t\t\t\t\tif ( len2 > 1.0 ) discard;\n\n\t\t\t\t\t}\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvec4 diffuseColor = vec4( diffuse, alpha );\n\n\t\t\t#include <logdepthbuf_fragment>\n\t\t\t#include <color_fragment>\n\n\t\t\tgl_FragColor = vec4( diffuseColor.rgb, alpha );\n\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <encodings_fragment>\n\t\t\t#include <fog_fragment>\n\t\t\t#include <premultiplied_alpha_fragment>\n\n\t\t}\n\t\t`\n};\n\nclass LineMaterial extends ShaderMaterial {\n  constructor(parameters) {\n    super({\n      type: 'LineMaterial',\n      uniforms: UniformsUtils.clone(ShaderLib['line'].uniforms),\n      vertexShader: ShaderLib['line'].vertexShader,\n      fragmentShader: ShaderLib['line'].fragmentShader,\n      clipping: true // required for clipping support\n\n    });\n    this.isLineMaterial = true;\n    Object.defineProperties(this, {\n      color: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.diffuse.value;\n        },\n        set: function (value) {\n          this.uniforms.diffuse.value = value;\n        }\n      },\n      worldUnits: {\n        enumerable: true,\n        get: function () {\n          return 'WORLD_UNITS' in this.defines;\n        },\n        set: function (value) {\n          if (value === true) {\n            this.defines.WORLD_UNITS = '';\n          } else {\n            delete this.defines.WORLD_UNITS;\n          }\n        }\n      },\n      linewidth: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.linewidth.value;\n        },\n        set: function (value) {\n          this.uniforms.linewidth.value = value;\n        }\n      },\n      dashed: {\n        enumerable: true,\n        get: function () {\n          return Boolean('USE_DASH' in this.defines);\n        },\n\n        set(value) {\n          if (Boolean(value) !== Boolean('USE_DASH' in this.defines)) {\n            this.needsUpdate = true;\n          }\n\n          if (value === true) {\n            this.defines.USE_DASH = '';\n          } else {\n            delete this.defines.USE_DASH;\n          }\n        }\n\n      },\n      dashScale: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.dashScale.value;\n        },\n        set: function (value) {\n          this.uniforms.dashScale.value = value;\n        }\n      },\n      dashSize: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.dashSize.value;\n        },\n        set: function (value) {\n          this.uniforms.dashSize.value = value;\n        }\n      },\n      dashOffset: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.dashOffset.value;\n        },\n        set: function (value) {\n          this.uniforms.dashOffset.value = value;\n        }\n      },\n      gapSize: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.gapSize.value;\n        },\n        set: function (value) {\n          this.uniforms.gapSize.value = value;\n        }\n      },\n      opacity: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.opacity.value;\n        },\n        set: function (value) {\n          this.uniforms.opacity.value = value;\n        }\n      },\n      resolution: {\n        enumerable: true,\n        get: function () {\n          return this.uniforms.resolution.value;\n        },\n        set: function (value) {\n          this.uniforms.resolution.value.copy(value);\n        }\n      },\n      alphaToCoverage: {\n        enumerable: true,\n        get: function () {\n          return Boolean('USE_ALPHA_TO_COVERAGE' in this.defines);\n        },\n        set: function (value) {\n          if (Boolean(value) !== Boolean('USE_ALPHA_TO_COVERAGE' in this.defines)) {\n            this.needsUpdate = true;\n          }\n\n          if (value === true) {\n            this.defines.USE_ALPHA_TO_COVERAGE = '';\n            this.extensions.derivatives = true;\n          } else {\n            delete this.defines.USE_ALPHA_TO_COVERAGE;\n            this.extensions.derivatives = false;\n          }\n        }\n      }\n    });\n    this.setValues(parameters);\n  }\n\n}\n\nexport { LineMaterial };\n","import { Vector3, Vector4, Matrix4, Line3, Box3, Sphere, Mesh, InstancedInterleavedBuffer, InterleavedBufferAttribute, MathUtils } from 'three';\nimport { LineSegmentsGeometry } from './LineSegmentsGeometry.js';\nimport { LineMaterial } from './LineMaterial.js';\n\nconst _start = new Vector3();\n\nconst _end = new Vector3();\n\nconst _start4 = new Vector4();\n\nconst _end4 = new Vector4();\n\nconst _ssOrigin = new Vector4();\n\nconst _ssOrigin3 = new Vector3();\n\nconst _mvMatrix = new Matrix4();\n\nconst _line = new Line3();\n\nconst _closestPoint = new Vector3();\n\nconst _box = new Box3();\n\nconst _sphere = new Sphere();\n\nconst _clipToWorldVector = new Vector4();\n\nlet _ray, _instanceStart, _instanceEnd, _lineWidth; // Returns the margin required to expand by in world space given the distance from the camera,\n// line width, resolution, and camera projection\n\n\nfunction getWorldSpaceHalfWidth(camera, distance, resolution) {\n  // transform into clip space, adjust the x and y values by the pixel width offset, then\n  // transform back into world space to get world offset. Note clip space is [-1, 1] so full\n  // width does not need to be halved.\n  _clipToWorldVector.set(0, 0, -distance, 1.0).applyMatrix4(camera.projectionMatrix);\n\n  _clipToWorldVector.multiplyScalar(1.0 / _clipToWorldVector.w);\n\n  _clipToWorldVector.x = _lineWidth / resolution.width;\n  _clipToWorldVector.y = _lineWidth / resolution.height;\n\n  _clipToWorldVector.applyMatrix4(camera.projectionMatrixInverse);\n\n  _clipToWorldVector.multiplyScalar(1.0 / _clipToWorldVector.w);\n\n  return Math.abs(Math.max(_clipToWorldVector.x, _clipToWorldVector.y));\n}\n\nfunction raycastWorldUnits(lineSegments, intersects) {\n  for (let i = 0, l = _instanceStart.count; i < l; i++) {\n    _line.start.fromBufferAttribute(_instanceStart, i);\n\n    _line.end.fromBufferAttribute(_instanceEnd, i);\n\n    const pointOnLine = new Vector3();\n    const point = new Vector3();\n\n    _ray.distanceSqToSegment(_line.start, _line.end, point, pointOnLine);\n\n    const isInside = point.distanceTo(pointOnLine) < _lineWidth * 0.5;\n\n    if (isInside) {\n      intersects.push({\n        point,\n        pointOnLine,\n        distance: _ray.origin.distanceTo(point),\n        object: lineSegments,\n        face: null,\n        faceIndex: i,\n        uv: null,\n        uv2: null\n      });\n    }\n  }\n}\n\nfunction raycastScreenSpace(lineSegments, camera, intersects) {\n  const projectionMatrix = camera.projectionMatrix;\n  const material = lineSegments.material;\n  const resolution = material.resolution;\n  const matrixWorld = lineSegments.matrixWorld;\n  const geometry = lineSegments.geometry;\n  const instanceStart = geometry.attributes.instanceStart;\n  const instanceEnd = geometry.attributes.instanceEnd;\n  const near = -camera.near; //\n  // pick a point 1 unit out along the ray to avoid the ray origin\n  // sitting at the camera origin which will cause \"w\" to be 0 when\n  // applying the projection matrix.\n\n  _ray.at(1, _ssOrigin); // ndc space [ - 1.0, 1.0 ]\n\n\n  _ssOrigin.w = 1;\n\n  _ssOrigin.applyMatrix4(camera.matrixWorldInverse);\n\n  _ssOrigin.applyMatrix4(projectionMatrix);\n\n  _ssOrigin.multiplyScalar(1 / _ssOrigin.w); // screen space\n\n\n  _ssOrigin.x *= resolution.x / 2;\n  _ssOrigin.y *= resolution.y / 2;\n  _ssOrigin.z = 0;\n\n  _ssOrigin3.copy(_ssOrigin);\n\n  _mvMatrix.multiplyMatrices(camera.matrixWorldInverse, matrixWorld);\n\n  for (let i = 0, l = instanceStart.count; i < l; i++) {\n    _start4.fromBufferAttribute(instanceStart, i);\n\n    _end4.fromBufferAttribute(instanceEnd, i);\n\n    _start4.w = 1;\n    _end4.w = 1; // camera space\n\n    _start4.applyMatrix4(_mvMatrix);\n\n    _end4.applyMatrix4(_mvMatrix); // skip the segment if it's entirely behind the camera\n\n\n    const isBehindCameraNear = _start4.z > near && _end4.z > near;\n\n    if (isBehindCameraNear) {\n      continue;\n    } // trim the segment if it extends behind camera near\n\n\n    if (_start4.z > near) {\n      const deltaDist = _start4.z - _end4.z;\n      const t = (_start4.z - near) / deltaDist;\n\n      _start4.lerp(_end4, t);\n    } else if (_end4.z > near) {\n      const deltaDist = _end4.z - _start4.z;\n      const t = (_end4.z - near) / deltaDist;\n\n      _end4.lerp(_start4, t);\n    } // clip space\n\n\n    _start4.applyMatrix4(projectionMatrix);\n\n    _end4.applyMatrix4(projectionMatrix); // ndc space [ - 1.0, 1.0 ]\n\n\n    _start4.multiplyScalar(1 / _start4.w);\n\n    _end4.multiplyScalar(1 / _end4.w); // screen space\n\n\n    _start4.x *= resolution.x / 2;\n    _start4.y *= resolution.y / 2;\n    _end4.x *= resolution.x / 2;\n    _end4.y *= resolution.y / 2; // create 2d segment\n\n    _line.start.copy(_start4);\n\n    _line.start.z = 0;\n\n    _line.end.copy(_end4);\n\n    _line.end.z = 0; // get closest point on ray to segment\n\n    const param = _line.closestPointToPointParameter(_ssOrigin3, true);\n\n    _line.at(param, _closestPoint); // check if the intersection point is within clip space\n\n\n    const zPos = MathUtils.lerp(_start4.z, _end4.z, param);\n    const isInClipSpace = zPos >= -1 && zPos <= 1;\n\n    const isInside = _ssOrigin3.distanceTo(_closestPoint) < _lineWidth * 0.5;\n\n    if (isInClipSpace && isInside) {\n      _line.start.fromBufferAttribute(instanceStart, i);\n\n      _line.end.fromBufferAttribute(instanceEnd, i);\n\n      _line.start.applyMatrix4(matrixWorld);\n\n      _line.end.applyMatrix4(matrixWorld);\n\n      const pointOnLine = new Vector3();\n      const point = new Vector3();\n\n      _ray.distanceSqToSegment(_line.start, _line.end, point, pointOnLine);\n\n      intersects.push({\n        point: point,\n        pointOnLine: pointOnLine,\n        distance: _ray.origin.distanceTo(point),\n        object: lineSegments,\n        face: null,\n        faceIndex: i,\n        uv: null,\n        uv2: null\n      });\n    }\n  }\n}\n\nclass LineSegments2 extends Mesh {\n  constructor(geometry = new LineSegmentsGeometry(), material = new LineMaterial({\n    color: Math.random() * 0xffffff\n  })) {\n    super(geometry, material);\n    this.isLineSegments2 = true;\n    this.type = 'LineSegments2';\n  } // for backwards-compatibility, but could be a method of LineSegmentsGeometry...\n\n\n  computeLineDistances() {\n    const geometry = this.geometry;\n    const instanceStart = geometry.attributes.instanceStart;\n    const instanceEnd = geometry.attributes.instanceEnd;\n    const lineDistances = new Float32Array(2 * instanceStart.count);\n\n    for (let i = 0, j = 0, l = instanceStart.count; i < l; i++, j += 2) {\n      _start.fromBufferAttribute(instanceStart, i);\n\n      _end.fromBufferAttribute(instanceEnd, i);\n\n      lineDistances[j] = j === 0 ? 0 : lineDistances[j - 1];\n      lineDistances[j + 1] = lineDistances[j] + _start.distanceTo(_end);\n    }\n\n    const instanceDistanceBuffer = new InstancedInterleavedBuffer(lineDistances, 2, 1); // d0, d1\n\n    geometry.setAttribute('instanceDistanceStart', new InterleavedBufferAttribute(instanceDistanceBuffer, 1, 0)); // d0\n\n    geometry.setAttribute('instanceDistanceEnd', new InterleavedBufferAttribute(instanceDistanceBuffer, 1, 1)); // d1\n\n    return this;\n  }\n\n  raycast(raycaster, intersects) {\n    const worldUnits = this.material.worldUnits;\n    const camera = raycaster.camera;\n\n    if (camera === null && !worldUnits) {\n      console.error('LineSegments2: \"Raycaster.camera\" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');\n    }\n\n    const threshold = raycaster.params.Line2 !== undefined ? raycaster.params.Line2.threshold || 0 : 0;\n    _ray = raycaster.ray;\n    const matrixWorld = this.matrixWorld;\n    const geometry = this.geometry;\n    const material = this.material;\n    _lineWidth = material.linewidth + threshold;\n    _instanceStart = geometry.attributes.instanceStart;\n    _instanceEnd = geometry.attributes.instanceEnd; // check if we intersect the sphere bounds\n\n    if (geometry.boundingSphere === null) {\n      geometry.computeBoundingSphere();\n    }\n\n    _sphere.copy(geometry.boundingSphere).applyMatrix4(matrixWorld); // increase the sphere bounds by the worst case line screen space width\n\n\n    let sphereMargin;\n\n    if (worldUnits) {\n      sphereMargin = _lineWidth * 0.5;\n    } else {\n      const distanceToSphere = Math.max(camera.near, _sphere.distanceToPoint(_ray.origin));\n      sphereMargin = getWorldSpaceHalfWidth(camera, distanceToSphere, material.resolution);\n    }\n\n    _sphere.radius += sphereMargin;\n\n    if (_ray.intersectsSphere(_sphere) === false) {\n      return;\n    } // check if we intersect the box bounds\n\n\n    if (geometry.boundingBox === null) {\n      geometry.computeBoundingBox();\n    }\n\n    _box.copy(geometry.boundingBox).applyMatrix4(matrixWorld); // increase the box bounds by the worst case line width\n\n\n    let boxMargin;\n\n    if (worldUnits) {\n      boxMargin = _lineWidth * 0.5;\n    } else {\n      const distanceToBox = Math.max(camera.near, _box.distanceToPoint(_ray.origin));\n      boxMargin = getWorldSpaceHalfWidth(camera, distanceToBox, material.resolution);\n    }\n\n    _box.expandByScalar(boxMargin);\n\n    if (_ray.intersectsBox(_box) === false) {\n      return;\n    }\n\n    if (worldUnits) {\n      raycastWorldUnits(this, intersects);\n    } else {\n      raycastScreenSpace(this, camera, intersects);\n    }\n  }\n\n}\n\nexport { LineSegments2 };\n","import { LineSegmentsGeometry } from './LineSegmentsGeometry.js';\n\nclass LineGeometry extends LineSegmentsGeometry {\n  constructor() {\n    super();\n    this.isLineGeometry = true;\n    this.type = 'LineGeometry';\n  }\n\n  setPositions(array) {\n    // converts [ x1, y1, z1,  x2, y2, z2, ... ] to pairs format\n    const length = array.length - 3;\n    const points = new Float32Array(2 * length);\n\n    for (let i = 0; i < length; i += 3) {\n      points[2 * i] = array[i];\n      points[2 * i + 1] = array[i + 1];\n      points[2 * i + 2] = array[i + 2];\n      points[2 * i + 3] = array[i + 3];\n      points[2 * i + 4] = array[i + 4];\n      points[2 * i + 5] = array[i + 5];\n    }\n\n    super.setPositions(points);\n    return this;\n  }\n\n  setColors(array) {\n    // converts [ r1, g1, b1,  r2, g2, b2, ... ] to pairs format\n    const length = array.length - 3;\n    const colors = new Float32Array(2 * length);\n\n    for (let i = 0; i < length; i += 3) {\n      colors[2 * i] = array[i];\n      colors[2 * i + 1] = array[i + 1];\n      colors[2 * i + 2] = array[i + 2];\n      colors[2 * i + 3] = array[i + 3];\n      colors[2 * i + 4] = array[i + 4];\n      colors[2 * i + 5] = array[i + 5];\n    }\n\n    super.setColors(colors);\n    return this;\n  }\n\n  fromLine(line) {\n    const geometry = line.geometry;\n    this.setPositions(geometry.attributes.position.array); // assumes non-indexed\n    // set colors, maybe\n\n    return this;\n  }\n\n}\n\nexport { LineGeometry };\n","import { LineSegments2 } from './LineSegments2.js';\nimport { LineGeometry } from './LineGeometry.js';\nimport { LineMaterial } from './LineMaterial.js';\n\nclass Line2 extends LineSegments2 {\n  constructor(geometry = new LineGeometry(), material = new LineMaterial({\n    color: Math.random() * 0xffffff\n  })) {\n    super(geometry, material);\n    this.isLine2 = true;\n    this.type = 'Line2';\n  }\n\n}\n\nexport { Line2 };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { Vector3, Vector2, Color } from 'three';\nimport { useThree } from '@react-three/fiber';\nimport { LineSegments2, Line2, LineMaterial, LineSegmentsGeometry, LineGeometry } from 'three-stdlib';\n\nconst Line = /*#__PURE__*/React.forwardRef(function Line({\n  points,\n  color = 'black',\n  vertexColors,\n  linewidth,\n  lineWidth,\n  segments,\n  dashed,\n  ...rest\n}, ref) {\n  const size = useThree(state => state.size);\n  const line2 = React.useMemo(() => segments ? new LineSegments2() : new Line2(), [segments]);\n  const [lineMaterial] = React.useState(() => new LineMaterial());\n  const lineGeom = React.useMemo(() => {\n    const geom = segments ? new LineSegmentsGeometry() : new LineGeometry();\n    const pValues = points.map(p => {\n      const isArray = Array.isArray(p);\n      return p instanceof Vector3 ? [p.x, p.y, p.z] : p instanceof Vector2 ? [p.x, p.y, 0] : isArray && p.length === 3 ? [p[0], p[1], p[2]] : isArray && p.length === 2 ? [p[0], p[1], 0] : p;\n    });\n    geom.setPositions(pValues.flat());\n\n    if (vertexColors) {\n      const cValues = vertexColors.map(c => c instanceof Color ? c.toArray() : c);\n      geom.setColors(cValues.flat());\n    }\n\n    return geom;\n  }, [points, segments, vertexColors]);\n  React.useLayoutEffect(() => {\n    line2.computeLineDistances();\n  }, [points, line2]);\n  React.useLayoutEffect(() => {\n    if (dashed) {\n      lineMaterial.defines.USE_DASH = '';\n    } else {\n      // Setting lineMaterial.defines.USE_DASH to undefined is apparently not sufficient.\n      delete lineMaterial.defines.USE_DASH;\n    }\n\n    lineMaterial.needsUpdate = true;\n  }, [dashed, lineMaterial]);\n  React.useEffect(() => {\n    return () => lineGeom.dispose();\n  }, [lineGeom]);\n  return /*#__PURE__*/React.createElement(\"primitive\", _extends({\n    object: line2,\n    ref: ref\n  }, rest), /*#__PURE__*/React.createElement(\"primitive\", {\n    object: lineGeom,\n    attach: \"geometry\"\n  }), /*#__PURE__*/React.createElement(\"primitive\", _extends({\n    object: lineMaterial,\n    attach: \"material\",\n    color: color,\n    vertexColors: Boolean(vertexColors),\n    resolution: [size.width, size.height],\n    linewidth: linewidth !== null && linewidth !== void 0 ? linewidth : lineWidth,\n    dashed: dashed\n  }, rest)));\n});\n\nexport { Line };\n","/* eslint-disable no-use-before-define */\n/* eslint-disable no-param-reassign */\nimport React, { useRef, useEffect } from 'react';\nimport { Line, Text, Billboard } from '@react-three/drei';\n\nimport { useFrame } from '@react-three/fiber';\n\nconst LabelOverlay = React.forwardRef(\n  ({ labelData = [], fontURL, scrollPosition, isMobile = false, startingStep = 1 }, refs) => {\n    const { labelsetRef, groupRef } = refs;\n    useFrame(() => {\n      if (labelsetRef.current !== null && groupRef.current !== null) {\n        labelsetRef.current.rotation.y = groupRef.current.rotation.y;\n        labelsetRef.current.children.forEach((labelGroup) => {\n          const textBillboardElements = labelGroup.children.filter((d) => d.type === 'Group');\n          textBillboardElements.forEach((billboard) => {\n            billboard.rotation.y = -groupRef.current.rotation.y;\n          });\n        });\n      }\n    });\n\n    const activeStep = scrollPosition.activeStep < startingStep ? -1 : scrollPosition.activeStep;\n\n    return (\n      <group ref={labelsetRef}>\n        {labelData.map(({ desktop, mobile, visible_indices: visibleIndicies }) => {\n          const { label, lines } = isMobile === true ? mobile : desktop;\n          const {\n            position,\n            text,\n            maxWidth = 30,\n            fontSize = isMobile === true ? 0.09 : 0.05,\n            textAlign = 'center',\n          } = label;\n          const currentOpacity = visibleIndicies.includes(activeStep) ? 1 : 0;\n\n          return (\n            <group renderOrder={-1}>\n              {lines.map((line) => {\n                const { dashed = true, width = 0.7, color = 'white', path } = line;\n                return (\n                  <Line\n                    dashed={dashed}\n                    points={path}\n                    lineWidth={width}\n                    color={color}\n                    dashSize={0.015}\n                    gapSize={0.015}\n                    opacity={currentOpacity}\n                    visible={currentOpacity > 0}\n                  />\n                );\n              })}\n              <Billboard follow renderOrder={0} position={position} visible={currentOpacity > 0}>\n                <Text\n                  color=\"white\"\n                  outlineColor=\"rgb(38, 42, 51)\"\n                  outlineBlur=\"3%\"\n                  outlineWidth=\"10%\"\n                  anchorX=\"center\"\n                  anchorY=\"middle\"\n                  textAlign={textAlign}\n                  font={fontURL}\n                  fontSize={fontSize}\n                  lineHeight={1.1}\n                  fillOpacity={currentOpacity}\n                  outlineOpacity={currentOpacity}\n                  maxWidth={maxWidth}\n                >\n                  {text}\n                </Text>\n              </Billboard>\n            </group>\n          );\n        })}\n      </group>\n    );\n  }\n);\n\nexport default React.memo(LabelOverlay);\n// export default React.memo(LabelOverlay, (prevProps, nextProps) => {\n// });\n","/* eslint-disable react/prop-types */\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-param-reassign */\nimport React, { useRef, useEffect } from 'react';\nimport { A11y } from '@react-three/a11y';\n\nimport { useFrame } from '@react-three/fiber';\nimport { degToRad } from 'three/src/math/MathUtils.js';\n\nimport Model from './Model.jsx';\nimport LabelOverlay from './LabelOverlay.jsx';\n\nconst ModelLabelGroup = ({\n  model,\n  labels,\n  fontURL,\n  setRenderFinished,\n  labelData,\n  isMobile,\n  scrollPosition,\n  carouselOffsetDegrees = 0,\n  carouselRadius = 3,\n  groupVisible = true,\n  labelsVisible = false,\n}) => {\n  const refs = { groupRef: useRef(null), modelRef: useRef(null), labelsetRef: useRef(null) };\n  const pivotRef = useRef(null);\n\n  // useFrame(() => {\n  // if (pivotRef.current !== null) {\n  // pivotRef.current.rotation.y += 0.01;\n  //   }\n  // });\n\n  return (\n    <group\n      position={[0, 0, carouselRadius]}\n      rotation={[0, degToRad(carouselOffsetDegrees), 0]}\n      ref={pivotRef}\n      visible={groupVisible}\n    >\n      <group position={[0, 0, -1 * carouselRadius]}>\n        <A11y role=\"content\">\n          <Model\n            targetRadius={model.userData.target_radius}\n            // fixedRotationVal={modelRotation}\n            fixedRotationVal={0}\n            // cutTransition={activeStep >= 6 || activeStep <= 0}\n            cutTransition={false}\n            model={model}\n            ref={refs}\n            fontURL={fontURL}\n            labels={labels}\n            setRenderFinished={setRenderFinished}\n            includeLabels={false}\n          />\n        </A11y>\n\n        {labelsVisible === true && (\n          <A11y role=\"content\">\n            <LabelOverlay\n              fontURL={fontURL}\n              labelData={labelData}\n              isMobile={isMobile}\n              scrollPosition={scrollPosition}\n              ref={refs}\n            />\n          </A11y>\n        )}\n      </group>\n    </group>\n  );\n};\n\nexport default React.memo(ModelLabelGroup);\n","/* eslint-disable react/prop-types */\n/* eslint-disable jsx-a11y/aria-role */\n/* eslint-disable no-param-reassign */\nimport React, { useEffect, useRef, useMemo, useState } from 'react';\nimport { PointLightHelper } from 'three';\nimport { useThree, useFrame } from '@react-three/fiber';\nimport { degToRad, radToDeg } from 'three/src/math/MathUtils.js';\nimport { useHelper, OrbitControls } from '@react-three/drei';\n\nimport Model from '../ThreeObjects/Model.jsx';\nimport CameraContext from '../Logical/CameraContext.jsx';\n\nimport { setPartPositions, highlightParts } from './util/util.js';\nimport './styles.scss';\n// import config from '../../config.json';\n\nimport labelData from '../../../data/label_data.json';\nimport ModelLabelGroup from '../ThreeObjects/ModelLabelGroup.jsx';\n\nconst ThreeScene = ({\n  labels,\n  labelFont,\n  scrollPosition,\n  screenWidth,\n  sceneCamera,\n  setSceneCamera,\n  setCameraPosition,\n  waypoints,\n  data,\n  isMobile,\n  debug = false,\n  setRenderFinished = () => {},\n}) => {\n  const [lastActiveStep, setLastActiveStep] = useState(-1);\n  const { camera } = useThree();\n  const models = data || {};\n\n  const aircraftModels = [\n    ...Object.keys(models)\n      .filter((d) => d !== 'background_plane')\n      .map((d) => models[d]),\n  ];\n\n  const { activeStep, stepProgress, trueStepProgress } = scrollPosition;\n\n  // const modelRotation = activeStep < 2 ? (3 * Math.PI) / 2 : 0;\n  // const modelRotation = activeStep >= 5 ? (3.5 * Math.PI) / 3 : (3 * Math.PI) / 2;\n  // const modelRotation =\n  //   isMobile && waypoints[activeStep]?.model_rotation_mobile\n  //     ? waypoints[activeStep].model_rotation_mobile\n  //     : (3 * Math.PI) / 2;\n\n  const firstPointLight = useRef(null);\n  const secondPointLight = useRef(null);\n\n  const planeRef = useRef(null);\n  const carouselGroup = useRef(null);\n\n  const lightsData = useMemo(() => {\n    return waypoints[0].lights;\n    // *** Un-comment this if we go back to variable lights, but otherwise, we can just stick with the static lights/short-circuited return ***\n    // const currentValues = waypoints[Math.max(0, activeStep)].lights;\n    // const nextValues =\n    //   waypoints[Math.min(waypoints.length - 1, Math.max(0, activeStep) + 1)].lights;\n    // const interpolatedValues = currentValues.map((light, i) => ({\n    //   id: light.id,\n    //   distance: (nextValues[i].distance - light.distance) * trueStepProgress + light.distance,\n    //   intensity: (nextValues[i].intensity - light.intensity) * trueStepProgress + light.intensity,\n    // }));\n    // return interpolatedValues;\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [activeStep, trueStepProgress]);\n\n  // This should be removed for prod, but we'll adjust the size on debug mode for now\n  useHelper(firstPointLight, PointLightHelper, debug === true ? 0.2 : 0, 'green');\n  useHelper(secondPointLight, PointLightHelper, debug === true ? 0.2 : 0, 'red');\n\n  useEffect(() => {\n    const currentValue = waypoints[Math.max(0, activeStep)].plane_opacity;\n    const nextValue =\n      waypoints[Math.min(waypoints.length - 1, Math.max(0, activeStep + 1))].plane_opacity;\n\n    const planeOpacity = (nextValue - currentValue) * trueStepProgress + currentValue;\n    const currentPlaneOpacity = planeRef.current?.children[0]?.material?.opacity;\n\n    if (planeRef.current !== null && currentPlaneOpacity !== planeOpacity) {\n      planeRef.current.children[0].material.opacity = planeOpacity;\n    }\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [activeStep, trueStepProgress, models.background_plane]);\n\n  useEffect(() => {\n    const lastStep = waypoints[Math.max(activeStep - 1, 0)];\n    const currentStep = waypoints[Math.max(activeStep, 0)];\n\n    const lastCarouselRotation = lastStep.carousel_rotation;\n    const currentCarouselRotation = currentStep.carousel_rotation;\n\n    const progressCarouselRotation =\n      lastCarouselRotation +\n      Math.min(1, stepProgress * 2.5) * (currentCarouselRotation - lastCarouselRotation);\n\n    if (carouselGroup.current !== null) {\n      carouselGroup.current.rotation.y = degToRad(progressCarouselRotation);\n    }\n\n    // const labelOpacity = lastOpacity + stepProgress * (currentOpacity - lastOpacity);\n\n    // const { modelRef } = refs;\n\n    // if (modelRef.current === null) {\n    //   return;\n    // }\n    // modelRef.current.children.forEach((child) => {\n    // setPartPositions({\n    //   part: child,\n    //   lastStep,\n    //   currentStep,\n    //   stepProgress,\n    //   labelOpacity,\n    //   modelRotation,\n    //   newStep: activeStep !== lastActiveStep,\n    // });\n    // highlightParts({\n    //   part: child,\n    //   lastStep,\n    //   currentStep,\n    //   stepProgress,\n    // });\n    // });\n\n    setLastActiveStep(activeStep);\n  }, [waypoints, activeStep, stepProgress]);\n\n  const carouselRadius = 3;\n\n  return (\n    <React.Fragment>\n      {debug === true && (\n        <OrbitControls\n          camera={sceneCamera}\n          onChange={() =>\n            setCameraPosition({ position: camera.position, rotation: camera.rotation })\n          }\n        />\n      )}\n\n      <CameraContext\n        activeStep={activeStep}\n        stepProgress={stepProgress}\n        waypoints={waypoints}\n        screenWidth={screenWidth}\n        sceneCamera={sceneCamera}\n        setSceneCamera={setSceneCamera}\n      />\n\n      {/* Background Plane */}\n      {models.background_plane && (\n        <primitive\n          object={models.background_plane.scene.clone()}\n          position={[0, -2.15, 0.3]}\n          rotation={[0, -Math.PI, 0]}\n          scale={[100, 100, 100]}\n          receiveShadow\n          ref={planeRef}\n        />\n      )}\n      <group position={[0, 0, carouselRadius]} ref={carouselGroup}>\n        <group position={[0, 0, -1 * carouselRadius]}>\n          {aircraftModels.map((model, i) => {\n            const rotationOffset = i * -60;\n\n            const groupVisible = isMobile\n              ? !(\n                  Math.abs(-1 * rotationOffset - radToDeg(carouselGroup.current.rotation.y)) % 360 >\n                  60\n                )\n              : true;\n\n            return (\n              <ModelLabelGroup\n                model={model}\n                fontURL={labelFont}\n                labels={labels}\n                setRenderFinished={setRenderFinished}\n                labelData={labelData}\n                isMobile={isMobile}\n                scrollPosition={scrollPosition}\n                carouselOffsetDegrees={rotationOffset}\n                carouselRadius={carouselRadius}\n                groupVisible={groupVisible}\n              />\n            );\n          })}\n        </group>\n      </group>\n\n      {/* Lights */}\n\n      <pointLight\n        color=\"#FFFDF0\"\n        distance={lightsData[0].distance}\n        intensity={lightsData[0].intensity}\n        position={[-0.347, 0.678, 0.394]}\n        castShadow\n        ref={firstPointLight}\n        shadow-mapSize-height={1024}\n        shadow-mapSize-width={1024}\n        shadow-radius={5}\n        decay={lightsData[0].decay}\n        shadow-camera-near={0.1}\n        shadow-camera-far={3}\n        shadow-bias={-0.01}\n      />\n\n      <pointLight\n        color=\"#04B1FB\"\n        distance={lightsData[1].distance}\n        intensity={lightsData[1].intensity}\n        position={[0.005, -0.655, 0.026]}\n        castShadow={false}\n        ref={secondPointLight}\n        // shadow-mapSize-height={1024}\n        // shadow-mapSize-width={1024}\n        // shadow-radius={2}\n        decay={lightsData[1].decay}\n      />\n\n      <ambientLight color=\"#f6f3ea\" intensity={lightsData[2].intensity} />\n    </React.Fragment>\n  );\n};\n\nexport default React.memo(ThreeScene);\n","/* eslint-disable import/prefer-default-export */\nimport React from 'react';\n\nconst AircraftSVG = ({ aircraft, progress = 0.3, isMobile = false }) => {\n  const gradientRotation = isMobile ? 'rotate(0)' : 'rotate(90)';\n\n  const fill = progress <= 0 ? 'rgba(0,0,0,0.3)' : `url(#gradient-${aircraft})`;\n\n  if (aircraft === 'airbus') {\n    return (\n      <svg\n        width=\"122\"\n        height=\"30\"\n        viewBox=\"0 0 122 30\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"breadcrumb\"\n      >\n        <defs>\n          <linearGradient id={`gradient-${aircraft}`} gradientTransform={gradientRotation}>\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"white\" />\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n            <stop offset={`${((1 - progress) * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n          </linearGradient>\n        </defs>\n        <path\n          d=\"M59.26 3.27V3.41V4.08L59.18 4.1L58.99 4.12L58.68 4.14H58.35L57.9 4.16H57.4H56.89H56.25L55.7 4.14H55.4L55.21 4.12H55.07L55 4.09V3.95L55.01 3.28L55.16 2.9L55.41 2.28L55.17 2.32L54.88 2.35L54.21 2.41L53.76 2.44L53.09 2.48H52.89L52.22 2.52L51.55 2.55H51.06L50.39 2.58L49.72 2.6L49.05 2.62L48.38 2.64H47.96L47.29 2.65H46.62L45.95 2.66H45.82H45.15H44.48H43.81H43.14L42.78 2.65L42.11 2.63L41.71 2.59L41.67 2.56V2.46L41.77 2.34L41.88 2.28H41.91L42.58 2.21L43.25 2.15H43.47L44.14 2.09L44.81 2.05L45.48 2.01L46.15 1.97L46.82 1.93L47.19 1.91L47.86 1.88L48.53 1.85L49.2 1.82L49.87 1.79L50.54 1.76L51.21 1.73H51.76L52.43 1.7L51.8 1.59L51.3 1.49L51.08 1.44L50.96 1.41L50.89 1.39L50.83 1.36L50.92 1.2L51.05 1.12L51.31 1.09H51.39L52.06 1.1L52.69 1.15L53.36 1.2L53.69 1.24L54.36 1.33L54.7 1.39L55.36 1.51L55.71 1.58L55.75 1.48L55.99 1.24L56.47 0.769996L56.67 0.649996L56.83 0.609996H56.97L57.16 0.589996H57.3L57.52 0.659996L57.71 0.769996L57.96 1.01L58.44 1.48L58.5 1.63L58.8 1.55L59.23 1.49L59.9 1.41L60.52 1.37L61.19 1.33H61.84L62.51 1.3L63.18 1.28H63.27H63.94H64.61L65.28 1.29H65.95L66.62 1.3H66.68L67.35 1.32L68.02 1.34H68.14L68.81 1.36L69.48 1.38L70.15 1.4L70.82 1.42L71.28 1.44L71.95 1.48H72.06L72.73 1.52H72.77L73.44 1.6H73.46L73.57 1.66L73.68 1.78L73.7 1.89L73.62 1.94L73.11 2.03L72.55 2.08L71.88 2.15L71.36 2.18L70.69 2.22L70.02 2.26L69.35 2.3L68.68 2.34L68.03 2.37L67.36 2.4L66.69 2.43L66.02 2.46H65.4L64.73 2.49H64.06L63.39 2.52L63.52 2.62L63.6 2.81L63.56 2.86L63.49 2.9L63.34 2.94L63.23 2.96L62.8 3.01H62.74L62.07 3.04H61.82L61.15 3.03H60.48L59.92 2.99L59.25 2.96L59.04 2.94L59.22 3.37L59.26 3.27ZM28.17 7.49H28.15L27.48 7.47L27.13 7.44L26.91 7.41L26.83 7.39H26.81H26.68H26.01L25.36 7.4H24.69H24.02H23.45H23.55L24.22 7.46L24.89 7.52L25.56 7.58L26.23 7.64L26.9 7.7L27.57 7.76H27.61L28.08 7.73L28.19 7.47L28.17 7.49ZM121.29 8.53L121.01 8.5V8.48L120.94 8.45L120.76 8.42L120.25 8.37L119.58 8.34H119.28L118.61 8.31H117.94L117.27 8.28H117.07H116.4H115.73H115.37H114.7L114.03 8.3H113.42L112.91 8.34L113.16 7.76V7.16H113.14H112.97H112.65H112.36H112.05H111.54H111.08H110.71L110.31 7.17H110.1L109.94 7.18H109.87V7.79L110.14 8.41H110.04H109.37L109.07 8.43L108.59 8.4L107.92 8.38H107.55L106.88 8.37H106.21H105.54H105.44H104.77H104.1L104 8.38L104.09 8.17V7.66H104.02H103.9H103.7H103.44H103.1H102.76H102.43H101.98L101.66 7.67H101.44L101.36 7.68V8.18L101.48 8.47L101.2 8.49L100.94 8.54H100.93L100.95 8.65L101.01 8.73H100.92L100.25 8.7H100.18L99.51 8.69H99.13H98.46H97.79H97.12H96.9L96.23 8.71H95.56L95.15 8.73L94.48 8.75L93.81 8.77L93.14 8.79H93.08L92.41 8.84H92.29L92.11 8.87L92.74 8.64L93.37 8.41L94 8.18L94.63 7.95L95.19 7.74L95.86 7.68L96.53 7.62L97.2 7.56L97.87 7.5H97.92H98.59H99.26H99.93H100.6H101.27H101.94H102.61H103.28H103.95H104.69H105.07H105.41H105.7H105.91H106.01H106.06L106.18 7.06L106.28 7H106.95H107.62H108.29H108.96H109.63H110.3H110.97H111.64H112.31H112.98H113.65H113.74H114.15H114.63H114.94L115.22 6.99H115.41L115.52 6.98H115.56L115.69 6.45L116.27 6.11L116.37 6.05H116.36L115.88 5.57L115.71 5.4H115.59L115.29 5.38H114.86H114.19H113.52H112.85H112.18H111.51H110.84H110.17H109.5H108.83H108.16H107.79V4.71V4.04V3.68V3.6V3.48L107.77 3.36V3.26L107.74 3.13L107.72 3.02L107.7 2.92L107.68 2.83L107.66 2.75L107.63 2.67L107.6 2.6L107.57 2.54L107.54 2.49L107.51 2.46L107.48 2.43L107.45 2.41L106.78 2.35L106.11 2.29L105.44 2.23L104.77 2.17L104.49 2.15L103.82 2.09L103.15 2.03L102.48 1.97L101.8 1.91L101.13 1.88L100.46 1.85L99.79 1.82L99.12 1.8L98.45 1.78H98.13H97.46H96.79H96.67L96 1.81H95.99H95.89L95.22 1.79L94.55 1.77L93.88 1.75L93.21 1.73L92.54 1.71H92.26H91.59H91.08L90.57 1.74L90.26 1.77L89.76 1.83L89.41 1.9L89.14 1.97L88.49 2.14L87.84 2.31L87.77 2.33L87.12 2.5L86.54 2.65L86.19 2.76L85.91 2.88L85.75 2.96L85.65 3.01L85.54 3.08L85.45 3.15L85.39 3.2L85.31 3.27L85.24 3.35L85.18 3.44L85.13 3.55L85.1 3.64L84.46 3.84L83.82 4.04L83.18 4.24L82.54 4.44L81.9 4.64L81.26 4.84L80.62 5.04L79.98 5.24L79.34 5.44L78.7 5.64L78.06 5.84L77.42 6.04L76.78 6.24L76.14 6.44L75.5 6.64L74.86 6.84L74.22 7.04L73.58 7.24L72.94 7.44L72.3 7.64L71.66 7.84L71.02 8.04L70.38 8.24L69.74 8.44L69.1 8.64L68.75 8.75H68.54H68.48L67.81 8.77L67.14 8.79L66.47 8.81L65.97 8.83L65.3 8.86L64.93 8.88L64.26 8.92L63.59 8.96L62.92 9H62.89L62.22 9.04H62.07L61.98 9.06L61.32 8.91L60.66 8.76L60 8.61L59.34 8.46L58.68 8.31H58.63L58.87 8.3H59.16H59.42H59.68H59.84H59.86L60.32 7.84L59.86 7.57L59.77 7.21H59.75H59.65H59.47H59.23H58.93H58.26H57.59H56.92H56.25H55.58H54.91H54.24H53.56L52.89 7.14L52.22 7.07L51.55 7L50.88 6.93H50.76L50.09 6.86L49.42 6.8L48.77 6.74L48.1 6.69L47.43 6.64L46.76 6.59H46.64L46.25 6.55H46.19H46.15H46.82H47.11H47.49H47.79H48.28H48.95H49.62H50.29H50.96H51.63H52.3H52.97H53.64H54.31H54.98H55.65H55.94L55.89 6.68V7.1H55.99H56.16H56.36H56.56H56.82H57.09H57.32H57.54H57.76H57.93H58.04H58.12V6.67L58.06 6.54H58.73H59.4H60.07H60.74H60.98H61.65H61.7H62.14H62.48L62.72 6.51L62.94 6.29H63.61L64.28 6.26H64.4L64.96 6.23L65.18 6.2H65.21V6.13L65.16 6.07L65.1 6.04L64.71 6L64.37 5.97L63.7 5.93H63.69L63.33 5.91L63.6 5.64L63.02 5.29L62.73 5.11L62.57 4.46V4.41L62.45 4.39H62.25L61.93 4.37H61.55L60.97 4.36H60.3H59.63H58.96H58.29H57.62H56.95H56.28H55.61H54.94H54.27H53.6H52.93H52.26H51.59H50.92H50.25H49.58H49.35H48.79H48.22H47.86L47.48 4.37H47.23L46.84 4.39L46.61 4.41L45.94 4.48L45.27 4.55L44.6 4.62L43.93 4.69L43.26 4.76L42.59 4.83L41.92 4.9L41.25 4.97H41.13L41.12 4.98L40.45 4.93H40.34L39.71 4.68L39.44 4.58L38.82 4.33L38.29 4.12H38.23L37.56 4.08L36.89 4.04L36.22 4L35.55 3.96L34.88 3.92L34.21 3.88L33.54 3.84L32.93 3.8L32.26 3.78L31.59 3.76H31.23L30.56 3.75H29.89H29.22H28.55H28.37L27.7 3.77L27.03 3.79H26.86L26.19 3.83L25.84 3.85L25.22 3.9H25.2L24.72 3.96H24.68L24.52 3.99L24.38 4.02H24.35L24.26 4.05L24.14 4.09H24.12L24.09 4.11H24.07L24.06 4.13V4.14V4.15V4.16L24.07 4.18H24.09L24.2 4.26L24.36 4.37L24.38 4.39L24.46 4.46L24.49 4.48H24.43V4.49L24.48 4.71L24.5 4.73L24.11 4.71L23.44 4.68L22.77 4.65L22.1 4.62H21.79L21.12 4.59H20.59L19.92 4.56H19.25L18.58 4.54H17.91L17.77 4.53H17.1L16.43 4.55H16.18L15.63 4.58L15.19 4.61L14.52 4.7L14.49 4.64L14 4.18L13.82 4.01L13.62 3.89L13.49 3.86L13.34 3.84H13.12L12.97 3.85L12.84 3.89L12.65 3.99L12.16 4.45L11.97 4.63L11.89 4.81H11.79L11.27 4.72L10.6 4.65L9.92997 4.58H9.85997L9.18997 4.54H8.89997L8.22997 4.5H7.98997L7.31997 4.49H6.64997H5.96997H5.34997L4.67997 4.51L4.00997 4.53H3.78997L3.38997 4.56L2.92997 4.59L2.70997 4.64L2.58997 4.73L2.52997 4.85L2.54997 4.87L2.62997 4.9L2.84997 4.94L3.44997 5.02L3.75997 5.05L3.08997 5.09L2.41997 5.13L2.08997 5.15L1.41997 5.21L0.879971 5.26L0.789971 5.31L0.719971 5.42V5.54L0.979971 5.59L1.64997 5.63H1.73997L2.40997 5.65H3.07997L3.74997 5.67H3.90997H4.57997H5.24997H5.82997H6.49997L7.16997 5.65H7.83997L8.36997 5.63L9.03997 5.6L9.63997 5.57L10.31 5.53L10.58 5.51L11.19 5.45H11.24H11.61L11.35 6.07L11.26 6.29V6.96V7.01H11.31L11.55 7.03H11.85L12.17 7.04H12.53H12.94H13.55H14.13H14.52H14.8H15.05L15.21 7.02V6.35V6.3L14.96 5.73L15.63 5.76L16.3 5.79H16.41L17.08 5.8H17.75L17.86 5.81H18.53L19.2 5.8H19.7L20.37 5.76H20.51L20.96 5.71L21.14 5.68L21.22 5.65L21.25 5.62V5.57L21.2 5.5L21.87 5.48L22.54 5.46H22.83L23.5 5.41L24.17 5.37L24.84 5.33L25.22 5.31L25.71 5.52L26.05 5.62L26.27 5.78L26.56 5.99L26.84 6.19L27.38 6.59L27.6 6.75H27.53L27.27 6.73H26.6L26.42 6.71H25.75H25.37L24.7 6.73L24.03 6.75H23.61L22.94 6.78H22.8L22.13 6.81L21.46 6.84H21.32L20.65 6.88H20.53L20.12 6.92L19.69 6.97H19.68L19.62 7L19.56 7.07V7.14L19.61 7.16L19.92 7.2L20.54 7.24H20.26H19.59H18.92H18.25H17.58H16.91H16.24H15.57H14.9H14.23H13.56H12.89H12.22H11.55H10.88H10.21H9.58997H9.16997H8.74997L8.53997 7.25H8.42997L8.26997 7.88L7.68997 8.22L7.46997 8.35L7.95997 8.81L8.29997 9.13H8.38997H8.68997H9.22997H9.70997H10.17H10.59H11.26H11.93H12.6H13.27H13.94H14.61H15.28H15.95H16.62H17.29H17.96H18.63H19.3H19.97H20.64H21.31H21.8H22.14H22.44H22.79H23.46H24.13H24.8H25.47H25.86L26.34 9.6H26.38H26.5H26.79H27.14H27.53H28.2H28.87H29.54H30.21H30.88H31.55H32.22H32.89H33.56H34.23H34.74H35.07H35.32H35.63L36.28 9.78L36.93 9.96L37.38 10.08L37.76 10.18L38.41 10.36L39.06 10.54L39.71 10.72L39.97 10.79L40.18 10.86L40.48 10.97L40.72 11.05L41.07 11.17L41.3 11.25L41.64 11.37L41.87 11.45L42.21 11.57L42.69 11.73L43.28 11.92L43.92 12.11L44.4 12.25L44.8 12.36L44.48 12.47L43.85 12.71L43.42 12.87L42.86 13.11L42.72 13.17L42.64 13.21L42.56 13.25L42.02 13.5L41.8 13.62L41.65 13.69L41.08 14.05L41.05 14.07L40.58 14.39L40.08 14.79L39.59 15.25L39.25 15.57L38.78 16.06L38.32 16.55L38.29 16.58L37.86 17.1L37.48 17.56L37.09 18.1L36.7 18.64L36.43 19.01L36.07 19.58L35.77 20.05L35.43 20.63L35.25 20.95L35.21 20.97L35.17 21.05H35.15L34.81 21.64L34.62 21.96L34.6 22.04V22.11L34.63 22.18L34.67 22.2L34.73 22.22L35.19 22.43L35.75 22.66H35.76L35.78 22.67L36.41 22.9L37.04 23.13L37.67 23.36L38.3 23.59L38.93 23.82L39.56 24.05L40.09 24.24L40.74 24.42L40.81 24.44L41.46 24.6L41.73 24.67L42.39 24.78L42.96 24.88L43.62 24.99L43.84 25.03L44.51 25.09L45.18 25.15L45.44 25.17L45.74 25.2L46.41 25.22L47.08 25.24L47.75 25.26H47.95H48.62L49.29 25.28H49.32L49.02 25.88L48.98 25.96L48.75 26.42H48.08H47.41H47.19H46.52H45.85L45.6 26.43L44.93 26.48L44.87 26.5L44.84 26.52V26.54L44.79 26.58L44.77 26.64V26.76L45.17 26.78H45.84L46.51 26.77H47.18H47.29V27.44L47.3 27.69L47.36 27.72L47.47 27.74L47.73 27.77H48.07L47.94 28.04H47.27L46.96 28.02H46.29H45.62H44.95H44.28H44.16L43.76 28.04L43.7 28.07L43.65 28.14L43.62 28.2V28.35L44.29 28.4H44.34H45.01H45.68H46.16H46.36V29.07V29.46H46.44H46.67L47.14 29.47H47.79H48.46H48.7L49.37 29.46H50.04L50.71 29.44H51.08V28.76V28.34L51.61 27.93L52.14 27.52L52.67 27.11L53.2 26.7L53.73 26.29L54.26 25.88L54.47 25.71L55.11 25.92L55.75 26.13L56.39 26.34L57.03 26.55L57.67 26.76L58.31 26.97L58.95 27.18L59.59 27.39L60.23 27.6L60.87 27.81L61.51 28.02L62.15 28.23L62.79 28.44L63.43 28.65L64.07 28.86L64.71 29.07L65.35 29.28L65.81 29.43H65.91L66.21 29.45H66.87L67.54 29.44H67.64L68.31 29.42H68.57L69.24 29.4L69.84 29.38L69.25 29.07L68.66 28.76L68.07 28.45L67.48 28.14L66.89 27.83L66.52 27.63H66.62L67.29 27.6H67.45L68.12 27.56L68.57 27.53L67.96 27.24L67.35 26.95L66.74 26.66L66.13 26.37L65.52 26.08L64.91 25.79L64.3 25.5L63.69 25.21L63.08 24.92L62.47 24.63L61.86 24.34L61.25 24.05L60.96 23.91L61.59 23.66L62.22 23.41L62.51 23.3L63.13 23.03L63.75 22.76L64.37 22.49L64.83 22.29L65.44 22L65.81 21.82L66.4 21.51L67 21.2L67.14 21.13L67.73 20.8L68.09 20.6L68.66 20.25L69.23 19.9L69.61 19.67L70.16 19.29L70.71 18.91L70.82 18.83L71.35 18.42L71.88 18.01L72.23 17.74L72.37 17.63L72.88 17.19L73.39 16.75L73.6 16.56L73.72 16.45L74.2 15.98L74.68 15.51L74.99 15.21L75.62 14.98L76.25 14.75L76.88 14.52L77.51 14.29L78.14 14.06L78.77 13.83L79.4 13.6L80.03 13.37L80.66 13.14L81.29 12.91L81.92 12.68L82.55 12.45L83.18 12.22L83.81 11.99L84.44 11.76L85.07 11.53L85.7 11.3L86.33 11.07L86.96 10.84L87.59 10.61L88.22 10.38L88.85 10.15L89.48 9.92L90.11 9.69L90.74 9.46L91.37 9.23L91.98 9.01V9.05L92.05 9.12L92.12 9.15H92.13L92.58 9.2L93.02 9.23L93.69 9.27H93.85L94.52 9.31L95.19 9.34H95.43L96.1 9.37H96.29L96.96 9.39L97.63 9.41H98.2L98.87 9.42H99.36L100.03 9.41H100.32L100.61 9.39L101.28 9.34H101.38L101.47 9.38H101.52H101.72L101.91 9.35L101.94 9.41L102.41 9.86L102.59 9.95L102.78 9.97H102.87L102.99 9.96L103.09 9.93L103.18 9.88L103.25 9.82L103.68 9.41L103.71 9.34L104.06 9.39H104.36L104.49 9.4L104.65 9.35H104.68H105.06H105.55L106.22 9.36H106.35H107.02H107.56L108.23 9.33L108.9 9.31L109.57 9.29L110.24 9.26H110.48L110.61 9.24L111.09 9.71L111.13 9.75L111.28 9.84L111.4 9.88H111.59H111.66H111.8L111.85 9.86L111.94 9.83L112.09 9.75L112.58 9.29L112.66 9.21L112.69 9.14L113.17 9.18H113.55L113.79 9.2H114.46H114.99H115.08L115.75 9.17L116.42 9.15L117.11 9.13L117.78 9.1H118.02L118.69 9.05L119.36 9.01L119.73 8.99L120.4 8.95H120.49L120.95 8.9L121.48 8.85L121.56 8.81L121.62 8.72V8.62L121.43 8.57L121.29 8.53ZM64.91 9.96L64.46 10.1L63.82 10.3L63.18 10.5L62.54 10.7L61.9 10.9L61.49 11.03L61.09 11L60.42 10.97L59.75 10.94L59.08 10.91L58.63 10.89L58.52 10.83L58.35 10.71L58.25 10.6L58.21 10.5V10.41L58.28 10.33L58.37 10.25L58.51 10.17L58.69 10.09L58.91 10.02L59.11 9.96L59.33 9.93H59.36L59.44 9.91L59.78 9.86L60.44 9.76L60.93 9.69H60.97L61.02 9.68L61.69 9.7L62.36 9.72H62.78L63.45 9.74H64.12L64.32 9.75H64.99H65.53L64.89 9.95L64.91 9.96Z\"\n          fill={fill}\n        />\n      </svg>\n    );\n  }\n  if (aircraft === 'joby') {\n    return (\n      <svg\n        width=\"101\"\n        height=\"47\"\n        viewBox=\"0 0 101 47\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"breadcrumb\"\n      >\n        <defs>\n          <linearGradient id={`gradient-${aircraft}`} gradientTransform={gradientRotation}>\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"white\" />\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n            <stop offset={`${((1 - progress) * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n          </linearGradient>\n        </defs>\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M20.41 15.15C20.98 15.15 21.56 15.25 22.13 15.16H23.39C23.64 15.16 23.9 15.16 24.15 15.17C24.66 15.17 25.18 15.19 25.69 15.2C26.45 15.21 27.21 15.23 27.96 15.24C29.26 15.26 30.55 15.28 31.85 15.3C32.67 15.31 33.49 15.33 34.32 15.34C34.9 15.34 35.49 15.37 35.59 15.83C35.67 16.2 35.24 16.35 34.95 16.42C34.05 16.63 33.03 16.52 32.09 16.68C29.84 16.87 27.59 17.06 25.34 17.24C24.88 17.28 24.42 17.32 23.97 17.36C23.36 17.46 22.6 17.5 21.95 17.42C21.75 17.4 21.51 17.5 21.27 17.46C21.05 17.4 20.82 17.34 20.6 17.28C20.63 17.69 20.67 18.09 20.7 18.5H20.62V18.58H19.46C19.54 18.79 19.91 19.84 20.01 19.9C20.83 20.02 21.64 20.14 22.46 20.26C22.46 20.06 22.46 19.86 22.47 19.66H22.51C23.1 19.6 23.69 19.56 24.28 19.52C24.78 19.49 25.28 19.45 25.78 19.42C26.66 19.29 27.59 19.3 28.57 19.3C30.33 19.3 32.35 19.14 33.96 19.39C34.43 19.42 34.89 19.45 35.36 19.48C36.08 19.52 36.8 19.57 37.52 19.61C38.96 19.8 40.4 20 41.85 20.19C41.85 19.02 41.83 17.75 42.02 16.72C42.08 16.4 42.09 16.08 42.23 15.83C42.29 15.83 42.42 15.83 42.46 15.79C42.49 15.47 42.52 15.16 42.55 14.84C42.2 14.8 41.86 14.75 41.51 14.71C41.36 14.74 41.21 14.76 41.06 14.79C40.7 14.86 40.21 14.92 39.79 14.85C38.02 14.69 36.25 14.53 34.49 14.37C33.37 14.27 32.25 14.17 31.13 14.07C30.23 13.99 29.33 13.91 28.43 13.83C28.14 13.77 27.66 13.66 27.74 13.27C27.91 12.37 30.23 12.87 31.28 12.71C32.58 12.69 33.88 12.67 35.18 12.65C35.95 12.64 36.73 12.62 37.5 12.61C38.02 12.61 38.54 12.59 39.05 12.58C39.31 12.58 39.56 12.58 39.82 12.57C40.72 12.43 41.83 12.57 42.72 12.58C42.81 11.4 43.52 10.61 44.17 9.96C44.4 9.73 44.68 9.38 45.06 9.31C45.57 9.22 45.81 9.64 46.05 9.84C46.72 10.38 47.55 11.43 47.63 12.55C48.13 12.55 48.63 12.57 49.13 12.58C49.43 12.53 49.88 12.52 50.18 12.57C50.44 12.57 50.69 12.57 50.95 12.58C51.2 12.58 51.46 12.58 51.71 12.59C52.03 12.59 52.34 12.59 52.66 12.6C53.11 12.6 53.55 12.62 54 12.63C54.77 12.64 55.54 12.66 56.31 12.67C57.33 12.69 58.36 12.7 59.38 12.72C60.36 12.88 62.65 12.4 62.81 13.25C62.89 13.68 62.38 13.79 62.05 13.85C61.16 13.93 60.27 14 59.38 14.08C56.83 14.29 54.27 14.51 51.71 14.72C50.67 14.89 48.64 15.02 47.81 14.68C47.84 15.06 47.87 15.44 47.9 15.82C47.98 15.82 48.06 15.82 48.14 15.83C48.43 16.49 48.34 17.35 48.47 18.19C48.47 18.55 48.49 18.9 48.5 19.26C48.54 19.52 48.41 20.49 48.53 20.62C48.8 20.64 49.08 20.66 49.35 20.68C49.98 20.77 50.62 20.86 51.25 20.95C52.16 21.15 53.07 21.32 53.93 21.58C54.38 21.73 54.83 21.87 55.28 22.02C56.14 21.99 57 21.96 57.86 21.93C58.27 21.93 58.68 21.93 59.09 21.94C59.42 21.94 59.75 21.96 60.08 21.97C60.34 21.97 60.6 21.99 60.86 22C61.61 22.06 62.36 22.11 63.11 22.17C64.05 22.33 64.98 22.33 65.88 22.5C70.37 23.21 74.86 23.91 79.35 24.62C81.27 24.92 83.19 25.21 85.11 25.51C84.17 23.79 83.24 22.08 82.3 20.37C82.06 21.01 81.81 21.65 81.57 22.28C81.46 22.55 81.4 22.92 81.18 23.09C81.01 23.22 80.7 23.3 80.45 23.19C80.1 23.05 80.04 22.65 79.9 22.29C79.65 21.64 79.4 21 79.16 20.35C78.2 17.91 77.41 15.89 77.41 12.43C77.41 11.77 77.41 11.1 77.42 10.44C77.42 10.08 77.42 9.73 77.43 9.37C77.53 8.75 77.5 8.12 77.62 7.57C77.67 7.37 77.68 7.16 77.79 7.02H78.01C78.04 6.69 78.06 6.37 78.09 6.04C77.75 6 77.41 5.95 77.06 5.91C76.91 5.94 76.76 5.96 76.61 5.99C76.24 6.06 75.76 6.12 75.33 6.05C73.56 5.89 71.79 5.73 70.03 5.57C68.91 5.47 67.79 5.37 66.67 5.27C65.81 5.19 64.94 5.12 64.08 5.04C63.74 4.98 63.27 4.91 63.28 4.53C63.3 3.98 63.9 4.02 64.42 3.94C65.22 3.93 66.03 3.91 66.83 3.9C68.14 3.88 69.44 3.86 70.75 3.84C71.52 3.83 72.3 3.81 73.07 3.8C73.59 3.8 74.11 3.78 74.62 3.77C74.88 3.77 75.14 3.77 75.4 3.76C75.64 3.76 75.88 3.76 76.12 3.75H76.75C76.99 3.75 77.24 3.75 77.48 3.74C77.75 3.75 78.01 3.77 78.28 3.78C78.28 2.68 79.24 1.53 79.87 1.02C80.13 0.809999 80.45 0.329999 80.99 0.539999C81.27 0.649999 81.51 0.929999 81.71 1.13C82.23 1.65 82.7 2.19 82.99 2.94C83.09 3.19 83.1 3.46 83.18 3.74C83.76 3.81 84.6 3.83 85.17 3.74C85.89 3.75 86.61 3.77 87.33 3.78C87.81 3.78 88.29 3.8 88.77 3.81C89.28 3.81 89.79 3.83 90.3 3.84C91.06 3.85 91.82 3.87 92.59 3.88C93.36 3.89 94.14 3.91 94.91 3.92C95.84 4.07 98.16 3.62 98.35 4.42C98.45 4.83 97.97 4.98 97.68 5.04C96.81 5.22 95.84 5.14 94.93 5.28C93.19 5.43 91.45 5.57 89.72 5.72C88.65 5.81 87.57 5.9 86.5 5.99C85.97 6.07 85.29 6.12 84.74 6.04C84.53 6.05 84.32 6.07 84.11 6.08C83.86 6.02 83.6 5.96 83.35 5.9C83.38 6.28 83.42 6.65 83.45 7.03C83.56 7.03 83.65 7.03 83.71 7.07C83.77 7.32 83.83 7.58 83.89 7.83C83.93 8.21 83.97 8.59 84.01 8.97C84.03 9.59 84.04 10.21 84.06 10.83H84.1C84.44 10.89 84.78 10.95 85.13 11.01C85.85 11.19 86.56 11.38 87.22 11.59C87.56 11.7 87.9 11.81 88.23 11.92C91.13 15.6 94.03 19.28 96.94 22.96C97.82 24.08 98.7 25.19 99.58 26.31C99.95 26.8 100.5 27.31 100.49 28.15C100.44 28.18 100.42 28.25 100.37 28.28C99.5 28.53 98.62 28.79 97.75 29.04C95.74 29.63 93.74 30.21 91.73 30.8C88.3 31.8 84.87 32.8 81.45 33.8C78.55 34.69 75.65 35.57 72.74 36.46C70.87 37.03 68.93 37.47 66.99 37.96C66.15 38.13 65.31 38.3 64.47 38.47C63.74 39.43 63.01 40.4 62.27 41.36C62.42 41.66 62.57 41.95 62.72 42.25C64.96 41.71 66.55 44.1 65.24 45.85C64.38 46.99 62.45 47.06 61.56 45.9C61.39 45.68 61.24 45.41 61.15 45.12C61.11 44.91 61.07 44.71 61.03 44.5C60.8 44.24 60.23 44.03 60.12 43.72C60.01 43.39 60.24 42.64 60.31 42.32C60.51 41.25 60.7 40.18 60.9 39.11H60.82C60.3 39.18 59.78 39.26 59.25 39.33C58.09 39.54 56.82 39.56 55.63 39.75C55.23 39.78 54.83 39.8 54.44 39.83C53.49 39.98 52.45 39.86 51.46 40.02C51.09 40.04 50.72 40.05 50.34 40.07C49.78 40.07 49.23 40.07 48.67 40.08C48.28 40.08 47.88 40.08 47.49 40.09C47.18 40.09 46.87 40.09 46.57 40.08H45.98C45.45 40.06 44.91 40.05 44.38 40.03C43.74 40 43.1 39.97 42.47 39.94C41.93 39.9 41.39 39.86 40.85 39.82C40.34 39.78 39.83 39.74 39.32 39.7C38.47 39.6 37.62 39.49 36.76 39.39C35.56 39.18 34.43 39.14 33.29 38.9C32.79 38.82 32.3 38.74 31.8 38.66C31.53 38.6 31.27 38.54 31 38.48C30.87 38.48 30.68 38.65 30.59 38.71C30.29 38.89 29.59 39.16 29.46 39.48L29.38 39.45C29.26 39.78 29.14 40.11 29.02 40.44L29.08 40.48C29.01 40.79 28.82 41.34 28.66 41.58C28.6 41.58 28.59 41.57 28.57 41.59C28.55 41.63 28.54 41.68 28.52 41.72C29.15 41.94 29.78 43.08 29.5 44.03C29.21 44.98 28.09 45.96 26.75 45.44C26.17 45.21 25.73 44.79 25.5 44.21C24.9 42.68 26.26 41.24 27.82 41.46C27.84 41.39 27.85 41.31 27.87 41.24L27.81 41.19C27.94 40.84 28.07 40.49 28.2 40.14L28.28 40.17C28.4 39.84 28.52 39.5 28.64 39.17H28.58C28.73 38.73 28.88 38.31 29.03 37.89C28.72 37.81 28.44 37.66 28.17 37.54C27.37 37.2 26.64 36.83 25.95 36.4C25.64 36.21 25.2 35.86 25.28 35.3C25.38 34.67 25.72 34.43 26.04 34.04C26.5 33.46 27.05 32.87 27.63 32.41C28.32 31.85 29.01 31.28 29.77 30.79C30.65 30.24 31.59 29.78 32.5 29.25C33.52 28.65 34.6 28.1 35.71 27.61C36.64 27.2 37.54 26.75 38.5 26.34C38.78 26.22 39.06 26.09 39.35 25.97C39.22 25.81 39.07 25.71 39.14 25.41C38.56 25.49 37.98 25.56 37.39 25.64C36.66 25.68 35.93 25.73 35.19 25.77C34.79 25.8 34.39 25.82 33.98 25.85C32.89 26.02 31.62 25.95 30.4 25.95C29.68 25.95 28.96 25.95 28.24 25.94C27.56 25.94 26.9 25.96 26.3 25.86C25.93 25.83 25.56 25.81 25.18 25.78C24.27 25.72 23.36 25.65 22.45 25.59V25.55C22.43 24.66 22.43 23.76 22.42 22.87C22.42 22.71 22.46 22.05 22.39 21.97C21.77 21.89 21.15 21.81 20.53 21.73C20.2 21.63 19.88 21.53 19.55 21.43C19.48 21.45 19.41 21.46 19.34 21.48C19.15 21.52 18.9 21.48 18.76 21.43C18.39 21.28 18.23 20.9 18.02 20.6C17.56 19.93 17.1 19.26 16.65 18.6C16.17 18.6 15.69 18.6 15.21 18.59V18.55C15.22 18.19 15.25 17.83 15.27 17.47C14.9 17.42 14.53 17.38 14.15 17.33C13.71 17.38 13.21 17.57 12.63 17.48C9.71998 17.22 6.81999 16.97 3.90999 16.71C3.04999 16.63 2.17999 16.56 1.31999 16.48C0.969985 16.42 0.379985 16.34 0.449985 15.92C0.489985 15.68 0.719985 15.51 0.929985 15.43C1.22999 15.32 1.62999 15.43 2.00999 15.37C2.71999 15.36 3.41999 15.34 4.12999 15.33C7.31999 15.27 10.51 15.22 13.7 15.16C14.29 15.17 14.87 15.19 15.46 15.2C15.6 14.02 16.23 13.26 16.9 12.59C17.13 12.36 17.41 12.02 17.76 11.94C18.26 11.82 18.59 12.26 18.81 12.48C19.44 13.1 20.32 14 20.36 15.18L20.41 15.15ZM61.98 40.02C62.05 39.64 62.13 39.26 62.2 38.88L63.2 38.71C62.78 39.27 62.36 39.82 61.94 40.38C61.91 40.35 61.96 40.1 61.98 40.02Z\"\n          fill={fill}\n        />\n      </svg>\n    );\n  }\n  if (aircraft === 'ehang') {\n    return (\n      <svg\n        width=\"90\"\n        height=\"31\"\n        viewBox=\"0 0 90 31\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"breadcrumb\"\n      >\n        <g clipPath=\"url(#clip0_1_2)\">\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M77.55 18.62C77.55 18.62 77.55 18.53 77.54 18.49C77.47 18.49 77.42 18.49 77.39 18.45C77.36 18.4 77.36 18.29 77.37 18.2C76.92 18.23 76.47 18.25 76.02 18.28C74.04 18.26 72.05 18.24 70.07 18.22C69.31 18.22 68.56 18.22 67.8 18.23C67.43 18.23 67.01 18.3 66.7 18.21V18.16C67.67 17.98 68.89 18.12 69.92 17.96C70.24 17.95 70.55 17.94 70.87 17.92C73.03 17.8 75.19 17.69 77.35 17.57C77.35 17.49 77.35 17.41 77.36 17.32C77.86 17.25 78.57 17.18 79.09 17.27C79.09 17.34 79.09 17.4 79.1 17.47C81.35 17.45 83.61 17.44 85.86 17.42C86.55 17.42 87.24 17.4 87.93 17.4C88.42 17.33 89.35 17.33 89.77 17.42V17.47H89.75C89.51 17.57 89.17 17.49 88.87 17.54C88.12 17.59 87.36 17.65 86.61 17.7C85.79 17.77 84.96 17.84 84.14 17.91C83.73 17.95 83.32 17.98 82.91 18.02C81.72 18.21 80.47 18.19 79.13 18.2V18.4C79.08 18.4 79.02 18.42 78.97 18.42C78.97 18.46 78.97 18.51 78.98 18.55C79.1 18.55 79.23 18.55 79.35 18.56C79.43 18.62 79.51 18.68 79.58 18.74C79.63 18.79 79.68 18.83 79.73 18.88C79.74 19.3 79.75 19.72 79.77 20.13C79.64 20.3 79.52 20.4 79.31 20.49V20.51C79.31 20.51 79.38 20.53 79.4 20.53V20.82C79.4 20.82 79.37 20.85 79.33 20.86C79.33 21.1 79.22 21.23 79.27 21.48C79.3 21.62 79.36 21.7 79.36 21.89C79.4 21.89 79.44 21.89 79.42 21.93C79.47 21.98 79.45 22.19 79.43 22.23C79.38 22.23 79.39 22.23 79.36 22.27C79.59 22.28 79.73 22.5 79.85 22.62C79.85 23.03 79.87 23.44 79.87 23.85C79.7 24.08 79.54 24.22 79.13 24.22V24.35C79.19 24.35 79.25 24.37 79.31 24.37C79.31 24.46 79.31 24.55 79.32 24.64C79.65 24.62 79.98 24.6 80.32 24.58C80.69 24.52 81.24 24.5 81.63 24.56C81.91 24.56 82.18 24.56 82.46 24.57C82.73 24.57 83.01 24.57 83.28 24.58C83.81 24.58 84.33 24.58 84.86 24.59C85.91 24.59 86.95 24.61 88 24.61C88.66 24.56 89.36 24.52 89.98 24.61V24.63C89.98 24.63 89.98 24.65 89.97 24.67C89.1 24.81 88.02 24.71 87.1 24.85C86.78 24.86 86.45 24.87 86.13 24.89C83.87 25.01 81.6 25.14 79.34 25.26C79.37 25.35 79.34 25.45 79.32 25.51C78.9 25.53 78.01 25.67 77.6 25.55C77.6 25.49 77.6 25.43 77.59 25.36C75.15 25.38 72.7 25.39 70.26 25.41C69.16 25.41 67.97 25.51 66.93 25.41V25.37C67.07 25.25 67.41 25.33 67.64 25.29C68.32 25.24 69.01 25.2 69.69 25.15C70.62 25.07 71.54 24.99 72.47 24.92C72.97 24.88 73.47 24.83 73.97 24.79C75.1 24.6 76.3 24.64 77.57 24.64C77.57 24.58 77.57 24.52 77.58 24.45L77.6 24.43C77.85 24.32 78.73 24.36 79.1 24.36C79.1 24.3 79.1 24.24 79.09 24.18C78.71 24.18 78.33 24.2 77.95 24.2C77.78 24.23 77.54 24.34 77.32 24.26C77.2 24.15 77.08 24.03 76.96 23.92C76.95 23.51 76.94 23.1 76.92 22.69C77.08 22.57 77.14 22.36 77.39 22.34L77.37 22.3C77.27 22.28 77.28 22.2 77.29 22.08C72.34 22.35 67.4 22.62 62.45 22.89C61.83 22.93 61.22 22.96 60.6 23L60.47 23.13C60.22 23.14 59.96 23.15 59.71 23.17C59.71 23.33 59.75 24.1 59.69 24.17V24.19H58.65C58.62 24.26 58.57 24.38 58.5 24.42C58.29 24.42 58.09 24.42 57.88 24.43C57.88 24.5 57.88 24.57 57.89 24.64C58.16 24.64 58.43 24.62 58.7 24.62C59.1 24.69 59.43 24.94 59.77 25.09C59.94 25.16 60.26 25.24 60.38 25.37V25.43C59.6 25.53 58.75 25.4 57.92 25.39C57.92 25.46 57.92 25.48 57.88 25.51C57.72 25.58 56.37 25.63 56.16 25.56C56.16 25.41 56.16 25.26 56.15 25.1C55.76 25.03 55.37 24.97 54.98 24.9C55.33 26.63 55.68 28.37 56.03 30.1H56.02C55.45 30.1 54.89 30.1 54.32 30.1V29.76H29.61V30.11C29.32 30.11 28.06 30.17 27.9 30.09C28.29 28.2 28.67 26.32 29.06 24.43H26.44C26.19 24.43 25.56 24.49 25.4 24.39C25.09 23.84 24.78 23.28 24.47 22.73C20.56 22.52 16.65 22.3 12.75 22.09C12.75 22.17 12.75 22.26 12.73 22.31C12.68 22.31 12.68 22.31 12.66 22.33C12.86 22.37 13.02 22.57 13.12 22.7C13.1 23.11 13.09 23.52 13.07 23.93C12.92 24.17 12.72 24.28 12.31 24.27V24.4C12.36 24.4 12.41 24.42 12.46 24.42C12.46 24.49 12.46 24.56 12.47 24.63C13.78 24.63 15.02 24.61 16.19 24.79C16.69 24.83 17.19 24.88 17.69 24.92C18.51 24.99 19.34 25.06 20.16 25.13C20.83 25.18 21.5 25.22 22.16 25.27C22.48 25.32 22.87 25.24 23.11 25.36L23.09 25.4C22.07 25.5 20.89 25.4 19.8 25.4C17.35 25.38 14.9 25.37 12.44 25.35C12.44 25.42 12.42 25.48 12.42 25.55C12.05 25.59 10.92 25.6 10.67 25.48C10.67 25.41 10.67 25.33 10.68 25.26C8.16999 25.12 5.66999 24.99 3.15999 24.85C2.41999 24.82 1.67999 24.79 0.949989 24.76C0.609989 24.71 0.269989 24.78 0.019989 24.65C0.189989 24.53 0.539989 24.61 0.769989 24.59C1.51999 24.59 2.26999 24.61 3.01999 24.61C5.09999 24.59 7.16999 24.56 9.24999 24.54C9.72999 24.57 10.21 24.59 10.69 24.62C10.69 24.55 10.69 24.4 10.73 24.36C10.78 24.36 10.83 24.34 10.88 24.34V24.21C10.43 24.21 10.34 24.04 10.13 23.82C10.15 23.41 10.16 23.01 10.18 22.6C10.25 22.47 10.47 22.26 10.66 22.26V22.22C10.66 22.22 10.59 22.19 10.57 22.17C10.57 22.08 10.57 21.98 10.58 21.89C10.64 21.87 10.66 21.87 10.66 21.78C10.71 21.62 10.79 21.46 10.75 21.24C10.72 21.09 10.69 21.03 10.69 20.83C10.64 20.83 10.64 20.82 10.61 20.79C10.61 20.69 10.63 20.59 10.63 20.49C10.67 20.49 10.69 20.48 10.71 20.45C10.48 20.35 10.4 20.24 10.24 20.08C10.26 19.67 10.27 19.25 10.29 18.84C10.59 18.66 10.52 18.52 11.05 18.51C11.07 18.35 11 18.4 10.89 18.35C10.89 18.29 10.89 18.23 10.9 18.16C9.76999 18.16 8.66999 18.2 7.66999 18.03C7.25999 17.99 6.84999 17.96 6.43999 17.92C5.70999 17.86 4.97999 17.8 4.24999 17.73C3.96999 17.71 3.69999 17.69 3.41999 17.67C2.38999 17.5 1.27999 17.58 0.259989 17.42V17.37H0.279989C0.519989 17.26 0.929989 17.32 1.23999 17.32C1.94999 17.33 2.64999 17.34 3.35999 17.36C5.87999 17.38 8.39999 17.4 10.93 17.42C10.93 17.34 10.93 17.26 10.95 17.21C11.45 17.21 12.27 17.13 12.68 17.28V17.51C15.37 17.65 18.07 17.79 20.76 17.93C20.32 16.98 19.95 16 19.66 14.86C19.03 12.34 19.6 9.4 20.37 7.52C21.78 4.09 24.48 1.64 28.18 0.489998C29.45 0.0899982 31.41 -0.250002 33.09 0.0199982C33.73 0.0599982 34.36 0.0899982 35 0.129998C35.92 0.239998 36.84 0.359998 37.75 0.469998C38.71 0.649998 39.66 0.829998 40.62 1.01C42.03 1.36 43.46 1.76 44.78 2.18C45.23 2.32 45.68 2.46 46.13 2.6C47.02 2.95 47.9 3.3 48.79 3.65C49.24 3.86 49.68 4.08 50.13 4.29C50.59 4.5 51.05 4.72 51.51 4.93C52.29 5.36 53.08 5.8 53.86 6.23C54.35 6.55 54.84 6.86 55.32 7.18C56.12 7.68 56.84 8.22 57.59 8.75C59.5 10.12 60.86 11.45 61.71 13.89C62.09 14.97 62.4 16.8 62.1 18.21C61.93 19 61.78 19.73 61.49 20.4C61.32 20.74 61.15 21.07 60.99 21.41C66.41 21.2 71.84 20.98 77.26 20.77C77.24 20.7 77.25 20.58 77.27 20.52C77.32 20.52 77.32 20.52 77.34 20.5C77.1 20.39 76.84 20.3 76.85 19.94C76.84 19.6 76.83 19.25 76.81 18.91C77.09 18.69 77.04 18.56 77.56 18.54L77.55 18.62ZM13.97 18.29C16.26 18.27 18.55 18.25 20.85 18.23C21.07 18.59 21.3 18.96 21.52 19.32C21.97 20 22.44 20.46 22.81 21.25C19.46 21.12 16.11 20.98 12.76 20.85C12.76 20.78 12.76 20.71 12.77 20.64C12.74 20.61 12.74 20.61 12.69 20.6V20.56C12.93 20.54 13.01 20.35 13.17 20.23C13.18 19.82 13.19 19.4 13.21 18.99C12.97 18.74 12.93 18.64 12.46 18.6C12.46 18.56 12.46 18.51 12.47 18.47C12.52 18.47 12.58 18.47 12.63 18.46C12.63 18.37 12.63 18.28 12.64 18.19C13.09 18.22 13.53 18.24 13.98 18.27L13.97 18.29ZM32.1 25.52C32.36 25.65 33.46 25.62 33.85 25.59C33.85 25.43 33.87 25.28 33.87 25.12C34.4 25.03 34.92 24.94 35.45 24.85C35.74 24.81 36.03 24.78 36.32 24.74L36.36 24.72C36.3 24.6 35.89 24.58 35.7 24.61C35.37 24.66 35.02 24.52 34.66 24.57C34.4 24.6 34.14 24.63 33.89 24.66V24.44H52.51C52.95 25.48 53.38 26.52 53.82 27.57C54.01 28.01 54.32 28.4 54.3 29.01H29.59C29.59 28.45 29.83 28.14 30 27.75C30.32 26.98 30.65 26.2 30.97 25.43C31.35 25.42 31.73 25.41 32.11 25.39V25.51L32.1 25.52Z\"\n            fill={fill}\n          />\n        </g>\n        <defs>\n          <clipPath id=\"clip0_1_2\">\n            <rect width=\"90\" height=\"30.15\" fill=\"white\" />\n          </clipPath>\n          <linearGradient id={`gradient-${aircraft}`} gradientTransform={gradientRotation}>\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"white\" />\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n            <stop offset={`${((1 - progress) * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n          </linearGradient>\n        </defs>\n      </svg>\n    );\n  }\n  if (aircraft === 'midnight') {\n    return (\n      <svg\n        width=\"100\"\n        height=\"43\"\n        viewBox=\"0 0 100 43\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"breadcrumb\"\n      >\n        <g clipPath=\"url(#clip0_5_2)\">\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M0.66 30.23C1.1 30.57 1.56 30.91 2.03 31.22C2.43 31.49 2.9 31.71 3.17 32.11C3.86 33.09 2.94 34.71 2.84 35.79C2.91 35.81 2.89 35.83 2.92 35.89H6.73V37.25C6.73 37.25 6.66 37.25 6.63 37.26C6.63 37.27 6.63 37.29 6.62 37.3C6.62 37.46 6.6 37.62 6.59 37.78C5.19 37.88 3.94 39.64 4.62 41.21C5.04 42.18 5.89 42.61 7.12 42.79C7.51 42.85 7.94 42.7 8.21 42.6C9.22 42.24 10.34 41.09 9.87 39.58C9.55 38.55 8.81 38.11 7.79 37.78C7.79 37.6 7.81 37.37 7.74 37.26H7.65V35.9H15.9C17.15 36.06 18.4 36.21 19.65 36.37C20.41 36.45 21.17 36.52 21.92 36.6C23.42 36.71 24.92 36.81 26.42 36.92C26.92 36.95 27.41 36.98 27.91 37.01C28.57 37.03 29.24 37.05 29.9 37.07C30.34 37.09 30.79 37.1 31.23 37.12C32.06 37.25 33.08 37.17 33.97 37.17H37.85C38.54 37.17 39.29 37.23 39.93 37.13C40.74 37.1 41.56 37.07 42.37 37.04C43.39 36.96 44.41 36.88 45.43 36.8C46.23 36.69 47.02 36.59 47.82 36.48V38.17C47.82 38.39 47.78 38.73 47.86 38.88C48.11 38.88 48.37 38.9 48.62 38.91C48.49 39.12 48.36 39.36 48.28 39.62C47.82 41.13 48.99 42.24 49.94 42.62C50.22 42.73 50.54 42.74 50.89 42.8C51.4 42.88 51.92 42.65 52.24 42.51C53.52 41.95 54.25 40.35 53.32 38.9C53.89 38.9 54.46 38.9 55.04 38.89V38.83H55.12V35.17C56.14 34.95 57.16 34.74 58.18 34.52C59.87 34.09 61.6 33.75 63.26 33.33C68.09 32.15 72.93 30.98 77.76 29.8C79.75 29.32 81.75 28.83 83.74 28.35C84.17 28.23 85.73 27.75 86.1 27.87C86.66 28.05 87.04 28.44 87.26 28.96C87.31 29.09 87.39 29.67 87.48 29.72C87.63 29.77 88.67 29.34 88.88 29.26C90.17 28.82 91.46 28.38 92.74 27.94C94.48 27.35 96.23 26.75 97.97 26.16C98.17 25.97 98.38 25.79 98.58 25.6C98.71 25.54 98.84 25.48 98.97 25.42C99.33 25.21 99.71 24.97 99.9 24.59C100.26 23.84 99.37 23.26 98.95 23.01C98.71 22.87 98.41 22.86 98.34 22.54C98.08 19.17 97.81 15.8 97.55 12.43C97.33 9.55 97.1 6.66 96.88 3.78C96.82 3.07 96.77 2.37 96.71 1.66C96.64 1.22 96.72 0.83 96.46 0.61C96.03 0.24 95.33 0.24 94.63 0.13C94.43 0.13 94.23 0.13 94.03 0.12C93.16 0.09 92.29 0.06 91.43 0.03H90.81C90.45 0 90.08 0 89.71 0H88.45C87.65 0.12 86.26 -0.19 85.87 0.3C85.63 0.61 85.71 1.28 85.63 1.75C85.5 2.98 85.38 4.21 85.25 5.43C84.75 10.22 84.26 15 83.76 19.79H83.75C82.73 19.6 81.7 19.41 80.68 19.22C78.65 18.78 76.53 18.54 74.47 18.13C73.73 18.02 72.99 17.9 72.25 17.79C70.09 17.36 67.83 17.22 65.63 16.81C64.9 16.72 64.17 16.63 63.44 16.54C62.17 16.31 60.85 16.32 59.55 16.1C58.86 16.03 58.18 15.96 57.49 15.9C56.82 15.84 56.14 15.78 55.47 15.72C55.47 15.72 55.47 15.7 55.48 15.69C56.34 15.1 57.21 14.5 58.07 13.91C58.67 13.99 59.26 14.08 59.86 14.16C61.35 14.41 62.85 14.65 64.35 14.9C65.63 15.16 66.96 15.2 68.3 15.42C68.78 15.45 69.27 15.47 69.75 15.5C70.1 15.56 70.95 15.58 71.3 15.53C71.64 15.53 71.98 15.53 72.32 15.52C73.11 15.46 73.9 15.41 74.7 15.35C75.49 15.26 76.28 15.16 77.08 15.07C77.08 15.12 77.08 15.17 77.09 15.22C77.1 15.24 77.12 15.26 77.13 15.28C78.85 15.28 80.57 15.28 82.29 15.27C82.29 15.26 82.29 15.24 82.3 15.23C82.33 14.89 82.37 14.54 82.4 14.2C82.48 13.72 82.48 13.17 82.48 12.6V12.05C82.32 11.67 82.16 11.29 82 10.91C82.26 10.91 82.52 10.91 82.78 10.92C82.78 10.86 82.78 10.8 82.77 10.74C83.02 10.74 83.35 10.66 83.43 10.47C83.24 9.88 82.33 9.95 81.61 9.96C81.54 9.63 81.3 9.47 81.1 9.27C80.69 8.86 80.2 8.23 79.23 8.55C78.81 8.68 78 9.55 77.83 9.96C77.2 9.94 76.08 9.9 76.03 10.48C76.06 10.51 76.08 10.55 76.11 10.58C75.1 10.5 74.09 10.41 73.09 10.33C72.31 10.3 71.53 10.27 70.75 10.24C70.01 10.24 69.27 10.24 68.53 10.23C68.18 10.24 67.84 10.26 67.49 10.27C66.41 10.34 65.34 10.41 64.26 10.49C63.36 10.56 62.46 10.63 61.57 10.69C61.25 10.7 60.93 10.72 60.62 10.73C60.15 10.75 59.69 10.77 59.22 10.79H58.6C58.14 10.86 57.45 10.85 57.01 10.78C56.65 10.76 56.28 10.74 55.92 10.72C55.11 10.67 54.3 10.63 53.49 10.58C51.72 10.48 49.96 10.38 48.19 10.28C44.54 10.07 40.89 9.86 37.24 9.66C36.27 9.6 35.29 9.54 34.32 9.48C34.04 9.48 33.75 9.46 33.47 9.45C32.68 9.42 31.89 9.4 31.11 9.37C30.71 9.37 30.31 9.35 29.92 9.34C28.58 9.34 27.24 9.32 25.91 9.31C25.05 9.31 24.19 9.33 23.33 9.34C22.99 9.39 22.63 9.34 22.34 9.39C22.03 9.44 21.6 9.39 21.35 9.53V10.98C21.08 10.98 20.81 10.98 20.54 10.97C20.46 10.58 20.08 10.23 19.76 10.07L19.66 9.83V9.18C20 9.18 21.14 9.25 21.35 9.14C21.39 8.91 21.46 8.39 21.36 8.21C21.38 8.06 21.39 7.91 21.41 7.77C21.48 7.39 21.46 6.89 21.46 6.44V5.96C21.29 5.57 21.13 5.17 20.96 4.78C22.17 4.72 23.65 4.98 24.91 4.78C25.35 4.71 26.01 4.83 26.27 4.58C26.27 4.47 26.27 4.39 26.22 4.34V4.31C26.08 4.39 25.99 4.4 25.8 4.35C25.76 4.34 25.71 4.37 25.74 4.32C25.79 4.3 25.78 4.3 25.82 4.27C25.78 4.08 24.87 4.11 24.61 4.07C24.13 4.04 23.64 4 23.16 3.97C22.35 3.85 21.45 3.86 20.58 3.86C20.39 3.44 19.61 2.6 19.17 2.46C18.21 2.16 17.73 2.78 17.31 3.2C17.12 3.39 16.88 3.54 16.81 3.86C16.63 3.86 16.45 3.86 16.26 3.87C16.24 3.82 16.23 3.8 16.2 3.77C16.18 3.77 16.16 3.77 16.14 3.78C16.13 3.78 16.11 3.8 16.1 3.81V3.87C15.28 3.92 14.46 3.96 13.64 4.01C12.95 4.12 12.24 4.05 11.59 4.19L11.13 4.37C11.11 4.43 11.09 4.52 11.12 4.59C11.23 4.8 11.96 4.73 12.28 4.78C13.58 4.98 15.15 4.76 16.42 4.78C16.25 5.19 16.09 5.58 15.92 5.97V6.5C15.92 7.11 15.92 7.68 16.01 8.19C16.05 8.43 16.01 9.11 16.18 9.19H18.12V10.03C17.89 10.1 17.7 10.29 17.56 10.46C16.72 11.52 17.18 12.88 18.32 13.28C18.6 13.38 19.05 13.43 19.37 13.32C19.91 13.14 20.05 12.87 20.4 12.52H21.33V13.98C21.33 14.16 21.29 14.37 21.36 14.51C27.25 14.15 33.15 13.8 39.05 13.44V15.66C37.37 15.79 35.59 15.83 33.99 16.09C33.28 16.17 32.58 16.24 31.87 16.32C30.88 16.44 29.9 16.57 28.91 16.69C27.55 16.94 26.18 17.03 24.87 17.29C23.32 17.59 21.76 17.77 20.27 18.12C19.77 18.22 19.26 18.32 18.76 18.42C16.2 19.19 13.75 20.08 11.44 21.1C10.85 21.39 10.25 21.68 9.66 21.98C8.92 22.33 8.2 22.69 7.51 23.09C6.67 23.58 5.82 24.02 5.05 24.56C3.97 25.32 3.01 26.23 1.99 27.04C1.51 27.42 0.26 28.42 0.0799999 29.01C-0.13 29.69 0.39 30 0.69 30.23H0.66Z\"\n            fill={fill}\n          />\n        </g>\n        <defs>\n          <clipPath id=\"clip0_5_2\">\n            <rect width=\"100\" height=\"42.81\" fill=\"white\" />\n          </clipPath>\n          <linearGradient id={`gradient-${aircraft}`} gradientTransform={gradientRotation}>\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"white\" />\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n            <stop offset={`${((1 - progress) * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n          </linearGradient>\n        </defs>\n      </svg>\n    );\n  }\n\n  if (aircraft === 'vertical-aerospace') {\n    return (\n      <svg\n        width=\"101\"\n        height=\"33\"\n        viewBox=\"0 0 101 33\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"breadcrumb\"\n      >\n        <defs>\n          <linearGradient id={`gradient-${aircraft}`} gradientTransform={gradientRotation}>\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"white\" />\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n            <stop offset={`${((1 - progress) * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n          </linearGradient>\n        </defs>\n        <path\n          d=\"M21.73 8.47C20.84 8.47 20.26 8.99 20.02 9.64C19.95 9.98 19.88 10.32 19.81 10.66C19.6 11.34 18.81 12.44 18.11 12.59V5.62C17.28 5.72 16.21 5.72 15.36 5.58C14.91 5.54 14.45 5.5 14 5.46C12.83 5.36 11.67 5.26 10.5 5.16C9.88 5.06 8.26 5.21 8.2 4.62C8.58 4.04 10.18 4.4 11.03 4.27C11.21 4.27 11.39 4.27 11.57 4.26C10.74 4.19 9.92 4.11 9.09 4.04C8.67 3.97 8.25 4.05 8.2 3.62C8.27 3.51 8.34 3.42 8.47 3.36C8.62 3.3 8.85 3.34 9.01 3.32C9.65 3.31 10.29 3.29 10.92 3.28C12.51 3.25 14.11 3.22 15.7 3.19C16.58 3.19 17.46 3.19 18.33 3.18C18.37 2.46 19.29 1.13 19.83 1C20.16 0.92 20.31 1.19 20.46 1.31C20.95 1.7 21.53 2.38 21.55 3.21C22.35 3.21 23.18 3.21 24 3.21C24.47 3.21 24.93 3.23 25.4 3.24C25.89 3.24 26.38 3.26 26.87 3.27C27.67 3.28 28.46 3.3 29.26 3.31C29.79 3.39 31.74 3.12 31.56 3.73C31.5 4.06 31.09 4 30.75 4.05C29.94 4.13 29.12 4.2 28.31 4.28C29.08 4.29 29.84 4.31 30.61 4.32C31.07 4.32 31.54 4.31 31.57 4.73C31.25 5.22 29.99 5.06 29.26 5.18C27.53 5.34 25.79 5.5 24.05 5.66C23.74 5.71 23.3 5.76 22.94 5.7C22.74 5.67 22.44 5.55 22.23 5.64H22.26C22.34 5.7 22.42 5.76 22.5 5.82C22.92 6.16 23.23 6.72 23.23 7.48C23.16 7.48 23.08 7.48 23.01 7.49C23.04 7.56 23.07 7.64 23.1 7.71C23.58 7.88 24.05 7.96 24.49 8.15C25.13 8.43 25.62 8.8 26.38 8.99C27.01 9.15 27.92 9.05 28.65 9.05H30.46C30.61 8.98 30.77 8.91 30.92 8.84C31.27 8.75 31.62 8.67 31.97 8.58C32.57 8.45 33.19 8.52 33.85 8.41C34.18 8.41 34.5 8.41 34.83 8.4C35.05 8.4 35.28 8.4 35.5 8.41C36.26 8.46 37.02 8.5 37.77 8.55C38.27 8.61 38.76 8.66 39.26 8.72C39.89 8.83 40.53 8.93 41.16 9.04H54.37C54.51 9.04 54.85 9.09 54.94 9.01C55.07 8.89 55.33 8.21 55.24 7.98C55.06 8.03 54.78 7.98 54.58 7.94C54.13 7.89 53.69 7.85 53.24 7.8C51.73 7.64 50.22 7.48 48.72 7.32C48 7.2 47.01 7.32 46.55 6.92C46.48 6.86 46.2 6.19 46.23 6.05C46.29 5.91 46.34 5.78 46.4 5.64C46.37 5.55 46.34 5.47 46.31 5.38C46.21 5.13 46.24 4.84 46.39 4.63C46.49 4.48 47.26 4.49 47.51 4.45C48.56 4.33 49.6 4.22 50.65 4.1C51 4.06 51.34 4.02 51.69 3.98C51.89 3.96 52.09 3.95 52.29 3.93C54.22 4.3 55.42 5.13 57.76 5.13C59.21 5.13 60.29 4.6 61.45 4.24C61.98 4.08 62.54 3.87 63.2 3.98C64.52 4.13 65.83 4.27 67.15 4.42C67.43 4.47 68.4 4.47 68.51 4.63C68.67 4.85 68.68 5.15 68.57 5.41C68.54 5.48 68.52 5.56 68.49 5.63C68.55 5.77 68.6 5.9 68.66 6.04C68.69 6.24 68.4 6.88 68.29 6.95C67.76 7.33 66.68 7.21 65.93 7.34C64.17 7.53 62.4 7.72 60.63 7.91V7.94C61.33 8.44 62.02 8.94 62.71 9.44C63 9.61 63.3 9.41 63.51 9.72C63.69 9.98 63.58 10.46 63.46 10.67C63.56 10.81 63.6 10.92 63.6 11.17C63.6 11.73 63.28 11.78 62.89 11.94C62.2 12.23 61.46 12.5 60.72 12.74C60.36 12.84 60 12.94 59.64 13.04C63.77 13.37 67.91 13.7 72.04 14.03C73.37 12.99 74.7 11.95 76.02 10.91C78.48 9 80.94 7.09 83.4 5.18C85.68 3.46 87.49 1.69 90.74 0.89C91.24 0.77 91.8 0.69 92.35 0.59C92.68 0.56 93.01 0.54 93.34 0.51C93.96 0.51 94.58 0.51 95.2 0.5H96.78C97.14 0.5 97.5 0.52 97.86 0.53C98.73 0.57 99.59 0.61 100.46 0.65L100.43 0.68C96.17 5.55 91.91 10.42 87.66 15.29C87.94 15.29 88.34 15.29 88.57 15.38C88.57 15.48 88.59 15.67 88.54 15.73C88.31 15.97 87.97 16.14 87.68 16.32C86.63 16.98 85.44 17.45 84.03 17.76C83.31 17.85 82.59 17.94 81.87 18.03C78.53 18.43 75.19 18.84 71.85 19.24C69.34 19.55 66.84 19.86 64.33 20.17C63.45 20.32 62.56 20.48 61.68 20.63C59.94 21.06 58.25 21.42 56.63 21.93C54.15 22.71 51.89 23.71 49.65 24.71C48.94 25.07 48.24 25.42 47.53 25.78C46.69 26.15 45.86 26.5 44.97 26.85C44.56 27 44.16 27.15 43.75 27.3C43.98 28.05 44.21 28.81 44.44 29.56C44.35 29.59 44.25 29.61 44.16 29.64C44.32 30.95 43.89 31.84 42.93 32.26C41.53 32.87 40.16 31.96 39.87 30.83C39.8 30.84 39.71 30.89 39.68 30.86C39.57 30.76 39.62 30.41 39.59 30.24C39.56 29.96 39.53 29.68 39.5 29.4C39.6 29.07 39.7 28.73 39.8 28.4C39.19 28.6 38.44 28.65 37.74 28.79C35.53 29.23 33.01 29.25 30.38 29.25C28.96 29.25 27.54 29.25 26.11 29.24C24.44 29.22 22.78 29.21 21.11 29.19C19.7 29.15 18.3 29.1 16.89 29.06C16.03 29.02 15.17 28.97 14.31 28.93C13.58 28.89 12.85 28.85 12.13 28.81C11.72 28.78 11.31 28.76 10.9 28.73C9.17999 28.59 7.46 28.46 5.75 28.32L5.78 28.4C6.93 28.52 8.08 28.65 9.24 28.77C9.2 29.12 9.16 29.47 9.12 29.82C8.62 29.77 8.12 29.72 7.62 29.67C7.85 29.94 8.07 30.16 8.16 30.58C8.37 31.53 7.47 32.6 6.53 32.44C5.61 32.29 4.72 31.51 5.13 30.35C5.26 29.98 5.52 29.8 5.76 29.55C5.75 29.52 5.73 29.49 5.72 29.46C4.42 29.32 3.12 29.18 1.81 29.04C1.85 28.69 1.89 28.35 1.93 28C3.03 28.12 4.11999 28.23 5.22 28.35V28.29C4.18 28.19 3.16 28.08 2.14 27.98C1.8 27.92 1.46 27.95 1.19 27.84C0.929995 27.73 0.689995 27.48 0.589995 27.22C0.209995 26.31 0.979995 25.84 1.45 25.48C1.96 25.08 2.46 24.68 2.97 24.28C3.9 23.73 4.82 23.17 5.75 22.62C8.83 20.7 12.14 18.98 15.65 17.49C16.86 17.02 18.07 16.55 19.29 16.08C21.05 15.4 22.9 14.94 24.76 14.38C25.36 14.23 25.95 14.07 26.55 13.92C26.85 13.86 27.14 13.8 27.44 13.74H25.86C25.45 13.04 24.98 12.51 24.2 12.18C23.48 11.88 22.68 11.98 22.22 11.41C21.62 10.66 21.73 9.8 21.73 8.48V8.47Z\"\n          fill={fill}\n        />\n      </svg>\n    );\n  }\n\n  if (aircraft === 'volocity') {\n    return (\n      <svg\n        width=\"122\"\n        height=\"33\"\n        viewBox=\"0 0 122 33\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"breadcrumb\"\n      >\n        <g clipPath=\"url(#clip0_1_17)\">\n          <path\n            d=\"M17.66 0.5H0.5V1.51H17.66V0.5ZM38.43 0.5H21.27V1.51H38.43V0.5ZM59.2 0.5H42.04V1.51H59.2V0.5ZM79.97 0.5H62.81V1.51H79.97V0.5ZM100.74 0.5H83.58V1.51H100.74V0.5ZM121.51 0.5H104.35V1.51H121.51V0.5ZM83.99 31.48C83.99 31.48 83.99 31.47 83.99 31.46V31.48ZM84.28 32.17L84.29 32.2V32.17H84.28ZM84.29 32.2C84.29 32.2 84.3 32.22 84.3 32.23V32.2H84.29ZM83.94 31.37L83.8 31.27C83.8 31.27 83.81 31.27 83.82 31.27C83.87 31.27 83.92 31.32 83.94 31.36V31.37ZM83.94 31.37L83.91 31.33C83.91 31.33 83.93 31.36 83.94 31.37ZM83.98 31.47C83.98 31.47 83.98 31.46 83.98 31.45C83.98 31.44 83.98 31.43 83.97 31.42V31.4C83.97 31.4 83.98 31.45 83.99 31.47H83.98ZM83.95 31.41C83.95 31.41 83.95 31.42 83.95 31.43V31.41ZM118.88 2.5H3.35C2.91 2.5 2.51 2.87 2.5 3.31C2.47 3.77 2.86 4.2 3.33 4.2H35.28C36.16 4.43 37.22 4.7 38.1 4.93C38.35 5 38.99 5.16 39.24 5.22L39.32 5.24C40.89 5.64 42.57 6.08 44.13 6.48C44.8 6.65 47.02 6.84 46.37 7.06C35.16 10.75 31 18.55 30.92 20.27C30.83 22 33.53 23.49 35.72 24.67C37.91 25.85 43.31 26.04 46.69 26.26C46.78 26.26 47.53 26.26 47.6 26.26C47.24 27.16 46.81 28.23 46.44 29.14L36.68 29.17C36.6 29.19 36.55 29.27 36.55 29.35V29.66C36.55 29.72 36.61 29.78 36.68 29.77H36.93C37.06 29.77 37.22 30.02 37.22 30.02C37.47 31.67 39.33 32.14 40.74 32.31C42.66 32.52 44.68 32.49 46.62 32.49H59.06C67.42 32.49 75.8 32.5 84.16 32.49L83.79 31.28C82.64 31.28 81.35 31.28 80.2 31.28C77.45 27.06 74.69 22.82 71.95 18.6L72.54 18.24C72.54 18.24 72.24 17.28 72.46 15.93C72.68 14.58 75.54 12.2 76.92 11.26C77.25 11.07 77.88 10.72 78.2 10.52C78.25 10.48 78.29 10.41 78.29 10.34C78.29 10.21 78.2 10.14 78.11 10.06C77.71 9.72 77.26 9.37 76.76 9.23C74.8 8.7 73.18 7.93 72.57 8.02L72.46 7.99C73.34 7.76 74.4 7.49 75.29 7.26C79.24 6.24 83.23 5.22 87.18 4.2H113.18C113.18 4.2 105.17 6.95 104.88 7.26C104.59 7.57 103.07 9.31 103.07 9.31C102.48 9.13 101.42 8.7 100.84 9.02C100.76 9.53 101.38 9.74 101.76 9.9L106.47 11.48C106.54 11.5 106.93 11.6 107.01 11.62C107.01 11.62 108.88 12.32 109.76 12.42C110.65 12.52 110.61 11.74 110.61 11.74C110.61 11.74 111.5 9.56 111.85 8.69C112.19 7.82 118.91 4.2 118.91 4.2C119.37 4.2 119.77 3.77 119.74 3.31C119.73 2.87 119.33 2.49 118.89 2.5H118.88ZM45.59 31.27C44.31 31.27 42.92 31.25 41.64 31.17C40.75 31.07 38.73 30.96 38.44 29.94L38.58 29.76C41.1 29.76 43.69 29.75 46.2 29.74C46.04 30.14 45.75 30.86 45.59 31.26V31.27ZM42.43 4.2H59.51C59.24 4.75 58.93 5.35 58.66 5.9L58.15 5.88C57.47 5.86 56.57 5.86 55.89 5.85L53.02 5.96L52.42 6.01C49.11 5.41 45.75 4.8 42.44 4.2H42.43ZM74.9 31.27H51.08C51.81 29.45 52.57 27.55 53.3 25.74L53.38 25.55C53.6 25.5 54.23 25.32 54.46 25.26L58 24.01C58.21 23.93 58.82 23.68 59.02 23.6C61.32 22.71 63.7 21.79 66 20.9C66 20.9 66.44 20.82 66.45 20.82L66.86 20.76H66.95L67.53 20.71H67.58L67.89 20.72L68.05 20.74C70.33 24.24 72.63 27.77 74.91 31.28L74.9 31.27ZM66.26 6.7L64.49 6.44L64.26 6.41C63.9 5.7 63.51 4.92 63.15 4.21H80.02C75.45 5.04 70.83 5.87 66.26 6.7ZM84.32 32.31C84.32 32.31 84.32 32.31 84.32 32.32V32.31ZM84.16 32.49C84.16 32.49 84.17 32.49 84.18 32.49H84.17H84.16ZM84.2 32.49C84.2 32.49 84.18 32.49 84.17 32.49L84.31 32.33C84.31 32.4 84.26 32.47 84.19 32.49H84.2ZM84.24 32.12C84.24 32.12 84.24 32.13 84.24 32.14L84.19 32.01V31.99L84.04 31.63C84.04 31.63 84.16 31.91 84.16 31.92L84.2 32.03L84.22 32.07C84.22 32.08 84.23 32.1 84.24 32.11C84.24 32.11 84.24 32.13 84.25 32.13C84.25 32.13 84.25 32.12 84.25 32.11L84.24 32.12ZM84 31.55L84.03 31.63L84.01 31.59V31.56V31.53V31.52C84.01 31.52 84.01 31.52 84.01 31.54L84.02 31.57C84.02 31.57 84.04 31.61 84.04 31.62L84.02 31.56L84 31.55ZM84.25 32.14V32.17C84.25 32.17 84.25 32.16 84.25 32.15V32.13V32.14ZM84.31 32.29V32.31C84.31 32.31 84.3 32.26 84.29 32.24V32.27H84.3C84.3 32.27 84.3 32.28 84.3 32.29H84.31Z\"\n            fill={fill}\n          />\n        </g>\n        <defs>\n          <clipPath id=\"clip0_1_17\">\n            <rect width=\"121\" height=\"31.99\" fill=\"white\" transform=\"translate(0.5 0.5)\" />\n          </clipPath>\n          <linearGradient id={`gradient-${aircraft}`} gradientTransform={gradientRotation}>\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"white\" />\n            <stop offset={`${(progress * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n            <stop offset={`${((1 - progress) * 100).toFixed(0)}%`} stopColor=\"rgba(0,0,0,0.3)\" />\n          </linearGradient>\n        </defs>\n      </svg>\n    );\n  }\n\n  return <React.Fragment />;\n};\n\nexport default React.memo(AircraftSVG);\n","import React from 'react';\n// import classNames from 'classnames';\n\nimport AircraftSVG from './AircraftSVG.jsx';\n\nimport './styles.scss';\n\nconst BreadcrumbCircle = ({ filled = false }) => {\n  return (\n    <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <ellipse\n        cx=\"4.1\"\n        cy=\"4.1\"\n        rx=\"3.5\"\n        ry=\"3.5\"\n        stroke=\"white\"\n        fill={filled === true ? 'white' : 'none'}\n      />\n    </svg>\n  );\n};\n\nconst Breadcrumbs = ({ totalStepProgress = 0, firstStepArray, isMobile = false }) => {\n  const order = ['midnight', 'airbus', 'ehang', 'joby', 'vertical-aerospace', 'volocity'];\n\n  return (\n    <div className=\"breadcrumbs-wrapper\">\n      {firstStepArray.map((d, i) => {\n        const progress = Math.min(1, Math.max(0, (totalStepProgress - i) / 3));\n\n        return d === true ? (\n          <AircraftSVG aircraft={order.shift()} progress={progress} isMobile={isMobile} />\n        ) : (\n          // <BreadcrumbCircle filled={totalStepProgress >= i} />\n          <React.Fragment />\n        );\n      })}\n    </div>\n  );\n};\n\nexport default React.memo(Breadcrumbs);\n","/* eslint-disable jsx-a11y/aria-role */\n/* eslint-disable no-param-reassign */\nimport React, { useEffect, useMemo } from 'react';\nimport { PCFSoftShadowMap as ShadowMap, ColorManagement } from 'three';\nimport { Canvas, useFrame } from '@react-three/fiber';\nimport { Preload, AdaptiveDpr, AdaptiveEvents, PerspectiveCamera } from '@react-three/drei';\nimport { A11yAnnouncer } from '@react-three/a11y';\nimport { Perf } from 'r3f-perf';\n\nimport ThreeScene from '../ThreeScene/index.jsx';\nimport Breadcrumbs from '../Breadcrumbs/index.jsx';\n\nimport { WrapperContext, useWrapperContext } from '../ScrollWrapper/wrapperContext.js';\n\nimport './styles.scss';\nimport config from '../../config.json';\n\nconst ThreeCanvas = ({\n  labels,\n  labelFont,\n  setRenderFinished = () => {},\n  hidden = false,\n  ...props\n}) => {\n  const {\n    scrollPosition,\n    screenWidth,\n    sceneCamera,\n    setSceneCamera,\n    setCameraPosition,\n    waypoints,\n    data,\n    prod,\n    isMobile,\n    showDebugMode = false,\n  } = useWrapperContext(WrapperContext);\n\n  const { sectionActive } = scrollPosition;\n  const selectedWrapperContext = {\n    scrollPosition,\n    screenWidth,\n    sceneCamera,\n    setSceneCamera,\n    waypoints,\n    data,\n    prod,\n  };\n\n  const firstStepArray = useMemo(() => {\n    return waypoints.map(\n      (d, i) => i === 0 || d.carousel_rotation !== waypoints[i - 1].carousel_rotation\n    );\n  }, [waypoints]);\n\n  useEffect(() => {\n    ColorManagement.legacyMode = false;\n  }, []);\n\n  const DisableRender = () => useFrame(() => null, 1000);\n\n  return (\n    <div style={{ opacity: hidden === true ? 0 : 1, width: '100%', height: '100%' }}>\n      <Canvas\n        flat\n        dpr={2}\n        gl={{\n          powerPreference: 'high-performance',\n          stencil: true,\n          // antialias: !isMobile && window.devicePixelRatio && window.devicePixelRatio > 1,\n          antialias: true,\n          logarithmicDepthBuffer: false,\n          physicallyCorrectLights: true,\n        }}\n        shadows={{\n          // enabled: !isMobile,\n          enabled: true,\n          // autoUpdate: scrollPosition.activeStep < 1,\n          // needsUpdate: scrollPosition.activeStep < 1,\n          soft: true,\n          type: ShadowMap,\n        }}\n        // frameloop=\"demand\"\n      >\n        <color attach=\"background\" args={['#dfdddd']} />\n\n        <PerspectiveCamera makeDefault fov={35} near={isMobile ? 1 : 0.5} far={30} />\n\n        {sectionActive === false && <DisableRender />}\n        {prod === false && <Perf className=\"performance-monitor\" />}\n        {prod === true && <Preload all />}\n        <AdaptiveDpr pixelated />\n        <AdaptiveEvents />\n\n        <ThreeScene\n          labels={labels}\n          labelFont={labelFont}\n          {...selectedWrapperContext}\n          setRenderFinished={setRenderFinished}\n          debug={showDebugMode}\n          isMobile={isMobile}\n          setCameraPosition={setCameraPosition}\n        />\n\n        {/* Setting up props.children here to receive any other potential add-ons, such as postprocessing effects */}\n        {props.children}\n      </Canvas>\n      <Breadcrumbs\n        totalStepProgress={scrollPosition.activeStep + scrollPosition.stepProgress}\n        firstStepArray={firstStepArray}\n        isMobile={isMobile}\n      />\n      <A11yAnnouncer />\n    </div>\n  );\n};\n\nexport default React.memo(ThreeCanvas);\n","import React, { useState } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport './styles.scss';\n\nconst VideoProgress = ({\n  progress,\n  loaded = false,\n  isMobile = false,\n  onPauseClick,\n  isVideoPaused = false,\n  placeVideoProgressAtBottom = false,\n}) => {\n  const calculateProgress = (videoProgress, strokeDasharray) => {\n    return strokeDasharray - strokeDasharray * videoProgress;\n  };\n  const ringHeight = 36;\n  const strokeWidth = 2;\n  const strokeDasharray = Math.PI * (ringHeight - strokeWidth);\n  const [ariaLabel, setAriaLabel] = useState('pause');\n\n  return (\n    <div\n      className=\"video-progress-container\"\n      id=\"video-progress-container\"\n      style={{\n        bottom: isMobile ? (placeVideoProgressAtBottom ? 40 : '85%') : 40,\n        right: isMobile ? 20 : 40,\n      }}\n    >\n      <div\n        className=\"circle-progress-bar\"\n        style={{\n          height: ringHeight,\n          width: ringHeight,\n        }}\n      >\n        {loaded === true && (\n          <button\n            aria-label={ariaLabel}\n            style={{\n              height: ringHeight,\n              width: ringHeight,\n            }}\n            onClick={() => {\n              onPauseClick();\n              setAriaLabel(ariaLabel === 'pause' ? 'play' : 'pause');\n            }}\n            type=\"button\"\n            className=\"pausing\"\n          >\n            <span className={`${isVideoPaused ? 'play' : 'paused'} `} />\n          </button>\n        )}\n        <svg className=\"progress-ring\" width=\"100%\" height=\"100%\">\n          <circle\n            className=\"progress-ring__circle\"\n            stroke=\"rgba(255,255,255,0.2)\"\n            strokeWidth={strokeWidth}\n            fill=\"transparent\"\n            strokeDasharray={`${strokeDasharray} ${strokeDasharray}`}\n            strokeLinecap=\"round\"\n            r={ringHeight / 2 - 2}\n            cx={ringHeight / 2}\n            cy={ringHeight / 2}\n          />\n          {/* Load spinner circle */}\n          <circle\n            className=\"progress-ring__load-circle\"\n            stroke=\"rgba(255, 255, 255, 1)\"\n            strokeWidth={strokeWidth}\n            fill=\"transparent\"\n            strokeDasharray={`${strokeDasharray} ${strokeDasharray}`}\n            strokeLinecap=\"square\"\n            r={ringHeight / 2 - 2}\n            cx={ringHeight / 2}\n            cy={ringHeight / 2}\n            style={{\n              strokeDashoffset: 0.7 * strokeDasharray,\n              transform: 'rotate(50deg)',\n              //   opacity: loaded ? 0 : 1,\n              opacity: 0,\n            }}\n          />\n          {/* Progress circle */}\n          <circle\n            className={classNames('progress-ring__circle', progress <= 0.02 && 'zeroed')}\n            stroke=\"rgba(255, 255, 255, 1)\"\n            strokeWidth={strokeWidth}\n            fill=\"transparent\"\n            strokeDasharray={`${strokeDasharray} ${strokeDasharray}`}\n            strokeLinecap=\"square\"\n            r={ringHeight / 2 - 2}\n            cx={ringHeight / 2}\n            cy={ringHeight / 2}\n            style={{\n              strokeDashoffset: calculateProgress(progress, strokeDasharray),\n              opacity: 0,\n              // opacity: loaded ? 1 : 0,\n            }}\n          />\n        </svg>\n      </div>\n    </div>\n  );\n};\n\nVideoProgress.propTypes = {\n  progress: PropTypes.number.isRequired,\n  loaded: PropTypes.bool.isRequired,\n  isMobile: PropTypes.bool.isRequired,\n  onPauseClick: PropTypes.func.isRequired,\n  isVideoPaused: PropTypes.bool.isRequired,\n  placeVideoProgressAtBottom: PropTypes.bool.isRequired,\n};\n\nexport default VideoProgress;\n","/* eslint-disable react/forbid-prop-types */\nimport React, { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport VideoProgress from '../VideoProgress/index.jsx';\nimport './styles.scss';\n\nconst getPrefersReducedMotion = () => {\n  const QUERY = '(prefers-reduced-motion: no-preference)';\n  const mediaQueryList = window.matchMedia(QUERY);\n  const prefersReducedMotion = !mediaQueryList.matches;\n  return prefersReducedMotion;\n};\n\nconst BackgroundMedia = React.forwardRef(\n  (\n    {\n      media,\n      isMobile,\n      videoURLBase,\n      active = false,\n      controls = false,\n      showProgress = true,\n      caption = '',\n      credit = '',\n      placeVideoProgressAtBottom = false,\n    },\n    mediaRef\n  ) => {\n    const prefersReducedMotion = getPrefersReducedMotion();\n    const isPrerendering = navigator.userAgent === 'ReactSnap';\n    const imageRef = useRef(null);\n    const videoRef = useRef(null);\n\n    const [isVideoLoaded, setIsVideoLoaded] = useState(false);\n    const [videoProgress, setVideoProgress] = useState(0);\n    const [isVideoPaused, setIsVideoPaused] = useState(true);\n\n    useEffect(() => {\n      if (!videoRef.current || isVideoLoaded === false) {\n        return;\n      }\n      videoRef.current.muted = true;\n      videoRef.current.autoPlay = true;\n      videoRef.current.autoplay = true;\n\n      videoRef.current.pause();\n\n      // This is used to add a delay before resetting progress to 0 on scroll out (so that reader doesn't see the hitch)\n      const resetDelay = 1000;\n\n      if (active === true && prefersReducedMotion === false) {\n        // videoRef.current.play();\n\n        videoRef.current.currentTime = 0;\n        setIsVideoPaused(false);\n\n        videoRef.current.addEventListener('timeupdate', () => {\n          setVideoProgress(videoRef.current.currentTime / videoRef.current.duration);\n        });\n      } else if (prefersReducedMotion === true) {\n        setIsVideoPaused(true);\n\n        setTimeout(() => {\n          if (videoRef.current && isVideoLoaded === true) {\n            videoRef.current.currentTime = 0.8;\n            videoRef.current.addEventListener('timeupdate', () => {\n              setVideoProgress(videoRef.current.currentTime / videoRef.current.duration);\n            });\n          }\n        }, resetDelay);\n      } else {\n        // videoRef.current.pause();\n        setIsVideoPaused(true);\n\n        setTimeout(() => {\n          if (videoRef.current && isVideoLoaded === true) {\n            videoRef.current.currentTime = 0;\n            videoRef.current.addEventListener('timeupdate', () => {\n              setVideoProgress(videoRef.current.currentTime / videoRef.current.duration);\n            });\n          }\n        }, resetDelay);\n      }\n    }, [active, isVideoLoaded, videoRef]);\n\n    // Play/pause handling\n    useEffect(() => {\n      if (!videoRef.current || isVideoLoaded === false) {\n        return;\n      }\n\n      if (isVideoPaused === true) {\n        videoRef.current.pause();\n      } else {\n        videoRef.current.play();\n      }\n    }, [isVideoPaused]);\n\n    const onLoadedData = () => {\n      videoRef.current.muted = true;\n      setIsVideoLoaded(true);\n    };\n\n    const handleVideoPause = () => {\n      setIsVideoPaused(!isVideoPaused);\n    };\n\n    const src = isMobile ? `${media.image?.src}&width=1000` : `${media.image?.src}&width=3000`;\n    const alt = media?.alt || null;\n    const fallback = media.image?.fallback || null;\n\n    const classes = classNames(fallback ? 'fallback-image' : '');\n\n    return (\n      <figure className=\"media-wrapper\" ref={mediaRef}>\n        <div className=\"inner-media\">\n          <img\n            src={src}\n            alt={alt}\n            ref={imageRef}\n            className={classes}\n            style={{\n              opacity: isVideoLoaded ? 0 : 1,\n              maxHeight: isVideoLoaded ? 0 : null,\n              objectPosition:\n                media.image.object_position && isMobile\n                  ? media.image.object_position?.mobile || '50% 50%'\n                  : media.image.object_position?.desktop || '50% 50%',\n              objectFit: media.image.object_fit || 'cover',\n            }}\n          />\n          {/* {caption && <p className=\"caption\">{caption}</p>} */}\n          {media.video && !isPrerendering && (\n            <video\n              ref={videoRef}\n              autoPlay\n              playsInline\n              webkit-playsinline=\"true\"\n              muted\n              loop\n              disableRemotePlayback\n              x-webkit-airplay=\"deny\"\n              preload=\"auto\"\n              controls={controls}\n              title={alt}\n              onClick={() => {\n                videoRef.current.muted = true;\n              }}\n              onLoadStart={() => {\n                videoRef.current.muted = true;\n              }}\n              onLoadedData={onLoadedData}\n              onPlay={() => {\n                // setIsVideoPaused(false);\n              }}\n              style={{\n                opacity: isVideoLoaded ? 1 : 0,\n                maxHeight: isVideoLoaded ? null : 0,\n              }}\n            >\n              <source src={videoURLBase + media.video.src} type=\"video/mp4\" />\n              <p>Your browser doesn&#39;t support HTML5 video.</p>\n            </video>\n          )}\n\n          {/* Short-circuiting where video is not loaded since we decided to cut the spinner for now */}\n          {media.video && isVideoLoaded === true && (\n            <VideoProgress\n              progress={videoProgress}\n              loaded={isVideoLoaded}\n              isMobile={isMobile}\n              onPauseClick={handleVideoPause}\n              isVideoPaused={isVideoPaused}\n              placeVideoProgressAtBottom={placeVideoProgressAtBottom}\n            />\n          )}\n        </div>\n\n        {caption && (\n          <figcaption className=\"video-caption\">\n            {caption} {credit && `(${credit})`}\n          </figcaption>\n        )}\n      </figure>\n    );\n  }\n);\n\nBackgroundMedia.propTypes = {\n  // eslint-disable-next-line react/forbid-prop-types\n  isMobile: PropTypes.bool.isRequired,\n  media: PropTypes.object.isRequired,\n  videoURLBase: PropTypes.string.isRequired,\n  active: PropTypes.bool.isRequired,\n  controls: PropTypes.bool,\n  showProgress: PropTypes.bool,\n  caption: PropTypes.string,\n  credit: PropTypes.string,\n  placeVideoProgressAtBottom: PropTypes.bool,\n};\n\nBackgroundMedia.defaultProps = {\n  controls: false,\n  showProgress: true,\n  caption: '',\n  credit: '',\n  placeVideoProgressAtBottom: false,\n};\n\nexport default React.memo(BackgroundMedia, (prev, next) => {\n  const shouldNotRerender =\n    prev.isMobile === next.isMobile &&\n    prev.videoURLBase === next.videoURLBase &&\n    prev.active === next.active;\n\n  return shouldNotRerender;\n});\n","/* eslint-disable jsx-a11y/label-has-associated-control */\nimport React from 'react';\n\nimport './styles.scss';\n\nconst Intro = ({\n  headline,\n  summary,\n  topic,\n  byline,\n  bylines,\n  annotationMode,\n  setAnnotationMode,\n  showToggle = true,\n  ...props\n}) => {\n  const buildTime = props.buildTime || new Date().toISOString(); // eslint-disable-line\n  const publishedDate = props.publishedDate || new Date().toISOString(); // eslint-disable-line\n  return (\n    <React.Fragment>\n      <div className=\"intro_content\">\n        {topic && (\n          <div className=\"topic\">\n            <a href={topic.url} className=\"o-editorial-typography-topic\">\n              {topic.name}\n            </a>\n          </div>\n        )}\n\n        <h1 className=\"o-editorial-layout-heading-1\" itemProp=\"headline\">\n          {headline}\n        </h1>\n      </div>\n\n      <meta itemProp=\"dateModified\" content={buildTime} suppressHydrationWarning />\n    </React.Fragment>\n  );\n};\n\nexport default Intro;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport BackgroundMedia from '../BackgroundMedia/index.jsx';\nimport Intro from '../Intro/index.jsx';\n\nimport './styles.scss';\n\nimport introVideo from '../../videos/intro.mp4';\nimport introVideoMobile from '../../videos/intro_mobile.mp4';\n\nconst VideoTopper = ({ isMobile, context, isPrerendering = false }) => {\n  return (\n    <div className=\"intro-container\">\n      <div className=\"intro-content-container\">\n        <Intro {...context} />\n      </div>\n      <BackgroundMedia\n        videoURLBase=\"\"\n        media={{\n          image: {\n            src:\n              isMobile && isPrerendering === false\n                ? 'https://www.ft.com/__origami/service/image/v2/images/raw/http%3A%2F%2Fft-ig-images-prod.s3-website-eu-west-1.amazonaws.com%2Fv1%2F8313694601-0bv40.jpg?source=ig'\n                : 'https://www.ft.com/__origami/service/image/v2/images/raw/http%3A%2F%2Fft-ig-images-prod.s3-website-eu-west-1.amazonaws.com%2Fv1%2F8313694603-h7871.jpg?source=ig',\n          },\n          video: {\n            src: isMobile && isPrerendering === false ? introVideoMobile : introVideo,\n          },\n          alt: 'A montage of flying taxis',\n        }}\n        active\n        isMobile={isMobile}\n      />\n      {isMobile ? (\n        <p className=\"img-credit\">\n          Air taxi models in test flight<span id=\"copyright-icon\"> © </span> Ehang; Joby; Volocopter\n        </p>\n      ) : (\n        <p className=\"img-credit\">\n          Ehang’s EH216-S, Joby’s JAS4-1 and Volocopter’s VoloCity in test flight\n          <span id=\"copyright-icon\"> © </span> Ehang; Joby; Volocopter\n        </p>\n      )}\n    </div>\n  );\n};\n\nVideoTopper.defaultProps = {\n  isMobile: false,\n};\n\nVideoTopper.propTypes = {\n  prod: PropTypes.bool.isRequired,\n  // eslint-disable-next-line react/forbid-prop-types\n  context: PropTypes.object.isRequired,\n  isMobile: PropTypes.bool,\n};\n\nexport default VideoTopper;\n","import React from 'react';\nimport './styles.scss';\n\nconst SectionTitle = ({ title, svg }) => {\n  return (\n    <div className=\"section-title-container\">\n      <img src={svg} alt=\"\" className=\"section-title-svg\" />\n      <h2 className=\"section-title\">{title}</h2>\n    </div>\n  );\n};\n\nexport default SectionTitle;\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport imageData from './image_data.json';\nimport './styles.scss';\n\nconst ImageGallery = ({ isMobile = false }) => {\n  return (\n    <div className=\"gallery-wrapper\">\n      <div className=\"gallery-images\">\n        {imageData.map(({ src, alt, image_key: imageKey }) => (\n          <img\n            className={classNames('gallery-image')}\n            key={imageKey}\n            src={`https://www.ft.com/__origami/service/image/v2/images/raw/${src}?source=ig`}\n            alt={alt}\n          />\n        ))}\n      </div>\n      <p className=\"gallery-caption caption-mobile\">\n        Clockwise from top left: Vertical Aerospace’s VX4, Volocopter’s VoloCity, Archer Aviation’s\n        Midnight, Joby Aviation’s JAS4-1, The City Airbus NextGen and Ehang’s EH216-S ©️ Company\n        press releases\n      </p>\n      <p className=\"gallery-caption caption-desktop\">\n        Clockwise from top left: Vertical Aerospace’s VX4, Volocopter’s VoloCity, Ehang’s EH216-S,\n        Joby Aviation’s JAS4-1, The City Airbus NextGen and Archer Aviation’s Midnight ©️ Company\n        press releases\n      </p>\n    </div>\n  );\n};\n\nexport default React.memo(ImageGallery);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst FlourishChart = ({ chartId, story, fullWidth }) => {\n  useEffect(() => {\n    window.addEventListener('message', (event) => {\n      if (event.origin === 'https://flo.uri.sh') {\n        const eventData = JSON.parse(event.data);\n        const iframes = document.querySelectorAll('iframe');\n        iframes.forEach((i) => {\n          if (i.src === eventData.src?.replace('#slide-0', '')) {\n            i.height = eventData.height + 20;\n          }\n        });\n      }\n    });\n  }, []);\n\n  return (\n    <div className={`flourish-chart-container${fullWidth ? ' full-width' : ''}`}>\n      <iframe\n        src={`https://flo.uri.sh/${story ? 'story' : 'visualisation'}/${chartId}/embed?auto=1`}\n        title=\"Interactive or visual content\"\n        scrolling=\"no\"\n        frameBorder=\"0\"\n        width=\"100%\"\n        sandbox=\"allow-same-origin allow-forms allow-scripts allow-downloads allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation\"\n      />\n    </div>\n  );\n};\n\nFlourishChart.defaultProps = {\n  story: false,\n  fullWidth: false,\n};\n\nFlourishChart.propTypes = {\n  chartId: PropTypes.number.isRequired,\n  story: PropTypes.bool,\n  fullWidth: PropTypes.bool,\n};\n\nexport default FlourishChart;\n","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n  const { innerWidth: width, innerHeight: height } = window;\n  return {\n    width,\n    height,\n  };\n}\n\nexport default function useWindowDimensions() {\n  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n  useEffect(() => {\n    function handleResize() {\n      setWindowDimensions(getWindowDimensions());\n    }\n\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  return windowDimensions;\n}\n","/* eslint-disable no-param-reassign */\nimport { FrontSide, BackSide, DoubleSide } from 'three';\n\nexport const assignMaterialToModel = (model, material) => {\n  model.scene.traverse((o) => {\n    if (o.isMesh) o.material = material;\n  });\n};\n\nexport const loadModel = async ({ loader, model }) => {\n  return new Promise((resolve, reject) => {\n    loader.load(\n      model.default, // called when the resource is loaded\n      (gltf) => {\n        resolve(gltf);\n      },\n      () => {},\n      // called when loading has errors\n      (error) => {\n        // eslint-disable-next-line no-console\n        console.error('Error loading model for', model);\n        reject(error);\n      }\n    );\n  });\n};\n\nexport const complexModelAdjustments = ({ model, i, allModels }) => {\n  // Find vertical center\n  // const maxY = Math.max(...model.scene.children.map((child) => child.geometry.boundingBox.max.y));\n\n  model.scene.children.forEach((child) => {\n    child.castShadow = true;\n    child.receiveShadow = true;\n\n    if (child.material.opacity !== 1) {\n      child.material.transparent = true;\n      // child.material.dithering = true;\n      // child.material.premultipliedAlpha = true;\n      child.material.precision = 'highp';\n    }\n\n    // const additionalData = allModels[i].partsData?.[child.name] || {};\n\n    // some parts share materials, which creates issues for things like highlights\n    // so we'll create a copy and re-assign it\n    child.material = child.material.clone();\n\n    child.material.polygonOffset = true;\n    // child.material.polygonOffsetFactor = additionalData.polygon_offset_factor || 0;\n    // child.material.side = DoubleSide;\n\n    // eslint-disable-next-line no-param-reassign\n    // child.userData = { ...child.userData, ...additionalData };\n\n    // We're going to assign a very small offset position to prevent exact overlap,\n    // ...which would cause z-fighting if we had depthRender turned on, and can cause\n    // ...performance hits. Below, we'll either assign this randomized offset or use a\n    // ..fraction of the assigned offset value, which would maintain correct ordering\n    // ...between parts. When we re-position parts in util.js (setPartPositions), we'll\n    // ...do something similar\n    // const overlapOffset = (0.5 - Math.random()) / 2000;\n\n    // Center model objects\n    // child.position.x = (additionalData?.position?.x || 0) / 2000 || overlapOffset;\n    // child.position.y = maxY / -2;\n    // child.position.z = (additionalData?.position?.z || 0) / 2000 || overlapOffset;\n  });\n};\n","import React, { Suspense, useEffect, useState, useMemo } from 'react';\nimport Layout from '@financial-times/g-components/article-layout';\nimport Bylines from '@financial-times/g-components/bylines';\nimport Share from '@financial-times/g-components/share';\nimport '@financial-times/g-components/article-layout/index.css';\nimport Epilogue from '@financial-times/g-components/epilogue';\nimport '@financial-times/g-components/epilogue/index.css';\nimport '@financial-times/g-components/loading/index.css';\n\nimport { GLTFLoader, DRACOLoader, SimplifyModifier } from 'three-stdlib';\nimport { Color } from 'three';\n\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\nimport Loading from '@financial-times/g-components/loading';\n\nimport classNames from 'classnames';\n\n// Components\nimport ScrollWrapper from './components/ScrollWrapper/index.jsx';\nimport ImageSet from './components/ImageSet/index.jsx';\nimport Credits from './components/Credits/index.jsx';\nimport Loader from './components/Loader/index.jsx';\nimport ThreeCanvas from './components/ThreeCanvas/index.jsx';\nimport VideoTopper from './components/VideoTopper/index.jsx';\nimport SectionTitle from './components/SectionTitle/index.jsx';\nimport ImageGallery from './components/ImageGallery/index.jsx';\nimport FlourishChart from './components/FlourishChart/index.jsx';\n\n// Data\nimport modelPartsData from '../data/model_parts.json';\nimport modelWaypoints from '../data/waypoints/model_waypoints.json';\n\n// Images\nimport TakeoffGraphicMobile from './images/takeoff-graphic/takeoff_graphic_mobile.png';\nimport TakeoffGraphicTablet from './images/takeoff-graphic/takeoff_graphic_tablet.png';\nimport TakeoffGraphicDesktop from './images/takeoff-graphic/takeoff_graphic_desktop.png';\n\n// Util\nimport useWindowDimensions from './util/window-dimensions';\n\n// import siteText from '../data/text.json';\n\nimport contendersSVG from './images/section-title-svgs/the-contenders.svg';\nimport importantYearSVG from './images/section-title-svgs/important-year.svg';\nimport safetySVG from './images/section-title-svgs/safety.svg';\nimport regulatoryLandscapeSVG from './images/section-title-svgs/regulatory-landscape.svg';\nimport operationsAndCostSVG from './images/section-title-svgs/operations-and-cost.svg';\nimport technicalChallengesSVG from './images/section-title-svgs/technical-challenges.svg';\n\nimport { complexModelAdjustments, loadModel } from './util/meshes.js';\n\nconst App = () => {\n  const isPrerendering = navigator.userAgent === 'ReactSnap';\n  // This sets the initial state of the application. We need\n  const [models, setModels] = useState(undefined);\n  const [context, setContext] = useState(null);\n\n  const [annotationMode, setAnnotationMode] = useState(null);\n  const [renderFinished, setRenderFinished] = useState(false);\n  const { width } = useWindowDimensions();\n  const isMobile = useMemo(() => width !== null && width < 500, [width]);\n\n  // Asynchronous effects should update state as per below\n  useEffect(() => {\n    if (isPrerendering === true) {\n      return;\n    }\n\n    // N.b., do async in an async IIFE, don't make the useEffect callback async\n    (async () => {\n      const data = { models: {} };\n\n      const allModels = [\n        { id: 'midnight', path: 'midnight', type: 'taxi' },\n        { id: 'airbus', path: 'airbus', type: 'taxi', target_radius: 1.03 },\n        { id: 'ehang', path: 'ehang', type: 'taxi' },\n        { id: 'joby', path: 'joby', type: 'taxi', target_radius: 1.7 },\n        { id: 'vertical', path: 'vertical_aerospace', type: 'taxi', target_radius: 1 },\n        { id: 'volocopter', path: 'volocopter', type: 'taxi' },\n        { id: 'background_plane', path: 'background_plane', type: 'background' },\n      ];\n\n      const dracoLoader = new DRACOLoader();\n      dracoLoader.setDecoderPath('https://www.gstatic.com/draco/versioned/decoders/1.4.1/');\n      dracoLoader.setDecoderConfig({ type: 'js' });\n\n      const loader = new GLTFLoader();\n      loader.setDRACOLoader(dracoLoader);\n\n      // First round: load models, some as simplified stand-ins, to be replaced after initial render\n      const loadedModels = await Promise.all(\n        allModels.map(async ({ path }) => {\n          const importedModel = await import(`../data/models/${path}.glb`);\n          const loadedGltf = await loadModel({ loader, model: importedModel });\n          return loadedGltf;\n        })\n      );\n\n      loadedModels.forEach((model, i) => {\n        model.scene.children = model.scene.children.filter((d) => d.isMesh);\n\n        if (allModels[i].type === 'background') {\n          model.scene.children.forEach((child) => {\n            child.material.transparent = true;\n            // It's somewhat important that we set the initial plane opacity here, though there are some backstops\n            child.material.opacity = 0.65;\n            child.material.roughness = 0.2;\n            child.receiveShadow = true;\n\n            child.scale.z *= 1.2;\n          });\n        }\n\n        if (allModels[i].type === 'taxi') {\n          complexModelAdjustments({ model, i, allModels });\n          model.userData.target_radius = allModels[i].target_radius || 1;\n        }\n\n        data.models[allModels[i].id] = model;\n      });\n\n      setModels({ ...data.models });\n    })();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    (async () => {\n      setContext({\n        ...(await (await fetch('./context.json')).json()),\n        buildTime: window.BUILD_TIME,\n      });\n    })();\n  }, []);\n\n  // const BodyCopy = ({ index }) => (\n  //   <React.Fragment>\n  //     {siteText[0].body_copy[index].heading && <h2>{siteText[0].body_copy[index].heading}</h2>}\n  //     {siteText[0].body_copy[index].copy.map((x, i) => (\n  //       <p key={x.substring(0, 15) + i} dangerouslySetInnerHTML={{ __html: x }} />\n  //     ))}\n  //   </React.Fragment>\n  // );\n\n  const fontURLs = useMemo(() => {\n    const { prod = true } = context?.flags || {};\n\n    return {\n      regular: `${window.location.protocol}//${\n        window.location.host\n      }${window.location.pathname.replace('index.html', '')}${\n        prod === true ? 'dist' : 'public'\n      }/fonts/Metric/Metric-Regular.otf`,\n      medium: `${window.location.protocol}//${\n        window.location.host\n      }${window.location.pathname.replace('index.html', '')}${\n        prod === true ? 'dist' : 'public'\n      }/fonts/Metric/Metric-Medium.otf`,\n      semibold: `${window.location.protocol}//${\n        window.location.host\n      }${window.location.pathname.replace('index.html', '')}${\n        prod === true ? 'dist' : 'public'\n      }/fonts/Metric/Metric-Semibold.otf`,\n    };\n  }, [context]);\n\n  return context ? (\n    <div\n      className={classNames(\n        'outer-wrapper'\n        // (typeof models === 'undefined' || renderFinished === false) && 'loading'\n      )}\n    >\n      <Layout {...context}>\n        <main key=\"main\" role=\"main\">\n          <article className=\"article\" itemScope itemType=\"http://schema.org/Article\">\n            <VideoTopper context={context} isMobile={isMobile} isPrerendering={isPrerendering} />\n\n            <div className=\"article-body o-editorial-typography-body\" itemProp=\"articleBody\">\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <div className=\"byline-container\">\n                        <Bylines\n                          names={context.bylines}\n                          date={context.publishedDate}\n                          {...(context.bylines || {})}\n                        />\n                        <Share\n                          url={context.url}\n                          text={context.socialHeadline || context.headline}\n                          textTwitter={context.tweetText || context.twitterHeadline}\n                          textFacebook={context.facebookHeadline}\n                        />\n                      </div>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      {/* {context.summary && (\n                        <p className=\"o-editorial-typography-standfirst\">{context.summary} </p>\n                      )} */}\n                      <p>\n                        A sleek electric aircraft in the familiar blue and white livery of United\n                        Airlines is ready to go. It takes off vertically, rising above clogged city\n                        streets, whizzing towards the Manhattan skyline.\n                      </p>\n                      <p>\n                        This is just a marketing video with CGI animation for now, but United and\n                        Archer Aviation, an air taxi start-up, say it will be a reality in two\n                        years, with a four-seat vehicle flying regular shuttles between the\n                        airline’s hub in Newark and downtown New York. The companies say the\n                        journey, which can take more than an hour by car or public transportation,\n                        will take 10 minutes and cost about $100 per passenger.\n                      </p>\n                      <p>\n                        Companies around the world are closing in on the dream: a battery-powered\n                        aircraft — the industry dislikes the term “flying car” — that takes off and\n                        lands like a helicopter, cruises like a plane and is blessed by regulators\n                        for commercial use. Backers include big names such as Boeing and the\n                        automaker Stellantis, and several companies are targeting 2024 or 2025 for\n                        entry into service.\n                      </p>\n                      <p>\n                        Yet the journey to build, certify and fly such an aircraft remains\n                        expensive, uncertain and competitive. Industry estimates peg the cost of\n                        developing one through to certification at roughly $1bn. Those who succeed\n                        will have to demonstrate both technological capability and sufficient\n                        capital and give regulators enough confidence to certify their aircraft as\n                        safe. Then they need to price their offering at a level that will convince\n                        the public to get onboard.\n                      </p>\n                      <p>\n                        Proponents of electric aircraft promise travel that is free from the\n                        earthbound traffic snarls that have blighted modern cities. But there will\n                        be challenges, such as building the necessary infrastructure, ensuring quiet\n                        operation in crowded cities, and winning public acceptance.\n                      </p>\n                      <p>\n                        “We are going to have a vehicle that has great utility to fly people 50-mile\n                        and less trips,” says Mike Leskinen, president of United Airlines Ventures,\n                        the airline’s venture capital arm, which has backed Archer.\n                      </p>\n                      <p>\n                        “The bigger question is, how do we get the FAA [Federal Aviation\n                        Administration] to certify, how do we make sure that [air taxis] have the\n                        same safety level as commercial aircraft, how do we integrate that into\n                        congested air traffic control and congested airspace? Those are the bigger\n                        gating items than, ‘is the aircraft capable?’”\n                      </p>\n                      <p>\n                        “It’s going to be life-changing,” he adds. “It’s a matter of when, not if.”\n                      </p>\n                      <p>\n                        After{' '}\n                        <a\n                          href=\"https://www.ft.com/content/d12b3b28-5472-4905-bc4e-4e116b2ff498\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          years of promise\n                        </a>{' '}\n                        and missed milestones, the industry is nearing an inflection point. The\n                        coming 18 months will be critical as several contenders ramp up the flight\n                        test programmes crucial to gaining regulatory certification, putting their\n                        resources under strain. Some may have to tap investors again before launch\n                        at a time when much of the recent enthusiasm for technology stocks has\n                        evaporated. Others may not clear the regulatory hoops. In a crowded field,\n                        not everyone will survive.\n                      </p>\n                      <p>\n                        “The people that are really pushing this air mobility concept are\n                        visionaries,” says John Cox, an aviation safety expert and former airline\n                        captain. “They're very futuristic, and . . . there is some naivete there.”\n                      </p>\n                      <p>\n                        The visionaries, he adds, are about to meet “the cold, hard reality of our\n                        national airspace system and the national safety regulations, and that\n                        merger is going to be challenging.”\n                      </p>\n                      <SectionTitle title=\"Some of the contenders\" svg={contendersSVG} />\n                      <p>\n                        The idea of flying taxis has been around for more than a century. In 1926,\n                        Henry Ford unveiled the{' '}\n                        <a\n                          href=\"https://www.smithsonianmag.com/air-space-magazine/crash-doomed-henry-fords-flying-car-180968316/\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          Ford “Flivver”\n                        </a>\n                        {', '}a flying car for the masses that was supposed to do for aircraft what\n                        the Model T had done for cars. It failed to enter production after a fatal\n                        test flight. There have been other examples along the way.\n                      </p>\n                      <p>\n                        The main players today are spread across the US and Europe, with contenders\n                        also located in China and Brazil. Some are start-ups, others are backed by\n                        industry incumbents such as Airbus, Boeing and Embraer. Boeing, which\n                        recently became the sole owner of California-based Wisk Aero, will be\n                        showing off the company’s latest generation vehicle at next week’s Paris\n                        airshow.\n                      </p>\n                      <p>\n                        Each of these vehicles will need to be certified by regulators in their home\n                        country, but unlike with traditional aircraft, that does not guarantee they\n                        will be declared safe to fly in other regions.\n                      </p>\n                      <p>\n                        The companies planning to introduce electric vertical take-off and landing\n                        aircraft (eVTOLs) within three years have adopted three vehicle types:\n                        multicopters, vectored thrust and lift plus cruise.\n                      </p>\n                      <p>\n                        Multicopters look the most like helicopters. They have no wings, fly a\n                        shorter range, are simpler to produce, and the industry views them as easier\n                        to certify.\n                      </p>\n                      <p>\n                        The other two configurations combine rotors and wings. A lift-plus-cruise\n                        vehicle uses one set of rotors to lift into the air and another set to\n                        cruise to its destination. A vectored-thrust air taxi uses a single set of\n                        rotors: they lift the aircraft off the ground, then tilt to propel it\n                        forward.\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <ScrollWrapper\n                data={models}\n                debug={context.flags.debug}\n                context={context}\n                waypoints={modelWaypoints}\n                // cardsContent={siteText[0].phone_cards_content}\n                movementSectionProportion={0.65}\n                // hidden={typeof models === 'undefined'}\n                prod={context.flags.prod}\n                stepClass=\"model-step\"\n                annotationMode={annotationMode}\n                setAnnotationMode={setAnnotationMode}\n                scrollSectionClassName=\"scroll--model\"\n              >\n                {(typeof models === 'undefined' ||\n                  renderFinished === false ||\n                  isPrerendering === true) && (\n                  <div className={classNames('placeholder', !isPrerendering && 'overlay-spinner')}>\n                    <Loader>\n                      <Loading size=\"large\" theme=\"dark\" />\n                    </Loader>\n                  </div>\n                )}\n                {isPrerendering === false && (\n                  <ThreeCanvas\n                    labelFont={fontURLs.medium}\n                    setRenderFinished={setRenderFinished}\n                    hidden={typeof models === 'undefined' || renderFinished === false}\n                  />\n                )}\n              </ScrollWrapper>\n\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <p>\n                        While most of the companies are start-ups, many have collected well-known\n                        backers. Stellantis, the owner of Peugeot and Fiat in Europe and Chrysler in\n                        the US, has agreed to buy up to $150mn-worth of Archer’s stock while also\n                        manufacturing its model, the Midnight. United has paid $10mn toward a $1bn\n                        aircraft order.\n                      </p>\n                      <p>\n                        Toyota invested{' '}\n                        <a\n                          href=\"https://www.ft.com/content/bfaabfe0-37ea-11ea-a6d3-9a26f8c3cba4\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          nearly $400mn\n                        </a>{' '}\n                        in Joby Aviation, making it the company’s largest investor, and Delta Air\n                        Lines contributed another $60mn. Volocopter has received backing from\n                        Daimler and Geely, while Vertical Aerospace has attracted investment from\n                        Honeywell and American Airlines. The UK company has also announced\n                        pre-orders from American Airlines and Virgin Atlantic.\n                      </p>\n                      <p>\n                        Several of the start-ups, including Joby, Archer and Vertical, have{' '}\n                        <a\n                          href=\"https://www.ft.com/content/ec8bab06-9118-4453-b60e-defd32b230a7\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          tapped public investors\n                        </a>\n                        , listing on US stock markets through special purpose acquisition companies,{' '}\n                        <a\n                          href=\"https://www.ft.com/content/d1723a8e-c146-4d48-8475-01cc9947a5d6\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          or Spacs\n                        </a>\n                        . Joby has raised $2.1bn so far, the most money in the field, followed by\n                        Germany’s Lilium, with $1.2bn.\n                      </p>\n                      <p>\n                        Unlike most of its competitors, Lilium hopes to lift off using electric jet\n                        engines embedded in four wings. The company has extended its certification\n                        date to 2025 and told{' '}\n                        <a\n                          href=\"https://investors.lilium.com/node/8541/pdf\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          investors in May\n                        </a>{' '}\n                        that it was looking to raise a further $250mn. Eve Holding, which is\n                        controlled by Embraer, has raised $377mn and Wisk, $775mn. The aircraft\n                        being developed by Vermont-based Beta Technologies has also attracted\n                        significant investment, raising more than $796mn.\n                      </p>\n                      <FlourishChart chartId={14077453} />\n                      <p>\n                        Investors’ enthusiasm for the stocks has deflated in the past two years amid\n                        increased economic uncertainty. All four trade at significant discounts to\n                        their listing price.\n                      </p>\n                      <p>\n                        Aerospace is notoriously capital-intensive, but the amount raised matters\n                        less than how effectively the company spends it to advance towards\n                        certification, says Sergio Cecutta, founder of SMG Consulting, which{' '}\n                        <a\n                          href=\"https://aamrealityindex.com/aam-reality-index\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          tracks the advanced air mobility industry\n                        </a>\n                        . Until one of these companies turns a profit, “the Grim Reaper is still on\n                        [its] tail”.\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <ImageGallery isMobile={isMobile} />\n\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <SectionTitle title=\"The technical challenges\" svg={technicalChallengesSVG} />\n                      <p>\n                        The engineers designing the new aircraft must confront significant technical\n                        challenges.\n                      </p>\n                      <p>\n                        The power required to take off and land vertically, which requires hovering,\n                        is greater than with winged flight. An aircraft that does both must make\n                        trade offs, and the difficulty of vertical takeoff and landing adds “a level\n                        of complexity and risk which seems to be underestimated by a number of\n                        stakeholders”, according to the European Union Aviation Safety Agency, or\n                        Easa.\n                      </p>\n                      <p>\n                        Batteries are less energy dense than jet fuel, meaning electric aircraft\n                        cannot travel as far or carry as much weight. While the companies are using\n                        composite light-weight materials to help reduce weight, staying airborne in\n                        an electric aircraft consumes energy to the degree that, “at some point\n                        you’re carrying battery to carry battery, instead of people and payload”,\n                        says Farhan Gandhi, director of Rensselaer Polytechnic Institute’s Center\n                        for Mobility with Vertical Lift.\n                      </p>\n                      <p>\n                        Batteries can also catch fire. There have been reports of at least two fires\n                        involving lithium-ion batteries for these electric aircraft, one involving\n                        batteries stored inside a shipping container.\n                      </p>\n                      <p>\n                        The three configurations embraced by the industry’s leaders — multicopter,\n                        lift plus cruise and vectored thrust — all carry advantages and drawbacks,\n                        and “the jury is out” on which is best, according to Gandhi.\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <SectionTitle title=\"The regulatory landscape\" svg={regulatoryLandscapeSVG} />\n                      <p>\n                        None of these aircraft has yet been certified by an aviation regulator. In\n                        the US and Europe, each company will need to receive a “type certificate”,\n                        approving the design of the aircraft and its parts. They will also need\n                        certification to prove that the design can be mass-produced and, for those\n                        companies planning to fly their vehicle, official permission to operate as\n                        an air carrier.\n                      </p>\n                      <p>\n                        In Europe, Volocopter has the most ambitious target, with plans to get its\n                        VoloCity vehicle certified by Easa as early as the second quarter of 2024.\n                        Vertical Aerospace obtained a preliminary approval in March from Britain’s\n                        regulator, the Civil Aviation Authority, or CAA.\n                      </p>\n                      <p>\n                        In the US, Archer is shooting for certification by the end of 2024, and\n                        certification is “a horse race” between it and Joby, Leskinen says.\n                      </p>\n                      <p>\n                        Easa is the only regulator so far that has published dedicated technical\n                        specifications for eVTOLs. As part of its{' '}\n                        <a\n                          href=\"https://www.easa.europa.eu/en/domains/rotorcraft-vtol/VTOL\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          “special condition for VTOL”\n                        </a>{' '}\n                        specification, Easa has told developers planning commercial passenger\n                        flights to adopt the safety standard currently applied to commercial\n                        jetliners: the chance of just one catastrophic failure in 1bn flight hours.\n                        It envisages air taxis operating with a high frequency in large numbers and\n                        not only from current airports.\n                      </p>\n                      <p>\n                        “We have to find the right balance on the safety target, because we know\n                        that the first crash will be very damaging not just for one operator, but\n                        for the entire industry,” says David Solar, head of general aviation and the\n                        regulator’s VTOL department.\n                      </p>\n                      <p>\n                        The FAA has yet to specify a target safety level but{' '}\n                        <a\n                          href=\"https://www.ft.com/content/9ebbe19a-ac66-4485-bfb2-a9dc777799be\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          would probably set the threshold\n                        </a>{' '}\n                        at one catastrophic failure every 100mn flight hours, or 10mn flight hours.\n                        FAA officials say its approach is as safe as the Easa one, just\n                        philosophically different. “Redundancy”, or having a back-up, is at the\n                        heart of aviation safety and while European regulators want more back-up\n                        systems built into the plane itself, their US counterparts regard the pilot\n                        as an extra safeguard against disaster, particularly since an air taxi is\n                        mechanically simpler than a jetliner.\n                      </p>\n                      <p>\n                        The differences could limit manufacturers’ ability to sell or operate their\n                        aircraft outside the region that certified them, at least at the start,\n                        damping profit expectations. US companies are looking to Japan, Canada and\n                        Australia, which are following the FAA. It remains to be seen whether\n                        Ehang’s automated design will be certified outside of China.\n                      </p>\n                      <p>\n                        “These companies want to market their vehicles in more than one region,”\n                        says Kirsten Riensema, who oversees advanced air mobility at Britain’s CAA.\n                        “The more we harmonise, the better it is, both for the industry and for\n                        safety.”\n                      </p>\n                      <p>\n                        Easa is working with the FAA to minimise differences in certification\n                        standards and ensure “minimum changes to the aircraft configuration” so that\n                        operators can fly in both regions, says Solar.\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <SectionTitle title=\"Function and safety\" svg={safetySVG} />\n                      <p>\n                        Exactly{' '}\n                        <a\n                          href=\"https://www.ft.com/content/6b4a0b72-3a85-4bed-97d0-f4225bdcde9f\"\n                          target=\"_blank\"\n                          rel=\"noreferrer\"\n                        >\n                          how air taxis will integrate\n                        </a>{' '}\n                        into each city’s existing aviation ecosystem is a work in progress.\n                      </p>\n                      <p>\n                        To offer a reliable service, air taxis will need the right infrastructure to\n                        land. Aviation regulators are working on the designs and standards of\n                        vertiports — unlike heliports, vertiports will probably have to be sized\n                        differently to accommodate a variety of vehicles. They will also have to\n                        offer electric charging ports.\n                      </p>\n                      <p>\n                        Passengers will need somewhere to check-in. At the same time, city residents\n                        will need to be convinced that these vehicles will not only be quiet, but\n                        safe.\n                      </p>\n                      <p>\n                        Aviation regulators have started working with local authorities to agree on\n                        “flight corridors” that air taxi operators will have to adhere to when they\n                        fly, both for safety reasons and to minimise their potential impact on the\n                        urban environment.\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n              <ImageSet\n                sources={{\n                  small: TakeoffGraphicMobile,\n                  medium: TakeoffGraphicTablet,\n                  large: TakeoffGraphicDesktop,\n                }}\n                alt=\"A graphic titled ‘How flying taxis go from horizontal to vertical flight and how a city centre vertiport could work’, showing how the three main types of flying taxis transition between horizontal and vertical flight. For ‘vectored thrust’ aircrafts, it describes that hovering is achieved by changing the angle of thrust. For instance, propellers can be tilted to 90 degrees so that they switch from propelling the taxi though the air horizontally to statically hovering. For ‘lift and cruise’ aircrafts, it describes that one set of motors is used for horizontal flight, with lift provided by conventional wings, and one set for hovering. In some cases, motors used for horizontal flight tilt to supplement others. Finally, it describes that for multirotor aircrafts, horizontal flight involves more power supplied to one set of rotors than other, resulting in the taxi tilting and creating horizontal movement. Hovering is achieved by distributing power evenly over all of the rotors. Finally, it describes that spending on the urban environment and the performance of the vehicles, omnidirectional trajectories to vertiports may be possible.\"\n                title=\"How flying taxis go from horizontal to vertical flight . . .\"\n                caption=\"\"\n                additionalClasses={[]}\n                fullWidth\n              />\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <p>\n                        Operators will need to consider other factors, including noise, weather and\n                        ride quality. While one air taxi might not growl above the urban din, a\n                        swarm could be louder. The problem is “the bee versus the beehive”, says\n                        Cecutta. “You never hear a bee, but if you go next to a beehive, you’re\n                        going to hear it.”\n                      </p>\n                      <p>\n                        These aircraft also will have limited range, notes Cox, the aviation safety\n                        expert. When they encounter poor weather, they will need enough places to\n                        land before their batteries are spent. Companies will need to map those\n                        alternate routes in advance.\n                      </p>\n                      <p>\n                        “There are very serious and complex airspace issues that have to be\n                        resolved,” he says. “Say you don’t have three or four places to divert. How\n                        are you going to deal with it?”\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <SectionTitle title=\"Operations and cost\" svg={operationsAndCostSVG} />\n                      <p>\n                        Some analysts predict that the market could still be worth as much as $1tn\n                        by 2040.\n                      </p>\n                      <p>\n                        “We are not targeting this first air taxi market as our entry point,” says\n                        Balkiz Sarihan, head of urban air mobility at Airbus. There is still a “lot\n                        of maturation of the technology” that needs to take place, as well as the\n                        establishment of a “trust . . . with the people who are boarding this\n                        plane”.\n                      </p>\n                      <p>\n                        For those promising fast, stress-free transport across shorter distances,\n                        they are pitching their product for passengers as comparable in price to a\n                        taxi and cheaper than a helicopter, while trying to balance the costs of\n                        development, serial production and operation.\n                      </p>\n                      <p>\n                        “There is no question that you can build these. The question is, what is the\n                        economics,” says Alan Epstein, a former industry executive and professor\n                        emeritus at MIT.\n                      </p>\n                      <p>\n                        Companies will need to build significant quantities of these vehicles in\n                        order to recoup their manufacturing cost, he adds, so “who puts up the money\n                        to lose on every unit made for the first five years of production?”\n                      </p>\n                      <p>\n                        Archer chief executive Adam Goldstein says the aircraft will cost between\n                        $2mn and $2.5mn to manufacture at the start, falling to $1mn as the business\n                        scales. With fewer parts than helicopters, they will cost less to maintain,\n                        and operating costs will be spread over more trips.\n                      </p>\n                      <p>\n                        While Archer has not said when it will turn a profit, Goldstein says each\n                        aircraft could generate between $2mn and $4mn in annual revenue and that\n                        unlike electric start-ups in the auto industry, air taxis can succeed\n                        without churning out millions of vehicles.\n                      </p>\n                      <p>\n                        Stephen Fitzpatrick, chief executive of Vertical Aerospace, warns that the\n                        industry will take off slowly. “Are we going to see an enormous number of\n                        electric vertical aircraft flying in our cities in 2025? No. Regardless of\n                        when certification happens, there is a process of industrialisation and\n                        ramp-up that will just take time.”\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <GridContainer>\n                <GridRow>\n                  <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                    <div className=\"o-editorial-layout-wrapper\">\n                      <SectionTitle title=\"Important year\" svg={importantYearSVG} />\n                      <p>\n                        Executives at several air taxi companies are gearing up for what they say\n                        will be a critical year for electric, vertical flight. Dirk Hoke, chief\n                        executive of Volocopter, wants to be the first to market, to become the\n                        world’s first air taxi operator, both for the history books and to gain what\n                        he believes will be critical first-hand experience on how to operate the new\n                        systems.\n                      </p>\n                      <p>“No one will remember the second,” he says.</p>\n                      <p>\n                        Paul Sciarra, executive chairman of Joby, says the company will deliver\n                        aircraft to the US Air Force early next year. He compares it to Uber’s\n                        launch in 2010 with black cars in San Francisco, which was limited but\n                        demonstrated the underlying concept could work.\n                      </p>\n                      <p>\n                        “Folks have talked about air taxis, flying cars, for quite a while, and I\n                        think this is the year, within the next 12 months, that that starts to\n                        become a reality,” he says. “Any new technology introduction has a number of\n                        steps on the way to real . . . It’s going to be a long march to making this\n                        a daily part of people’s everyday commute, but it is important that we focus\n                        on the steps to get there, and we do think this one is critically\n                        important.”\n                      </p>\n                    </div>\n                  </GridChild>\n                </GridRow>\n              </GridContainer>\n\n              <Credits />\n            </div>\n            <GridContainer\n              className={classNames(\n                'epilogue-container'\n                // typeof models === 'undefined' && 'hidden'\n              )}\n            >\n              <GridRow>\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <Epilogue includeGrid={false} />\n                </GridChild>\n              </GridRow>\n            </GridContainer>\n          </article>\n        </main>\n      </Layout>\n    </div>\n  ) : null;\n};\n\nexport default App;\n","/* eslint-disable no-restricted-globals */\n/**\n * @file\n * Main client/SSR entry point.\n *\n * You probably don't want to touch anything in here unless you know what\n * you're doing. #justsayin\n */\n\nimport React from 'react';\nimport ReactDOM, { hydrateRoot } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\nimport { install } from 'resize-observer';\n\nimport App from './app';\nimport '@financial-times/g-components/g-components.css';\nimport './styles.scss';\n\nvar globalThis = require('globalthis')();\n\ninstall();\n\n// Ensure we start from the top\nif (history.scrollRestoration) {\n  history.scrollRestoration = 'manual';\n} else {\n  window.onbeforeunload = () => {\n    window.scrollTo(0, 0);\n  };\n}\n\nconst rootElement = document.getElementById('root');\nconst root = createRoot(rootElement);\n\nroot.render(<App />);\n","const coralEventMap = new Map([\n\t['ready',\n\t\t{\n\t\t\toComments: 'oComments.ready',\n\t\t\toTracking: 'ready'\n\t\t}\n\t],\n\t['loginPrompt',\n\t\t{\n\t\t\toComments: 'oComments.loginPrompt'\n\t\t}\n\t],\n\t['createComment.success',\n\t\t{\n\t\t\toComments: 'oComments.postComment',\n\t\t\toTracking: 'post'\n\t\t}\n\t],\n\t['createComment.error',\n\t\t{\n\t\t\toComments: 'oComments.errorComment',\n\t\t\toTracking: 'post-error'\n\t\t}\n\t],\n\t['createCommentReply.success',\n\t\t{\n\t\t\toComments: 'oComments.replyComment',\n\t\t\toTracking: 'reply'\n\t\t}\n\t],\n\t['editComment.success',\n\t\t{\n\t\t\toComments: 'oComments.editComment',\n\t\t\toTracking: 'edit'\n\t\t}\n\t],\n\t['createCommentReaction.success',\n\t\t{\n\t\t\toComments: 'oComments.likeComment',\n\t\t\toTracking: 'like'\n\t\t}\n\t],\n\t['reportComment.success',\n\t\t{\n\t\t\toComments: 'oComments.reportComment',\n\t\t\toTracking: 'report'\n\t\t}\n\t],\n\t['ignoreUser.success',\n\t\t{\n\t\t\toComments: 'oComments.ignoreUser',\n\t\t\toTracking: 'ignore-user'\n\t\t}\n\t]\n]);\n\nexport default {\n\tcoralEventMap\n};\n","export default {\n\tunCapitalise: function(str) {\n\t\treturn str.charAt(0).toLowerCase() + str.substr(1);\n\t},\n\n\tcapitalise: function(str) {\n\t\treturn str.charAt(0).toUpperCase() + str.substr(1);\n\t},\n\n\tcopyContentFromElement: function(content, callback) {\n\t\tconst html = content.nodeName === 'SCRIPT' ? content.innerHTML : content.outerHTML;\n\t\tcallback(html);\n\t},\n\n\tcopyContentFromUrl: function(url, callback) {\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onload = function() { // eslint complains of e not being used\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tcallback(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tcallback('Content failed to load correctly');\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.onerror = function(e) {\n\t\t\tthrow new Error('\"o-overlay error\": Fetching content from ' + url + ' failed with errror ' + e);\n\t\t};\n\n\t\txhr.send(null);\n\t},\n\n\toptionsFromKey: function(key, value, opts) {\n\t\tconst dashIndex = key.indexOf('-');\n\t\tif (dashIndex === -1) {\n\t\t\ttry {\n\t\t\t\t// If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n\t\t\t\t// We also replace all ' with \" so JSON strings are parsed correctly\n\t\t\t\topts[key] = JSON.parse(value.replace(/\\'/g, '\"'));\n\t\t\t} catch (e) {\n\t\t\t\topts[key] = value;\n\t\t\t}\n\t\t} else {\n\t\t\t// Key that holds an object instead of a value\n\t\t\tconst subKey = key.substr(0, dashIndex);\n\n\t\t\t// If sub-object doesn't exist already, create it\n\t\t\tif (!opts[subKey]){\n\t\t\t\topts[subKey] = {};\n\t\t\t}\n\n\t\t\t// Run function again starting with the rest of the key\n\t\t\topts[subKey] = this.optionsFromKey(key.substr(dashIndex+1), value, opts[subKey]);\n\t\t}\n\n\t\treturn opts;\n\t},\n\n\t// Code based on this article to get coordinates independent of scroll: http://javascript.info/tutorial/coordinates\n\tgetOffsetRect: function(e) {\n\t\tconst eClientRect = e.getBoundingClientRect();\n\n\t\tconst body = document.body;\n\t\tconst docElem = document.documentElement;\n\n\t\t// docElem.scrollTop/Left for IE, use body as a last resort\n\t\tconst scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tconst scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\n\t\t// IE sometimes shifts the upper left corner\n\t\tconst clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tconst clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\n\t\treturn {\n\t\t\t// IE8 doesn't support getBoundingClientRect().height and .weight\n\t\t\twidth: eClientRect.width || eClientRect.right - eClientRect.left,\n\t\t\theight: eClientRect.height || eClientRect.bottom - eClientRect.top,\n\t\t\ttop: eClientRect.top + scrollTop - clientTop,\n\t\t\tleft: eClientRect.left + scrollLeft - clientLeft\n\t\t};\n\t}\n};\n","import Delegate from 'ftdomdelegate';\nimport viewport from '@financial-times/o-viewport';\nimport utils from './utils.js';\nimport focusable from 'focusable';\n\nconst overlays = {};\n\nconst checkOptions = function (opts) {\n\tif (opts.trigger && !(opts.trigger instanceof HTMLElement)) {\n\t\topts.trigger = document.querySelector(opts.trigger);\n\t}\n\n\tif (opts.heading && (!opts.heading.title || !opts.heading.title.trim())) {\n\t\tthrow new Error(\n\t\t\t'\"o-overlay error\": To have a heading, a non-empty title needs to be set'\n\t\t);\n\t}\n\n\t// Overlays should be modal and layers by default\n\tif (typeof opts.modal === 'undefined') {\n\t\topts.modal = true;\n\t}\n\tif (typeof opts.layer === 'undefined') {\n\t\topts.layer = true;\n\t}\n\n\tif (opts.compact && opts.heading && opts.heading.shaded) {\n\t\tthrow new Error(\n\t\t\t'\"o-overlay error\": Compact overlays can\\'t have a shaded header'\n\t\t);\n\t}\n\n\treturn opts;\n};\n\nconst getOptionsFromTrigger = function (trigger) {\n\tlet opts = {};\n\t// Get config from data attributes set in the trigger if they haven't been passed via JS\n\tif (trigger instanceof HTMLElement) {\n\t\tArray.prototype.forEach.call(trigger.attributes, function (attr) {\n\t\t\tif (attr.name.indexOf('data-o-overlay') === 0) {\n\t\t\t\t// Remove the unnecessary part of the string the first time this is run for each attribute\n\t\t\t\tconst key = attr.name.replace('data-o-overlay-', '');\n\t\t\t\topts = utils.optionsFromKey(key, attr.value, opts);\n\t\t\t}\n\t\t});\n\t\topts.trigger = trigger;\n\t}\n\treturn opts;\n};\n\nconst triggerClickHandler = function (id, ev) {\n\tev.stopPropagation();\n\tconst overlay = overlays[id];\n\tif (overlay) {\n\t\tif (overlay.visible === true) {\n\t\t\toverlay.close();\n\t\t} else {\n\t\t\toverlay.open();\n\t\t}\n\t}\n};\n\nconst isVisible = function (element) {\n\treturn Boolean(element.offsetHeight);\n};\n\nconst filterFocusableElements = function (element) {\n\tconst elementVisible = isVisible(element);\n\t// Inputs for radio and checkboxes are visually hidden,\n\t// so check the label visibility of inputs too when determining\n\t// whether to trap focus.\n\tconst elementLabelVisible =\n\t\telement.labels && [].slice.call(element.labels).some(l => isVisible(l));\n\t// When tabbing, the checked radio input of a group is focused, not each radio input.\n\tconst elementIsUncheckedRadio =\n\t\telement.type === 'radio' && element.checked !== true;\n\treturn (\n\t\t!element.disabled &&\n\t\t!elementIsUncheckedRadio &&\n\t\t(elementVisible || elementLabelVisible)\n\t);\n}\n\nconst focusTrap = function (event) {\n\tconst tabKeyCode = 9;\n\tconst overlayFocusableElements = [].slice\n\t.call(this.wrapper.querySelectorAll(focusable))\n\t.filter(element => filterFocusableElements(element));\n\tif (overlayFocusableElements.length && event.keyCode === tabKeyCode) {\n\t\tconst lastElement =\n\t\t\toverlayFocusableElements[overlayFocusableElements.length - 1];\n\t\t// Loop focus back to the first element if focus has reached the focusable element\n\t\tif (event.target === lastElement) {\n\t\t\toverlayFocusableElements[0].focus();\n\t\t\tevent.preventDefault();\n\t\t} else if (event.shiftKey && event.target === overlayFocusableElements[0]) {\n\t\t\t// loop to the bottom when shift+tabbing.\n\t\t\tlastElement.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n/**\n * Represents an Overlay.\n */\nclass Overlay {\n\t/**\n\t * Construct an overlay.\n\t *\n\t * @class\n\t * @param {HTMLElement} id - String. A unique identifier for the overlay within the page. (Required)\n\t * @param {object} opts - An options object for configuring the Overlay. This object MUST have either `src` or `html` set. (Required)\n\t * @param {string} opts.heading.title - Your overlay's title\n\t * @param {boolean} opts.heading.visuallyhidetitle - If you want to provide a different title style, this option will prevent the title span from being added to the overlay. (In this case the title is only used for aria labelling) Default: false.\n\t * @param {boolean} opts.heading.shaded - Whether to shade the background of the header. Default: to false\n\t * @param {boolean} opts.modal - Whether the overlay should have modal behaviour or not. Setting this as true will add a translucent shadow between the page and the overlay\n\t * @param {boolean} opts.compact - If true, the .o-overlay--compact class will be added to the overlay that reduces heading font-size and paddings in the content.\n\t * @param {string} opts.src - Either a url from which HTML to populate the overlay can be loaded, or a querySelector string identifying an element from which the textContent should be extracted.\n\t * @param {string} opts.html - String or HTMLElement. Raw HTML (cannot be set declaratively)\n\t * @param {string} opts.trigger - querySelector expression or HTMLElement. When there's a trigger set, a click event handler will be added to it that will open or close the overlay accordingly. (cannot be set declaratively)\n\t * @param {string} opts.zindex - Value of the CSS z-index property of the overlay. Default set via CSS: '10'\n\t * @param {boolean} opts.preventclosing - Prevents closure of overlay via standard x button or escape key. For use when you are directing the user to somewhere else. Only valid with modal set to true.\n\t * @param {boolean} opts.customclose - If you do not use the heading, but want to provide a close button in your html / src (with a class of o-overlay__close), setting customclose to true will attach o-overlay's close handler function to that button.\n\t * @param {string} opts.parentnode - Should be a query selector for a DOM element. If set, the overlay will be appended as a child of this rather than the document body or target. If multiple nodes are matched, it will use the first. If nothing matches this selector, the body will be used.\n\t * @param {boolean} opts.nested - If set to true, the resize, escape, and layer listeners will not be set up. This boolean should be used in conjunction with the parentnode setting to allow an overlay to be positioned within a DOM element rather than overlaid on top of everything. Default: false.\n\t * @param {boolean} opts.nofocus - If set to true, the tabindex will not be set on the wrapper element. Useful in conjunction with the nested and parentnode options. Default: false.\n\t * @param {boolean} opts.fullscreen - If set to true, the overlay will display full screen. This overlay disables scroll on the underlying document and is dismissible with the back button.\n\t * @throws {Error} Will throw an error if the `id` parameter is not unique.\n\t */\n\tconstructor(id, opts) {\n\t\tif (overlays[id]) {\n\t\t\tthrow new Error(\n\t\t\t\t`o-overlay with id \"${id}\" already exists. Creating an overlay twice with the same id may result in unexpected behaviour.`\n\t\t\t);\n\t\t}\n\n\t\tviewport.listenTo('resize');\n\t\tthis.visible = false;\n\t\tthis.id = id;\n\n\t\ttry {\n\t\t\tthis.opts = checkOptions(opts);\n\t\t} catch (e) {\n\t\t\tthis.broadcast('log', 'oErrors', {\n\t\t\t\terror: e,\n\t\t\t});\n\t\t\tthrow e;\n\t\t}\n\n\t\tif (!this.opts) {\n\t\t\tconst noOptError = new Error(\n\t\t\t\t'\"o-overlay error\": Required options have not been set'\n\t\t\t);\n\t\t\tthis.broadcast('log', 'oErrors', {\n\t\t\t\terror: noOptError,\n\t\t\t});\n\t\t\tthrow noOptError;\n\t\t}\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.addEventListener(\n\t\t\t\t'click',\n\t\t\t\ttriggerClickHandler.bind(this.opts.trigger, id),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis.context = document.body;\n\t\t} else {\n\t\t\tif (document.querySelector(this.opts.parentnode)) {\n\t\t\t\tthis.context = document.querySelector(this.opts.parentnode);\n\t\t\t} else {\n\t\t\t\tthis.context = document.body;\n\t\t\t}\n\t\t}\n\n\t\tthis.delegates = {\n\t\t\tdoc: new Delegate(),\n\t\t\twrap: new Delegate(),\n\t\t\tcontext: new Delegate(),\n\t\t};\n\n\t\t// Add this overlay to the overlays hashmap\n\t\toverlays[id] = this;\n\t}\n\n\topen() {\n\t\t// Prevent page scroll for open modals or fullscreen overlays.\n\t\tif (this.opts.modal || this.opts.fullscreen) {\n\t\t\tthis.originalOverflow = document.documentElement.style.overflow;\n\t\t\tdocument.documentElement.style.overflow = 'hidden';\n\t\t}\n\n\t\t// A full screen overlay can look like a new page so add to history.\n\t\t// The browser back button can then be used to close a full-screen overlay.\n\t\tif (window.history.pushState && this.opts.fullscreen) {\n\t\t\t// Push overlay state to history.\n\t\t\twindow.history.pushState(\n\t\t\t\t{[`o-overlay-${this.id}`]: 'fullscreen'},\n\t\t\t\twindow.location.href\n\t\t\t);\n\t\t\t// When history changes check for the overlay and close it.\n\t\t\tthis.popstateHandler = function () {\n\t\t\t\tif (\n\t\t\t\t\twindow.history.state &&\n\t\t\t\t\twindow.history.state[`o-overlay-${this.id}`]\n\t\t\t\t) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\t\twindow.addEventListener('popstate', this.popstateHandler);\n\t\t}\n\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.setAttribute('aria-pressed', 'true');\n\t\t}\n\n\t\tif (!this.content) {\n\t\t\tconst overlay = this;\n\t\t\tthis.loadContent(function (html) {\n\t\t\t\toverlay.opts.html = html;\n\t\t\t\tif (!overlay.opts.html) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'\"o-overlay error\": Content for the overlay needs to be set via the \"html\" or the \"src\" option.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\toverlay.render();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tloadContent(callback) {\n\t\tif (!this.opts.html && this.opts.src) {\n\t\t\tif (/^(https?\\:\\/)?\\//.test(this.opts.src)) {\n\t\t\t\tutils.copyContentFromUrl(this.opts.src, function (html) {\n\t\t\t\t\tcallback(html);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tutils.copyContentFromElement(\n\t\t\t\t\tdocument.querySelector(this.opts.src),\n\t\t\t\t\tfunction (html) {\n\t\t\t\t\t\tcallback(html);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tcallback(this.opts.html);\n\t\t}\n\t}\n\n\trender() {\n\t\tconst wrapperEl = document.createElement('div');\n\t\twrapperEl.className = 'o-overlay';\n\t\twrapperEl.classList.add('o-overlay--' + this.id.replace(' ', '-'));\n\n\t\t// Add custom classes to the newly created overlay wrapper.\n\t\tif (this.opts.class) {\n\t\t\ttry {\n\t\t\t\twrapperEl.classList.add(...this.opts.class.split(' '));\n\t\t\t} catch (error) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`Could not add the classes: ${this.opts.class}`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.opts.fullscreen) {\n\t\t\twrapperEl.classList.add('o-overlay--full-screen');\n\t\t}\n\n\t\twrapperEl.setAttribute('role', 'dialog');\n\t\twrapperEl.setAttribute('aria-modal', 'true');\n\t\tif (this.opts.zindex) {\n\t\t\twrapperEl.style.zIndex = this.opts.zindex;\n\t\t}\n\t\tthis.wrapper = wrapperEl;\n\n\t\tif (this.opts.heading) {\n\t\t\tconst heading = document.createElement('header');\n\t\t\tconst headingId = this.opts.heading.title\n\t\t\t\t.toLowerCase()\n\t\t\t\t// replace non-ascii alphanums with hyphens\n\t\t\t\t.replace(/[^a-z0-9-]/g, '-')\n\t\t\t\t// replace repeated hyphens with a single hyphen\n\t\t\t\t.replace(/[\\s-]+/g, '-');\n\t\t\theading.classList.add('o-overlay__heading');\n\t\t\twrapperEl.setAttribute('aria-labelledby', headingId);\n\n\t\t\tif (this.opts.heading.shaded) {\n\t\t\t\theading.classList.add('o-overlay__heading--shaded');\n\t\t\t}\n\n\t\t\tif (!this.opts.preventclosing) {\n\t\t\t\tconst button = document.createElement('button');\n\t\t\t\tbutton.className = 'o-overlay__close';\n\t\t\t\tbutton.setAttribute('aria-label', 'Close');\n\t\t\t\tbutton.setAttribute('title', 'Close');\n\n\t\t\t\tif (!this.opts.nofocus) {\n\t\t\t\t\tbutton.setAttribute('tabindex', '0');\n\t\t\t\t}\n\t\t\t\theading.appendChild(button);\n\t\t\t}\n\n\t\t\tconst title = document.createElement('span');\n\t\t\ttitle.setAttribute('role', 'heading');\n\t\t\ttitle.setAttribute('aria-level', '1');\n\t\t\ttitle.className = 'o-overlay__title';\n\t\t\ttitle.innerHTML = this.opts.heading.title;\n\t\t\ttitle.setAttribute('id', headingId);\n\n\t\t\tif (this.opts.heading.visuallyhidetitle) {\n\t\t\t\ttitle.classList.add('o-overlay__title--sr-only');\n\t\t\t}\n\n\t\t\theading.appendChild(title);\n\t\t\twrapperEl.appendChild(heading);\n\t\t}\n\n\t\tif (this.opts.tooltip) {\n\t\t\tconst button = document.createElement('a');\n\t\t\tbutton.className = 'o-overlay__close';\n\t\t\tbutton.setAttribute('role', 'button');\n\t\t\tbutton.setAttribute('href', '#void');\n\t\t\tbutton.setAttribute('aria-label', 'Close');\n\t\t\tbutton.setAttribute('title', 'Close');\n\t\t\tif (!this.opts.nofocus) {\n\t\t\t\tbutton.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\twrapperEl.appendChild(button);\n\t\t\twrapperEl.classList.add('o-overlay--compact');\n\t\t}\n\n\t\tconst content = document.createElement('section');\n\t\tcontent.className = 'o-overlay__content';\n\t\twrapperEl.appendChild(content);\n\n\t\tthis.content = content;\n\n\t\tif (this.opts.compact) {\n\t\t\twrapperEl.classList.add('o-overlay--compact');\n\t\t}\n\n\t\tthis.show();\n\t}\n\n\t_trapFocus() {\n\t\tconst allFocusableNodes = Array.from(this.wrapper.querySelectorAll(focusable))\n\t\t\t.filter(element => filterFocusableElements(element))\n\t\t\tif (allFocusableNodes.length) {\n\t\t\t\tallFocusableNodes[0].focus();\n\t\t\t}\n\t\t// Trap the focus inside the overlay so keyboard navigation doesn't escape the overlay\n\t\tdocument.addEventListener('keydown', focusTrap.bind(this));\n\t}\n\n\t/**\n\t * Show the overlay\n\t *\n\t * @fires oOverlay#ready\n\t */\n\tshow() {\n\t\tthis.wrapper.style.display = 'block';\n\t\tif (this.opts.modal) {\n\t\t\tthis.wrapper.classList.add('o-overlay--modal');\n\t\t\tconst shadow = document.createElement('div');\n\t\t\tshadow.className = 'o-overlay-shadow';\n\t\t\tthis.shadow = shadow;\n\n\t\t\tif (this.opts.zindex) {\n\t\t\t\tshadow.style.zIndex = this.opts.zindex - 1;\n\t\t\t}\n\n\t\t\tdocument.body.appendChild(shadow);\n\t\t}\n\n\t\tthis.delegates.doc.root(document.body);\n\t\tthis.delegates.wrap.root(this.wrapper);\n\t\tthis.delegates.context.root(this.context);\n\n\t\tthis.closeHandler = this.close.bind(this);\n\n\t\t// If the overlay is nested within a DOM element don't attach the viewport resize listeners.\n\t\tif (!this.opts.nested) {\n\t\t\tthis.resizeListenerHandler = this.resizeListener.bind(this);\n\t\t\tthis.delegates.doc.on(\n\t\t\t\t'oViewport.resize',\n\t\t\t\t'body',\n\t\t\t\tthis.resizeListenerHandler\n\t\t\t);\n\n\t\t\tthis.closeOnEscapePressHandler = this.closeOnEscapePress.bind(this);\n\t\t\tthis.delegates.doc.on('keyup', this.closeOnEscapePressHandler);\n\t\t}\n\n\t\tif (this.opts.layer) {\n\t\t\tthis.closeOnNewLayerHandler = this.closeOnNewLayer.bind(this);\n\t\t\tthis.delegates.context.on('oOverlay.layerOpen', this.closeOnNewLayerHandler);\n\n\t\t\tthis.broadcast('layerOpen');\n\t\t}\n\n\t\tif (this.opts.heading || this.opts.tooltip || this.opts.customclose) {\n\t\t\tthis.delegates.wrap.on('click', '.o-overlay__close', this.closeHandler);\n\t\t\tthis.delegates.wrap.on(\n\t\t\t\t'touchend',\n\t\t\t\t'.o-overlay__close',\n\t\t\t\tthis.closeHandler\n\t\t\t);\n\t\t}\n\n\t\tthis.closeOnExternalClickHandler = this.closeOnExternalClick.bind(this);\n\t\tthis.delegates.doc.on('click', 'body', this.closeOnExternalClickHandler);\n\t\tthis.delegates.doc.on('touchend', 'body', this.closeOnExternalClickHandler);\n\n\t\tthis.context.appendChild(this.wrapper);\n\n\t\t// Give the overlay focus\n\t\tif (!this.opts.nofocus) {\n\t\t\tthis.wrapper.setAttribute('tabindex', '0');\n\t\t\tthis.wrapper.style.outline = 0;\n\t\t}\n\n\t\t// Renders content after overlay has been added so css is applied before that\n\t\t// This way if an element has autofocus, the window won't scroll to the bottom\n\t\t// in Safari as the overlay is already in position\n\t\twindow.requestAnimationFrame(\n\t\t\tfunction () {\n\t\t\t\tif (!this.content.innerHTML) {\n\t\t\t\t\tif (typeof this.opts.html === 'string') {\n\t\t\t\t\t\tthis.content.innerHTML = this.opts.html;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.content.appendChild(this.opts.html);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.width = this.getWidth();\n\t\t\t\tthis.height = this.getHeight();\n\n\t\t\t\t// If the overlay is nested within a DOM element don't resize according to the viewport.\n\t\t\t\tif (!this.opts.nested) {\n\t\t\t\t\tthis.realign();\n\t\t\t\t}\n\t\t\t\tthis.visible = true;\n\t\t\t\tthis.wrapper.focus();\n\t\t\t\t/**\n\t\t\t\t * Ready event\n\t\t\t\t *\n\t\t\t\t * @event oOverlay#ready\n\t\t\t\t * @type {object}\n\t\t\t\t * @property {Overlay} instance - the firing instance\n\t\t\t\t */\n\t\t\t\tthis.broadcast('ready', 'oOverlay', {\n\t\t\t\t\tinstance: this\n\t\t\t\t});\n\n\t\t\t\t// Add o-tracking integration\n\t\t\t\tthis.broadcast('event', 'oTracking', {\n\t\t\t\t\tcategory: 'overlay',\n\t\t\t\t\taction: 'show',\n\t\t\t\t\toverlay_id: this.id,\n\t\t\t\t});\n\t\t\t\tthis._trapFocus();\n\t\t\t}.bind(this)\n\t\t);\n\t}\n\n\tclose() {\n\t\tthis.delegates.doc.destroy();\n\t\tthis.delegates.wrap.destroy();\n\t\tthis.delegates.context.destroy();\n\n\t\t// Restore document scroll when modals or fullscreen overlays are closed.\n\t\tif (this.opts.modal || this.opts.fullscreen) {\n\t\t\tdocument.documentElement.style.overflow = this.originalOverflow;\n\t\t}\n\n\t\t// Remove fullscreen popstate handler and re-enable document scroll.\n\t\tif (this.opts.fullscreen) {\n\t\t\twindow.removeEventListener('popstate', this.popstateHandler);\n\t\t}\n\t\t// Remove state from history if fullscreen state is still in history.\n\t\t// E.g.The close button was clicked directly rather than the browser back button.\n\t\tif (\n\t\t\twindow.history.pushState &&\n\t\t\twindow.history.state &&\n\t\t\twindow.history.state[`o-overlay-${this.id}`] === 'fullscreen'\n\t\t) {\n\t\t\twindow.history.back();\n\t\t}\n\n\t\tviewport.stopListeningTo('resize');\n\n\t\tthis.broadcast('destroy');\n\t\tthis.broadcast('event', 'oTracking', {\n\t\t\tcategory: 'overlay',\n\t\t\taction: 'close',\n\t\t\toverlay_id: this.id,\n\t\t});\n\n\t\tthis.context.removeChild(this.wrapper);\n\t\tif (this.opts.modal) {\n\t\t\tthis.shadow.parentNode.removeChild(this.shadow);\n\t\t}\n\n\t\t// Put focus back on the triggering element\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.focus();\n\t\t\tthis.opts.trigger.setAttribute('aria-pressed', 'false');\n\t\t}\n\t\tdocument.removeEventListener('keydown', focusTrap);\n\n\t\tthis.visible = false;\n\n\t\tif (this.opts.layer) {\n\t\t\tthis.broadcast('layerClose');\n\t\t}\n\t\tthis.wrapper.style.display = 'none';\n\n\t\treturn false;\n\t}\n\n\tcloseOnExternalClick(ev) {\n\t\tif (\n\t\t\t!this.wrapper.contains(ev.target) &&\n\t\t\t!this.opts.modal &&\n\t\t\tthis.opts.trigger &&\n\t\t\t!this.opts.trigger.contains(ev.target)\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tcloseOnEscapePress(ev) {\n\t\tif (!this.opts.preventclosing && ev.keyCode === 27) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tcloseOnNewLayer(ev) {\n\t\tif (!ev.detail || ev.detail.el !== this) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresizeListener(ev) {\n\t\tif (!this.wrapper.contains(ev.target)) {\n\t\t\tthis.respondToWindow();\n\t\t}\n\t}\n\n\tbroadcast(eventType, namespace, detail) {\n\t\tnamespace = namespace || 'oOverlay';\n\n\t\tconst isLayerEvent = eventType === 'layerOpen' || eventType === 'layerClose';\n\t\tconst target = isLayerEvent ? this.context : this.wrapper || document.body;\n\n\t\tdetail = detail || {};\n\n\t\tif (namespace !== 'oTracking') {\n\t\t\tdetail.el = this;\n\t\t}\n\n\t\ttarget.dispatchEvent(\n\t\t\tnew CustomEvent(namespace + '.' + eventType, {\n\t\t\t\tdetail: detail,\n\t\t\t\tbubbles: true,\n\t\t\t})\n\t\t);\n\t}\n\n\trealign(dimension, size) {\n\t\t// Realign both height and width according to the window by default.\n\t\tif (!dimension && !size) {\n\t\t\tthis._align('width', viewport.getSize().width);\n\t\t\tthis._align('height', viewport.getSize().height);\n\t\t\treturn;\n\t\t}\n\n\t\t// For a given dimension realign according to the viewport by default.\n\t\tif (dimension && !size) {\n\t\t\tthis._align(dimension, viewport.getSize()['dimension']);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._align(dimension, size);\n\t}\n\n\t_align(dimension, size) {\n\t\tif (dimension !== 'width' && dimension !== 'height') {\n\t\t\tthrow new Error(\n\t\t\t\t`Can not realign the overlay for the dimension \"${dimension}\". \"height\" or \"width\" expected.`\n\t\t\t);\n\t\t}\n\n\t\tif (isNaN(size)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Can not realign the overlay for the size ${size}. A number is expected.`\n\t\t\t);\n\t\t}\n\n\t\tconst edge = dimension === 'width' ? 'left' : 'top';\n\n\t\t// Update overlay size for realignment calculation.\n\t\t// We may be realigning because the content within the overlay has changed.\n\t\tthis.width = this.getWidth();\n\t\tthis.height = this.getHeight();\n\n\t\t// E.g. viewport dimension <= overlay dimension\n\t\tif (size <= this[dimension]) {\n\t\t\tthis.wrapper.classList.add('o-overlay--full-' + dimension);\n\t\t\tthis.wrapper.style[edge] = '0';\n\t\t\tthis.wrapper.style['margin' + utils.capitalise(edge)] = 0;\n\t\t\tif (dimension === 'height') {\n\t\t\t\t// Set the exact height that the content of the overlay will have which is the total\n\t\t\t\t// height of the overlay minus the heading if there is one. If height = 100%, the\n\t\t\t\t// heading is part of that 100%, so some content is truncated.\n\t\t\t\tconst borderHeight =\n\t\t\t\t\tthis.wrapper.offsetHeight - this.wrapper.clientHeight;\n\t\t\t\tthis.content.style.height =\n\t\t\t\t\tthis.wrapper.offsetHeight -\n\t\t\t\t\t(this.opts.heading\n\t\t\t\t\t\t? this.wrapper.querySelector('header').offsetHeight\n\t\t\t\t\t\t: 0) -\n\t\t\t\t\tborderHeight +\n\t\t\t\t\t'px';\n\t\t\t}\n\t\t} else {\n\t\t\tif (dimension === 'height') {\n\t\t\t\t// Remove the property and let the overlay extend to its content\n\t\t\t\tthis.content.style.height = null;\n\t\t\t}\n\t\t\tthis.wrapper.classList.remove('o-overlay--full-' + dimension);\n\t\t\tthis.wrapper.style['margin' + utils.capitalise(edge)] =\n\t\t\t\t-(this.wrapper['offset' + utils.capitalise(dimension)] / 2) + 'px';\n\n\t\t\t// Set alignment in JavaScript (not via CSS) after all other styles have been applied\n\t\t\t// so that browsers compute it properly. If it's applied earlier, when the negative\n\t\t\t// margin is calculated, the overlay might not fit, so it shrinks and the negative\n\t\t\t// margin would be incorrect\n\t\t\tthis.wrapper.style[edge] = '50%';\n\t\t}\n\t}\n\n\trespondToWindow() {\n\t\tthis.realign();\n\t}\n\n\tfills(dimension) {\n\t\treturn this.wrapper.classList.contains('o-overlay--full-' + dimension);\n\t}\n\n\tdestroy() {\n\t\tif (this.visible === true) {\n\t\t\tthis.close();\n\t\t}\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.removeEventListener('click', triggerClickHandler);\n\t\t}\n\t\tdelete overlays[this.id];\n\t}\n\n\tgetHeight() {\n\t\tconst borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n\t\treturn (\n\t\t\tthis.content.scrollHeight +\n\t\t\t(this.opts.heading\n\t\t\t\t? this.wrapper.querySelector('header').offsetHeight\n\t\t\t\t: 0) +\n\t\t\tborderHeight\n\t\t);\n\t}\n\n\tgetWidth() {\n\t\tconst borderWidth = this.wrapper.offsetWidth - this.wrapper.clientWidth;\n\t\treturn this.content.scrollWidth + borderWidth;\n\t}\n\n\tstatic init(el) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t}\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tconst triggers = el.querySelectorAll('.o-overlay-trigger');\n\t\tconst overlaysArray = [];\n\t\tfor (let t = 0; t < triggers.length; t++) {\n\t\t\t// There can only be one overlay per trigger when set declaratively, so the first trigger found for a given overlay will be the one used to create the overlay\n\t\t\tif (!overlays[triggers[t].getAttribute('data-o-overlay-id')]) {\n\t\t\t\toverlaysArray.push(\n\t\t\t\t\tnew Overlay(\n\t\t\t\t\t\ttriggers[t].getAttribute('data-o-overlay-id'),\n\t\t\t\t\t\tgetOptionsFromTrigger(triggers[t])\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn overlaysArray;\n\t}\n\n\tstatic destroy() {\n\t\tconst overlayIds = Object.keys(overlays);\n\t\toverlayIds.forEach(function (id) {\n\t\t\toverlays[id].destroy();\n\t\t});\n\t}\n\n\tstatic getOverlays() {\n\t\treturn overlays;\n\t}\n}\n\nexport default Overlay;\n","\nimport Overlay from './src/js/overlay.js';\n\nconst constructAll = function() {\n\tOverlay.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\n\nexport default Overlay;\n","import Overlay from '@financial-times/o-overlay';\n\nconst form = `<form id=\"o-comments-displayname-form\" class=\"o-forms o-forms o-comments__displayname-form\">\n\t\t\t<label for=\"o-comments-displayname-input\" class=\"o-forms-field o-comments__displayname-field\">\n\t\t\t\t<span class=\"o-forms-title\">Display name</span>\n\t\t\t</label>\n\t\t\t<div class=\"o-comments__displayname-container\">\n\t\t\t\t<span class=\"o-forms-input o-forms-input--text o-comments__displayname-input\">\n\t\t\t\t\t<input id=\"o-comments-displayname-input\" type=\"text\" name=\"text\" value=\"\" required=\"\">\n\t\t\t\t</span>\n\t\t\t\t<button type=\"submit\" class=\"o-comments__displayname-submit\">Save</button>\n\t\t\t</div>\n\t\t\t<span id=\"o-comments-displayname-error\" class=\"o-forms-input__error o-comments__displayname-error\" aria-live=\"assertive\"></span>\n\t</form>\n</form>`;\n\nconst isUnique = (displayName) => {\n\tconst url = `https://comments-api.ft.com/displayname/isavailable/${encodeURIComponent(displayName)}`;\n\n\treturn fetch(url, { method: 'GET' })\n\t\t.then(response => response.json())\n\t\t.then(({available}) => {\n\t\t\treturn available;\n\t\t});\n};\n\nconst findInvalidCharacters = (displayName) => {\n\t/*\n\t * Allowed Characters\n\t * The below regex matches any character not in the allowed characters set\n\t * All allowed characters are case insensitive\n\t * Anything in the range A-Z or 0-9 is allowed\n\t * Any of the below special characters are allowed\n\t * !#$%'`()*+,-./:;=@[]^_{|}\n\t * Spaces are allowed\n\t */\n\n\tconst matchInvalidCharacters = /[^0-9a-z!#$%'`()*+,\\-.\\/:;=@[\\]\\^_{}\\|\\s]/gi;\n\tconst matchingCharacters = displayName\n\t\t.match(matchInvalidCharacters);\n\tconst uniqueMatchingCharacters = matchingCharacters && matchingCharacters.length ?\n\t\tmatchingCharacters\n\t\t\t.filter((character, position) => matchingCharacters.indexOf(character) === position) :\n\t\t[];\n\n\treturn uniqueMatchingCharacters.length ?\n\t\tuniqueMatchingCharacters.join('') :\n\t\tfalse;\n};\n\nconst prompt = () => {\n\tconst overlay = new Overlay('displayName', {\n\t\thtml: form,\n\t\tclass: 'o-comments__displayname-prompt',\n\t\tcompact: true,\n\t\theading: {\n\t\t\ttitle: 'Choose a commenting display name'\n\t\t}\n\t});\n\n\toverlay.open();\n\n\treturn overlay;\n};\n\nconst validation = (displayName) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!displayName) {\n\t\t\treturn reject(new Error('Empty display name'));\n\t\t}\n\n\t\tconst invalidCharacters = findInvalidCharacters(displayName);\n\n\t\tif (invalidCharacters) {\n\t\t\treturn reject(new Error(`The display name contains the following invalid characters: ${invalidCharacters}`));\n\t\t} else {\n\t\t\tisUnique(displayName)\n\t\t\t\t.then(isUnique => {\n\t\t\t\t\tif (!isUnique) {\n\t\t\t\t\t\treturn reject(new Error('Unfortunately that display name is already taken'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn resolve(displayName);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tconst apiError = new Error('Sorry, we are unable to update display names. Please try again later.');\n\n\t\t\t\t\tapiError.name = 'CommentsApiError';\n\n\t\t\t\t\treturn reject(apiError);\n\t\t\t\t});\n\t\t}\n\t});\n};\n\nconst promptValidation = (event) => {\n\tevent.preventDefault();\n\n\treturn new Promise(resolve => {\n\t\tconst displayNameForm = event.srcElement;\n\t\tconst input = displayNameForm.querySelector('input');\n\t\tconst displayName = input.value.trim();\n\t\tconst errorMessage = displayNameForm.querySelector('#o-comments-displayname-error');\n\n\t\terrorMessage.innerText = '';\n\t\tdisplayNameForm.classList.remove('o-forms-input--invalid');\n\n\n\t\treturn validation(displayName)\n\t\t\t.then(displayName => resolve(displayName))\n\t\t\t.catch(error => {\n\t\t\t\terrorMessage.innerText = error.message;\n\t\t\t\tdisplayNameForm.classList.add('o-forms-input--invalid');\n\n\t\t\t\tif (error.name === 'CommentsApiError') {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t});\n\t});\n};\n\nexport default {\n\tprompt,\n\tvalidation,\n\tpromptValidation\n};\n","export default {\n\tfetchJsonWebToken: function fetchJsonWebToken (options = {}) {\n\t\tconst url = new URL('https://comments-api.ft.com/user/auth/');\n\n\t\tif (options.displayName) {\n\t\t\turl.searchParams.append('displayName', options.displayName);\n\t\t}\n\n\t\tif (options.useStagingEnvironment) {\n\t\t\turl.searchParams.append('staging', '1');\n\t\t}\n\n\t\treturn fetch(url, { credentials: 'include' }).then(response => {\n\t\t// user is signed in and has a pseudonym\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t// user is signed in but has no display name\n\t\t\t\tif (response.status === 409) {\n\t\t\t\t\treturn { userHasValidSession: true };\n\t\t\t\t}\n\n\t\t\t\t// user is not signed in or session token is invalid\n\t\t\t\t// or error in comments api\n\t\t\t\treturn { userHasValidSession: false };\n\t\t\t}\n\t\t});\n\t}\n};\n","import events from './utils/events.js';\nimport displayName from './utils/display-name.js';\nimport auth from './utils/auth.js';\nimport purgeJwtCache from './utils/purge-jwt-cache.js';\n\nclass Stream {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {HTMLElement} [streamEl] - The component element in the DOM\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t */\n\tconstructor (streamEl, opts = {}) {\n\t\tthis.streamEl = streamEl || document;\n\t\tthis.options = opts;\n\t\tthis.eventSeenTimes = {};\n\t\tthis.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n\t}\n\n\tinit () {\n\t\tconst renderAndAuthenticate = (displayName) => {\n\t\t\treturn Promise.all([this.renderComments(), this.authenticateUser(displayName)])\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.login();\n\t\t\t\t});\n\t\t};\n\n\t\treturn displayName.validation(this.options.displayName)\n\t\t\t.then(displayName => renderAndAuthenticate(displayName))\n\t\t\t.catch(() => renderAndAuthenticate());\n\t}\n\n\tlogin () {\n\t\tif (this.authenticationToken) {\n\t\t\tthis.embed.login(this.authenticationToken);\n\n\t\t\tif (this.displayName) {\n\t\t\t\tthis.renderSignedInMessage();\n\t\t\t}\n\t\t}\n\t}\n\n\tauthenticateUser (displayName) {\n\t\tconst fetchOptions = {\n\t\t\tuseStagingEnvironment: this.useStagingEnvironment\n\t\t};\n\n\t\tif (displayName) {\n\t\t\tfetchOptions.displayName = displayName;\n\t\t}\n\n\t\treturn auth.fetchJsonWebToken(fetchOptions)\n\t\t\t.then(response => {\n\t\t\t\tthis.displayName = response.displayName;\n\n\t\t\t\tif (response.token) {\n\t\t\t\t\tthis.authenticationToken = response.token;\n\t\t\t\t} else {\n\t\t\t\t\tthis.userHasValidSession = response.userHasValidSession;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n\n\trenderComments () {\n\t\treturn new Promise((resolve) => {\n\t\t\ttry {\n\t\t\t\t/*global Coral*/\n\t\t\t\tconst cacheBuster = 'cachebust=20210806';\n\t\t\t\tconst rootUrl = this.useStagingEnvironment\n\t\t\t\t\t? 'https://ft.staging.coral.coralproject.net'\n\t\t\t\t\t: 'https://ft.coral.coralproject.net';\n\n\t\t\t\tconst scriptElement = document.createElement('script');\n\t\t\t\tscriptElement.src = `${rootUrl}/assets/js/embed.js?${cacheBuster}`;\n\n\t\t\t\tscriptElement.onload = () => {\n\t\t\t\t\tthis.embed = Coral.createStreamEmbed(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: this.streamEl.id,\n\t\t\t\t\t\t\tstoryURL: this.options.articleUrl,\n\t\t\t\t\t\t\tstoryID: this.options.articleId,\n\t\t\t\t\t\t\trootURL: rootUrl,\n\t\t\t\t\t\t\tautoRender: true,\n\t\t\t\t\t\t\tbodyClassName: 'o-comments-coral-talk-container',\n\t\t\t\t\t\t\tevents: (events) => {\n\t\t\t\t\t\t\t\tevents.onAny((name, data) => {\n\t\t\t\t\t\t\t\t\tthis.publishEvent({name, data});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tthis.streamEl.parentNode.appendChild(scriptElement);\n\n\t\t\t\tif (this.useStagingEnvironment) {\n\t\t\t\t\tconst stagingWarning = document.createElement('div');\n\t\t\t\t\tstagingWarning.innerHTML = `\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"o-comments__staging-message-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"o-comments__staging-message-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"o-comments__staging-message\">You are on the staging environment for Comments</p>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>`;\n\t\t\t\t\tthis.streamEl.parentNode.insertBefore(stagingWarning, this.streamEl);\n\t\t\t\t}\n\n\t\t\t\tdocument.dispatchEvent(new Event('oCommentsReady'));\n\t\t\t} catch (error) {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\tdisplayNamePrompt ({purgeCacheAfterCompletion = false} = {}) {\n\t\tconst overlay = displayName.prompt();\n\n\t\tconst onOverlayReady = (event) => {\n\t\t\tconst sourceOverlay = event.srcElement;\n\t\t\tconst displayNameForm = sourceOverlay.querySelector('#o-comments-displayname-form');\n\n\t\t\tif (displayNameForm) {\n\t\t\t\tdisplayNameForm.addEventListener('submit', (event) => {\n\t\t\t\t\tdisplayName.promptValidation(event)\n\t\t\t\t\t\t.then(displayName => {\n\t\t\t\t\t\t\toverlay.close();\n\t\t\t\t\t\t\tthis.authenticateUser(displayName)\n\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tthis.login();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (purgeCacheAfterCompletion) {\n\t\t\t\t\t\t\t\tpurgeJwtCache();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('oOverlay.ready', onOverlayReady);\n\n\t\tconst onOverlayClosed = () => {\n\t\t\toverlay.context.removeEventListener('oLayers.close', onOverlayClosed);\n\t\t\tdocument.removeEventListener('oOverlay.ready', onOverlayReady);\n\t\t\toverlay.destroy();\n\t\t};\n\t\toverlay.context.addEventListener('oLayers.close', onOverlayClosed);\n\t}\n\n\t/**\n\t * Emits events that have a valid o-comment event name.\n\t *\n\t * @param {object} args - The args object\n\t * @param {string} args.name - The event name\n\t * @param {object} args.data - The event payload\n\t * @returns {void}\n\t */\n\tpublishEvent ({name, data = {}}) {\n\t\tconst {\n\t\t\tsuccess: {\n\t\t\t\tstatus\n\t\t\t} = {},\n\t\t\terror\n\t\t} = data;\n\n\t\tif (name === 'loginPrompt' && this.userHasValidSession) {\n\t\t\treturn this.displayNamePrompt();\n\t\t}\n\n\t\tconst mappedEvent = events.coralEventMap.get(name);\n\n\t\tif (mappedEvent) {\n\t\t\tconst now = Number(new Date);\n\t\t\tconst delayInMilliseconds = 100;\n\t\t\tconst eventHasntBeenSeenRecently = !this.eventSeenTimes[mappedEvent.oComments] ||\n\t\t\t\tnow > this.eventSeenTimes[mappedEvent.oComments] + delayInMilliseconds;\n\n\t\t\tif (eventHasntBeenSeenRecently) {\n\t\t\t\tthis.eventSeenTimes[mappedEvent.oComments] = now;\n\n\t\t\t\tconst oCommentsEventOptions = { bubbles: true };\n\t\t\t\tif (error) {\n\t\t\t\t\toCommentsEventOptions.detail = { error };\n\t\t\t\t}\n\n\t\t\t\tconst oCommentsEvent = new CustomEvent(mappedEvent.oComments, oCommentsEventOptions);\n\t\t\t\tthis.streamEl.dispatchEvent(oCommentsEvent);\n\n\t\t\t\tif (mappedEvent.oTracking && !this.options.disableOTracking) {\n\t\t\t\t\tconst oTrackingEventOptions = {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tcategory: 'comment',\n\t\t\t\t\t\t\taction: mappedEvent.oTracking,\n\t\t\t\t\t\t\tcoral: true,\n\t\t\t\t\t\t\tisWithheld: status === 'SYSTEM_WITHHELD'\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\toTrackingEventOptions.detail.error = error;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst oTrackingEvent = new CustomEvent('oTracking.event', oTrackingEventOptions);\n\t\t\t\t\tdocument.body.dispatchEvent(oTrackingEvent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\trenderSignedInMessage () {\n\t\tconst editButtonId = `o-comments-edit-button--${this.streamEl.id}`;\n\t\tconst signedInMessage = document.createElement('div');\n\t\tsignedInMessage.classList.add('o-comments__signed-in-container');\n\t\tsignedInMessage.innerHTML = `\n\t\t\t\t\t\t\t\t\t<p class=\"o-comments__signed-in-text\">Signed in as\n\t\t\t\t\t\t\t\t\t\t<span class=\"o-comments__signed-in-inner-text\"></span>\n\t\t\t\t\t\t\t\t\t\t<button id=\"${editButtonId}\" class=\"o-comments__edit-display-name\">\n\t\t\t\t\t\t\t\t\t\t\tEdit <span class=\"o-comments__edit-display-name-descriptive\">commenting display name</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</p>`;\n\t\tsignedInMessage.querySelector('.o-comments__signed-in-inner-text').innerText = this.displayName;\n\n\t\tconst oldSignedInMessage = this.streamEl.parentNode.querySelector('.o-comments__signed-in-container');\n\t\tif (oldSignedInMessage) {\n\t\t\toldSignedInMessage.remove();\n\t\t}\n\n\t\tthis.streamEl.parentNode.insertBefore(signedInMessage, this.streamEl);\n\n\t\tdocument.getElementById(editButtonId).onclick = () => {\n\t\t\tthis.displayNamePrompt({purgeCacheAfterCompletion: true});\n\t\t};\n\t}\n}\n\nexport default Stream;\n","export default function purgeJwtCache() {\n\tconst url = `https://comments-api.ft.com/user/auth`;\n\treturn fetch(url, {\n\t\tmethod: 'PURGE',\n\t\tcredentials: 'include'\n\t});\n}\n","class Count {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {HTMLElement} [countEl] - The component element in the DOM\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t */\n\tconstructor (countEl, opts = {}) {\n\t\tthis.countEl = countEl;\n\t\tthis.articleId = opts.articleId;\n\t\tthis.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n\t}\n\n\t/**\n\t * Render a comment count instance.\n\t *\n\t * @access private\n\t * @returns {Promise<void>} A promise that resolves when the count has been updated\n\t */\n\trenderCount () {\n\t\tif (this.countEl && !(this.countEl instanceof HTMLElement)) {\n\t\t\tthis.countEl = document.querySelector(this.countEl);\n\t\t}\n\n\t\tif (!this.countEl) {\n\t\t\tthrow new Error('Element must be a HTMLElement');\n\t\t}\n\n\t\treturn Count.fetchCount(this.articleId, this.useStagingEnvironment)\n\t\t\t.then((count) => {\n\t\t\t\tthis.countEl.textContent = count;\n\n\t\t\t\tconst countLabel = Count.getCountLabel(count);\n\t\t\t\tthis.countEl.setAttribute('aria-label', countLabel);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get the aria-label for the count element.\n\t *\n\t * @param {number} count - The comment count\n\t * @returns {string} The string that should be used as the aria-label\n\t */\n\tstatic getCountLabel (count) {\n\t\tif (count === 1) {\n\t\t\treturn 'There is 1 comment, click to go to the comment section.';\n\t\t} else {\n\t\t\treturn `There are ${count} comments, click to go to the comment section.`;\n\t\t}\n\t}\n\n\tstatic fetchCount (id, useStaging) {\n\t\tconst url = `https://comments-api.ft.com/story/count/${id}` + (useStaging ? '?staging=1' : '');\n\n\t\treturn fetch(url)\n\t\t\t.then(res => res.json())\n\t\t\t.then(json => json.commentCount)\n\t\t\t.catch(error => {\n\t\t\t\tthrow new Error(`Error with fetching comment count: ${error.message}`);\n\t\t\t});\n\t}\n}\n\nexport default Count;\n","import Stream from './stream.js';\nimport Count from './count.js';\n\nclass Comments {\n\tconstructor (rootEl, opts) {\n\t\tthis.options = Object.assign({}, {}, opts || Comments.getDataAttributes(rootEl));\n\t\tconst isCount = rootEl.getAttribute('data-o-comments-count') === 'true';\n\t\tif (!this.options.articleId) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `articleId`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\t\tif (!this.options.articleUrl) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `articleUrl`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\t\tif (!this.options.title) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `title`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\n\t\tif (isCount) {\n\t\t\tconst count = new Count(rootEl, this.options);\n\t\t\tcount.renderCount();\n\n\t\t\treturn count;\n\t\t} else {\n\t\t\tconst stream = new Stream(rootEl, this.options);\n\t\t\tstream.init();\n\n\t\t\treturn stream;\n\t\t}\n\t}\n\n\tstatic getCount (id) {\n\t\treturn Count.fetchCount(id);\n\t}\n\n\t/**\n\t * Get the data attributes from the element. If the component is being set up\n\t * declaratively, this method is used to extract the data attributes from the DOM.\n\t *\n\t * @param {HTMLElement} rootEl - The component element in the DOM\n\t * @returns {object} - Data attributes as an object\n\t */\n\tstatic getDataAttributes (rootEl) {\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\treturn {};\n\t\t}\n\t\treturn Object.keys(rootEl.dataset).reduce((options, key) => {\n\n\t\t\t// Ignore data-o-component\n\t\t\tif (key === 'oComponent') {\n\t\t\t\treturn options;\n\t\t\t}\n\n\t\t\t// Build a concise key and get the option value\n\t\t\tconst shortKey = key.replace(/^oComments(\\w)(\\w+)$/, (m, m1, m2) => m1.toLowerCase() + m2);\n\t\t\tconst value = rootEl.dataset[key];\n\n\t\t\t// Try parsing the value as JSON, otherwise just set it as a string\n\t\t\ttry {\n\t\t\t\toptions[shortKey] = JSON.parse(value.replace(/\\'/g, '\"'));\n\t\t\t} catch (error) {\n\t\t\t\toptions[shortKey] = value;\n\t\t\t}\n\n\t\t\treturn options;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Initialise the component.\n\t *\n\t * @param {(HTMLElement | string)} rootEl - The root element to intialise the component in, or a CSS selector for the root element\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t * @returns {(Comments|Array<Comments>)} - Comments instance(s)\n\t */\n\tstatic init (rootEl, opts) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t}\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\t\tif (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-comments]')) {\n\t\t\treturn new Comments(rootEl, opts);\n\t\t}\n\t\treturn Array.from(rootEl.querySelectorAll('[data-o-component=\"o-comments\"]'), rootEl => new Comments(rootEl, opts));\n\t}\n}\n\nexport default Comments;\n","import Comments from './src/js/comments.js';\n\nconst constructAll = function () {\n\tComments.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\n\nexport default Comments;\n","import Toggle from '@financial-times/o-toggle';\n\nfunction init (headerEl) {\n\tconst target = headerEl.querySelector('[data-o-header-search]');\n\tconst controls = target && headerEl.querySelectorAll(`[aria-controls=\"${target.id}\"]`);\n\n\tif (controls === null || controls.length === 0) {\n\t\treturn;\n\t}\n\n\tconst opening = [];\n\n\tconst callback = function (state, e) {\n\t\tif (state === 'open') {\n\t\t\t// record the opening control\n\t\t\topening.push(e.currentTarget);\n\t\t\ttarget.querySelector('[name=\"q\"]').focus();\n\t\t} else {\n\t\t\t// re-focus opening control\n\t\t\tif (opening.length) {\n\t\t\t\topening.pop().focus();\n\t\t\t}\n\t\t}\n\t};\n\n\tfor (let i = 0, len = controls.length; i < len; i++) {\n\t\tnew Toggle(controls[i], { target, callback });\n\t}\n}\n\nexport { init };\nexport default { init };\n","const INTENT_ENTER = 300;\nconst INTENT_LEAVE = 400;\n\nconst expanded = [];\n\nfunction addEvents (parent, menu) {\n\tlet timeout;\n\n\tparent.addEventListener('mouseenter', () => {\n\t\tclearTimeout(timeout);\n\n\t\tif (isOpen(menu)) {\n\t\t\treturn;\n\t\t}\n\n\t\ttimeout = setTimeout(() => {\n\t\t\tif (expanded.length) {\n\t\t\t\thide(expanded[0]);\n\t\t\t\tshow(menu, false);\n\t\t\t} else {\n\t\t\t\tshow(menu, true);\n\t\t\t}\n\t\t}, INTENT_ENTER);\n\t});\n\n\n\tconst handleKeydown = (event) => {\n\t\tconst key = event.key || event.keyCode;\n\n\t\t// Internet Explorer 11 incorrectly maps the escape key to `Esc` instead of `Escape`\n\t\tif (key === 'Escape' || key === 'Esc' || key === 27) {\n\t\t\tif (isOpen(menu)) {\n\t\t\t\thide(menu);\n\t\t\t}\n\t\t}\n\t};\n\n\tdocument.addEventListener('keydown', handleKeydown);\n\n\tparent.addEventListener('mouseleave', () => {\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(() => isOpen(menu) && hide(menu), INTENT_LEAVE);\n\t});\n}\n\nfunction isOpen (menu) {\n\treturn expanded.indexOf(menu) !== -1;\n}\n\nfunction show (menu, animate) {\n\tif (animate) {\n\t\tmenu.classList.add('o-header__mega--animation');\n\t}\n\n\tmenu.setAttribute('aria-hidden', 'false');\n\tmenu.setAttribute('aria-expanded', 'true');\n\n\tmenu.dispatchEvent(new CustomEvent('oHeader.MegaMenuShow', { bubbles: true }));\n\n\texpanded.push(menu);\n}\n\nfunction hide (menu) {\n\tmenu.classList.remove('o-header__mega--animation');\n\tmenu.setAttribute('aria-hidden', 'true');\n\tmenu.setAttribute('aria-expanded', 'false');\n\n\tmenu.dispatchEvent(new CustomEvent('oHeader.MegaMenuHide', { bubbles: true }));\n\n\texpanded.splice(expanded.indexOf(menu), 1);\n}\n\nfunction init (headerEl) {\n\tconst menus = Array.from(headerEl.querySelectorAll('[data-o-header-mega]'));\n\tconst parents = menus.map(menu => menu.parentNode);\n\n\tmenus.forEach(menu => {\n\t\tmenu.setAttribute('aria-hidden', 'true');\n\t\tmenu.setAttribute('aria-expanded', 'false');\n\t});\n\n\tparents.forEach((parent, i) => addEvents(parent, menus[i]));\n}\n\nexport { init, show, hide };\nexport default { init, show, hide };\n","import Toggle from '@financial-times/o-toggle';\n\nconst LISTEN_DELAY = 300;\nconst INTENT_DELAY = 1000;\n\nfunction handleCloseEvents (scope, callback, allFocusable) {\n\tlet timeout;\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.keyCode === 27) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tconst handleClick = (e) => {\n\t\tif (!scope.contains(e.target)) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tconst handleMouseenter = () => {\n\t\tclearTimeout(timeout);\n\t};\n\n\tconst handleMouseleave = () => {\n\t\t// IE 11 mobile fires a mouseleave event when the search box gets focus. This means when the user tries\n\t\t// to use the search box, it disappears because the drawer closes.\n\t\t// Mouseout events should only occur when the drawer takes up less than 100% of the window, so we can ignore\n\t\t// any events triggered if the width of the drawer is equal to or bigger than the window.innerwidth\n\t\tif (window.innerWidth >= scope.offsetWidth) {\n\t\t\ttimeout = setTimeout(callback, INTENT_DELAY);\n\t\t}\n\t};\n\n\tconst handleFocus = (e) => {\n\t\tconst target = e.relatedTarget || e.target;\n\n\t\tif (!scope.contains(target)) {\n\t\t\tscope.focus();\n\t\t}\n\t};\n\n\tconst handleTab = (e) => {\n\t\tif (e.keyCode === 9) {\n\t\t\tconst firstEl = allFocusable[0];\n\t\t\tconst lastEl = allFocusable[allFocusable.length - 1];\n\n\t\t\t// Keep focus within the drawer when tabbing for a11y reasons.\n\t\t\tif (!e.shiftKey && e.target === lastEl) {\n\t\t\t\tfirstEl.focus();\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.shiftKey && e.target === firstEl) { // loop to the bottom when shift+tabbing.\n\t\t\t\tlastEl.focus();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst removeEvents = () => {\n\t\tclearTimeout(timeout);\n\n\t\tscope.removeEventListener('mouseenter', handleMouseenter);\n\t\tscope.removeEventListener('mouseleave', handleMouseleave);\n\t\tdocument.removeEventListener('click', handleClick);\n\t\tdocument.removeEventListener('touchstart', handleClick);\n\t\tdocument.removeEventListener('keydown', handleKeydown);\n\t\tdocument.removeEventListener('focusin', handleFocus);\n\t\tdocument.removeEventListener('focusout', handleFocus);\n\t\tscope.removeEventListener('keydown', handleTab);\n\t};\n\n\tconst addEvents = () => {\n\t\tscope.addEventListener('mouseenter', handleMouseenter);\n\t\tscope.addEventListener('mouseleave', handleMouseleave);\n\t\tdocument.addEventListener('click', handleClick);\n\t\tdocument.addEventListener('touchstart', handleClick);\n\t\tdocument.addEventListener('keydown', handleKeydown);\n\n\t\t// Firefox doesn't support focusin or focusout\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t\tdocument.addEventListener('focusin', handleFocus);\n\t\tdocument.addEventListener('focusout', handleFocus);\n\n\t\tscope.addEventListener('keydown', handleTab);\n\t};\n\n\treturn { addEvents, removeEvents, handleMouseleave };\n}\n\nfunction addDrawerToggles (drawerEl, allFocusable) {\n\tconst controls = Array.from(document.body.querySelectorAll(`[aria-controls=\"${drawerEl.id}\"]`));\n\n\tlet handleClose;\n\tlet openingControl;\n\n\tfunction toggleCallback (state, e) {\n\t\tif (state === 'close') {\n\t\t\ttoggleTabbing(drawerEl, false, allFocusable);\n\n\t\t\thandleClose.removeEvents();\n\n\t\t\topeningControl.focus();\n\t\t} else {\n\t\t\ttoggleTabbing(drawerEl, true, allFocusable);\n\n\t\t\t// don't capture the initial click or accidental double taps etc.\n\t\t\t// we could use transitionend but scoping is tricky and it needs prefixing and...\n\t\t\tsetTimeout(handleClose.addEvents, LISTEN_DELAY);\n\n\t\t\t// record the opening control so we can send focus back to it when closing the drawer\n\t\t\topeningControl = e.currentTarget;\n\n\t\t\t// aria-controls is only supported by JAWS.\n\t\t\t// In a setTimeout callback to avoid flickering transitions in Chrome (v54)\n\t\t\tsetTimeout(() => {\n\t\t\t\t// Don't focus on the drawer itself or iOS VoiceOver will miss it\n\t\t\t\t// Focus on the first focusable element\n\t\t\t\tconst firstFocusable = drawerEl.querySelector('a, button, input, select');\n\n\t\t\t\tif (firstFocusable) {\n\t\t\t\t\tfirstFocusable.focus();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrawerEl.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tdrawerEl.classList.toggle('o-header__drawer--closing', state === 'close');\n\t\tdrawerEl.classList.toggle('o-header__drawer--opening', state === 'open');\n\t}\n\n\tcontrols.forEach((control) => {\n\t\tconst drawerToggle = new Toggle(control, {\n\t\t\ttarget: drawerEl,\n\t\t\tcallback: toggleCallback\n\t\t});\n\n\t\t// Both toggles have the same target, so the toggle function will be the same\n\t\t// If there's a separate handleClose instance for each toggle, removeEvents doesn't work\n\t\t// when the close toggle is clicked\n\t\tif (!handleClose) {\n\t\t\thandleClose = handleCloseEvents(drawerEl, drawerToggle.toggle, allFocusable);\n\t\t}\n\t});\n\n\t// make the drawer programmatically focusable\n\tdrawerEl.tabIndex = -1;\n}\n\nfunction addSubmenuToggles (drawerEl) {\n\tconst submenus = drawerEl.querySelectorAll('[id^=\"o-header-drawer-child-\"]');\n\n\tArray.from(submenus).forEach(submenu => {\n\t\tconst button = drawerEl.querySelector(`[aria-controls=\"${submenu.id}\"]`);\n\n\t\tsubmenu.setAttribute('aria-hidden', 'true');\n\n\t\tnew Toggle(button, {\n\t\t\ttarget: submenu,\n\t\t\tcallback: (state) => {\n\t\t\t\tbutton.textContent = button.textContent.replace(/fewer|more/, state === 'open' ? 'fewer' : 'more');\n\t\t\t}\n\t\t});\n\t});\n}\n\n// This function is to solve accessibility issue\n// when o-header-drawer is closed => tabbing is disabled.\n// when o-header-drawer is open => tabbing is enabled.\nfunction toggleTabbing (drawerEl, isEnabled, allFocusable) {\n\tif (isEnabled) {\n\t\tallFocusable.forEach(el => {\n\t\t\tel.removeAttribute('tabindex');\n\t\t});\n\t} else {\n\t\tallFocusable.forEach(el => {\n\t\t\tel.setAttribute('tabindex', '-1');\n\t\t});\n\t}\n}\n\nfunction init () {\n\tconst drawerEl = document.body.querySelector('[data-o-header-drawer]');\n\tif (!drawerEl) {\n\t\treturn;\n\t}\n\tconst allFocusable = Array.from(drawerEl.querySelectorAll('a, button, input, select'));\n\ttoggleTabbing(drawerEl, false, allFocusable);\n\taddSubmenuToggles(drawerEl);\n\taddDrawerToggles(drawerEl, allFocusable);\n\n\t// Wrap in a timeout to stop page load stall in Chrome v73 on Android\n\t// toggleTabbing and the removal of the no-js attribute spikes the CPU\n\t// and causes the main process to block for around 10 seconds.\n\tsetTimeout(() => {\n\t\tdrawerEl.removeAttribute('data-o-header-drawer--no-js');\n\t\tdrawerEl.setAttribute('data-o-header-drawer--js', 'true');\n\t});\n}\n\nexport default { init, handleCloseEvents };\nexport { init, handleCloseEvents };\n","import * as oUtils from '@financial-times/o-utils';\n\nfunction init(headerEl) {\n\tconst subnav = headerEl.querySelector('[data-o-header-subnav]');\n\n\tif (subnav === null) {\n\t\treturn;\n\t}\n\n\tconst buttons = Array.from(subnav.getElementsByTagName('button'));\n\tconst wrapper = subnav.querySelector('[data-o-header-subnav-wrapper]');\n\n\tlet scrollWidth;\n\tconst wrapperWidth = wrapper.clientWidth;\n\n\tfunction checkCurrentPosition() {\n\t\tconst currentSelection = wrapper.querySelector('[aria-current]');\n\t\tif (currentSelection) {\n\t\t\tconst currentSelectionEnd = currentSelection.getBoundingClientRect().right;\n\n\t\t\t//if the current selection is wider than the end of the wrapper\n\t\t\tif (currentSelectionEnd > wrapperWidth) {\n\t\t\t\t// check by how much\n\t\t\t\tlet diff = currentSelectionEnd - wrapperWidth;\n\t\t\t\t// if the difference is greater than half of the wrapper, scroll to the end of the current selection.\n\t\t\t\tdiff = diff > wrapperWidth / 2 ? currentSelectionEnd : wrapperWidth / 2;\n\n\t\t\t\twrapper.scrollTo(diff, 0);\n\t\t\t}\n\t\t}\n\t\tscrollable();\n\t}\n\n\tfunction direction(button) {\n\t\treturn button.className.match(/left|right/).pop();\n\t}\n\n\tfunction scrollable() {\n\t\tscrollWidth = wrapper.scrollWidth;\n\n\t\tbuttons.forEach(button => {\n\t\t\tif (direction(button) === 'left') {\n\t\t\t\tbutton.disabled = wrapper.scrollLeft === 0;\n\t\t\t} else {\n\t\t\t\tconst remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n\t\t\t\t// Allow a little difference as scrollWidth is fast, not accurate.\n\t\t\t\tbutton.disabled = remaining <= 1;\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction scroll(e) {\n\t\tlet distance = 100;\n\n\t\tif (direction(e.currentTarget) === 'left') {\n\t\t\tdistance = (wrapper.scrollLeft > distance ? distance : wrapper.scrollLeft) * -1;\n\t\t} else {\n\t\t\tconst remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n\t\t\tdistance = remaining > distance ? distance : remaining;\n\t\t}\n\n\t\twrapper.scrollLeft = wrapper.scrollLeft + distance;\n\n\t\tscrollable();\n\t}\n\n\twrapper.addEventListener('scroll', oUtils.throttle(scrollable, 100));\n\twindow.addEventListener('oViewport.resize', scrollable);\n\n\tbuttons.forEach(button => {\n\t\tbutton.onclick = scroll;\n\t});\n\n\tcheckCurrentPosition();\n}\n\nexport { init };\nexport default { init };\n","import { debounce } from '@financial-times/o-utils';\n\nfunction init (headerEl) {\n\tif (!headerEl.hasAttribute('data-o-header--sticky')) {\n\t\treturn;\n\t}\n\n\tlet viewportOffset;\n\tlet lastScrollDepth;\n\tlet lastAnimationFrame;\n\tlet lastStickyState;\n\n\tfunction handleFrame () {\n\t\t// sticky el will appear when scrolled down from page top to\n\t\t// (arbitrarily) > half the viewport height\n\t\tconst scrollDepth = window.pageYOffset || window.scrollY;\n\t\tconst isActive = scrollDepth > viewportOffset;\n\n\t\theaderEl.classList.toggle('o-header--sticky-active', isActive);\n\n\t\tif (isActive !== lastStickyState) {\n\t\t\tlastStickyState = isActive;\n\t\t\theaderEl.dispatchEvent(new CustomEvent('oHeader.Sticky', { bubbles: true, detail: { isActive }}));\n\t\t}\n\n\t\t// allow a little wiggling room so we don't get too hasty toggling up/down state\n\t\tif (Math.abs(scrollDepth - lastScrollDepth) > 20) {\n\t\t\tconst isScrollingDown = lastScrollDepth < scrollDepth;\n\t\t\theaderEl.classList.toggle('o-header--sticky-scroll-down', isActive && isScrollingDown);\n\t\t\theaderEl.classList.toggle('o-header--sticky-scroll-up', isActive && !isScrollingDown);\n\t\t}\n\n\t\tlastScrollDepth = scrollDepth;\n\t}\n\n\tfunction startLoop () {\n\t\tviewportOffset = window.innerHeight / 2;\n\n\t\tlastAnimationFrame = window.requestAnimationFrame(() => {\n\t\t\thandleFrame();\n\t\t\tstartLoop();\n\t\t});\n\t}\n\n\tfunction stopLoop () {\n\t\tif (lastAnimationFrame) {\n\t\t\twindow.cancelAnimationFrame(lastAnimationFrame);\n\t\t}\n\t}\n\n\tfunction scrollStart () {\n\t\twindow.removeEventListener('scroll', scrollStart);\n\t\twindow.addEventListener('scroll', debouncedScrollEnd);\n\t\tstartLoop();\n\t}\n\n\tfunction scrollEnd () {\n\t\tstopLoop();\n\t\twindow.removeEventListener('scroll', debouncedScrollEnd);\n\t\twindow.addEventListener('scroll', scrollStart);\n\t}\n\n\tconst debouncedScrollEnd = debounce(scrollEnd, 300);\n\n\twindow.addEventListener('scroll', scrollStart);\n\n\thandleFrame();\n}\n\nexport { init };\nexport default { init };\n","import search from './search.js';\nimport mega from './mega.js';\nimport drawer from './drawer.js';\nimport subnav from './subnav.js';\nimport sticky from './sticky.js';\n\nclass Header {\n\n\tconstructor (headerEl) {\n\t\tif (!headerEl) {\n\t\t\theaderEl = document.querySelector('[data-o-component=\"o-header\"]');\n\t\t} else if (typeof headerEl === 'string') {\n\t\t\theaderEl = document.querySelector(headerEl);\n\t\t}\n\n\t\tif (headerEl.hasAttribute('data-o-header--js')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.headerEl = headerEl;\n\n\t\tsearch.init(this.headerEl);\n\t\tmega.init(this.headerEl);\n\t\tdrawer.init(this.headerEl);\n\t\tsubnav.init(this.headerEl);\n\t\tsticky.init(this.headerEl);\n\n\t\tthis.headerEl.removeAttribute('data-o-header--no-js');\n\t\tthis.headerEl.setAttribute('data-o-header--js', '');\n\t}\n\n\tstatic init (rootEl) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t}\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\t\tif (/\\bo-header\\b/.test(rootEl.getAttribute('data-o-component'))) {\n\t\t\treturn new Header(rootEl);\n\t\t}\n\n\t\treturn [].map.call(rootEl.querySelectorAll('[data-o-component=\"o-header\"]'), el => {\n\t\t\tif (!el.hasAttribute('data-o-header--js')) {\n\t\t\t\treturn new Header(el);\n\t\t\t}\n\t\t}).filter((header) => {\n\t\t\treturn header !== undefined;\n\t\t});\n\t}\n\n}\n\nexport default Header;\n","import Header from './src/js/header.js';\n\nconst constructAll = () => {\n\tHeader.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\n\nexport default Header;\n","import Toggle from '@financial-times/o-toggle';\nimport layout from './layout.js';\n\n\nconst COLLAPSIBLE_BREAKPOINTS = ['default', 'XS', 'S'];\n\nclass Footer {\n\n\tconstructor (footerEl) {\n\t\tif (!footerEl) {\n\t\t\tfooterEl = document.querySelector('[data-o-component=\"o-footer\"]');\n\t\t} else if (typeof footerEl === 'string') {\n\t\t\tfooterEl = document.querySelector(footerEl);\n\t\t}\n\n\t\tthis.footerEl = footerEl;\n\n\t\tlayout(breakpoint => {\n\t\t\tconst shouldCollapse = Footer.shouldCollapse(breakpoint);\n\n\t\t\tif (shouldCollapse && !this._toggles) {\n\t\t\t\treturn this.setup();\n\t\t\t}\n\n\t\t\tif (!shouldCollapse && this._toggles) {\n\t\t\t\treturn this.destroy();\n\t\t\t}\n\t\t});\n\n\t\tthis.footerEl.removeAttribute('data-o-footer--no-js');\n\t\tthis.footerEl.setAttribute('data-o-footer--js', '');\n\t}\n\n\tsetup () {\n\t\tthis._toggles = [];\n\n\t\tconst toggleEls = this.footerEl.querySelectorAll('[aria-controls]');\n\n\t\tArray.prototype.forEach.call(toggleEls, toggleEl => {\n\t\t\tconst target = document.getElementById(toggleEl.getAttribute('aria-controls'));\n\t\t\ttoggleEl.setAttribute('role', 'button');\n\t\t\ttoggleEl.setAttribute('tabindex', '0');\n\t\t\tthis._toggles.push(new Toggle(toggleEl, { target }));\n\t\t});\n\t}\n\n\tdestroy () {\n\t\tthis._toggles.forEach(toggle => toggle.destroy());\n\t\tthis._toggles = null;\n\t}\n\n\tstatic get collapsibleBreakpoints(){\n\t\treturn COLLAPSIBLE_BREAKPOINTS;\n\t}\n\n\tstatic shouldCollapse(breakpoint) {\n\t\treturn COLLAPSIBLE_BREAKPOINTS.indexOf(breakpoint) !== -1;\n\t}\n\n\tstatic init (rootEl) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (typeof rootEl === 'string') {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tconst footerEl = rootEl.querySelector('[data-o-component=\"o-footer\"]');\n\n\t\tif (footerEl) {\n\t\t\treturn new Footer(footerEl);\n\t\t}\n\t}\n}\n\nexport default Footer;\n","import oGrid from '@financial-times/o-grid';\nimport oViewport from '@financial-times/o-viewport';\n\nexport default function init (callback) {\n\toViewport.listenTo('resize');\n\n\tlet lastBreakpoint = oGrid.getCurrentLayout();\n\n\tdocument.body.addEventListener('oViewport.resize', () => {\n\t\tconst breakpoint = oGrid.getCurrentLayout();\n\n\t\tif (breakpoint !== lastBreakpoint) {\n\t\t\tcallback(breakpoint);\n\t\t\tlastBreakpoint = breakpoint;\n\t\t}\n\t});\n\n\tcallback(lastBreakpoint);\n}\n","import Footer from './src/js/footer.js';\n\nconst constructAll = () => {\n\tFooter.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\n\nexport default Footer;\n","import ftDateFormat from '@financial-times/ft-date-format';\n\nconst updateEventName = 'update';\nlet interval;\n\nfunction ftDateFormatWarning(methodName) {\n\t// eslint-disable-next-line no-console\n\tconsole.warn(`The o-date method \"${methodName}\" is deprecated. Use the \"ft-date-format\" package instead or contact the Origami team for help: https://github.com/Financial-Times/ft-date-format`);\n}\n\n/**\n * Initialise the o-date component.\n *\n * @param {HTMLElement | string} rootElement - The root element or CSS selector to initialise\n */\nclass ODate {\n\n\tconstructor(rootEl) {\n\n\t\tif (!rootEl) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('To initialise all o-date elements on the page use ' +\n\t\t\t\t'the `init` method. Passing no arguments to the constructor ' +\n\t\t\t\t'is deprecated.');\n\t\t}\n\n\t\tif (rootEl && !(rootEl instanceof HTMLElement)) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Using the constructor to initialise one or more ' +\n\t\t\t\t'o-date elements with a query selector is deprecated. ' +\n\t\t\t\t'Pass a single o-date HTMLElement to initialise or use the ' +\n\t\t\t\t'`init` method.');\n\t\t}\n\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tif (rootEl.getAttribute('data-o-component') === \"o-date\") {\n\t\t\tthis.el = rootEl;\n\t\t} else {\n\t\t\tthis.el = rootEl.querySelector('[data-o-component~=\"o-date\"]');\n\t\t}\n\n\t\tif (this.el) {\n\t\t\tdocument.body.addEventListener(updateEventName, this);\n\n\t\t\tthis.update();\n\t\t\tthis.el.setAttribute('data-o-date-js', '');\n\t\t}\n\n\t\tif (this.el && !interval) {\n\t\t\tinterval = setInterval(function () {\n\t\t\t\tdocument.body.dispatchEvent(new CustomEvent(updateEventName));\n\t\t\t}, 60000);\n\t\t}\n\t}\n\n\t// Use object-level event listener method so a new function doesn't need to be bound for each instance\n\thandleEvent(e) {\n\t\tif (e.type === updateEventName) {\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\t/**\n\t * Re-render the formatted date within the `time` element.\n\t *\n\t * @returns {undefined}\n\t */\n\tupdate() {\n\t\tconst el = this.el;\n\n\t\t// Find the date to render.\n\t\t// Use the current date if the `datetime` attribute is not set and\n\t\t// the o-date `time` element has no text content.\n\t\tconst dateTime = el.getAttribute('datetime');\n\t\tlet date = dateTime ? ftDateFormat.toDate(dateTime) : null;\n\t\tif (!date && this.el.textContent === '') {\n\t\t\tdate = new Date();\n\t\t}\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find elements to render formatted dates to.\n\t\t// @deprecated - The class `.o-date__printer` is deprecated.\n\t\t// `.o-date__printer` should be removed in the next major.\n\t\t// Use `[data-o-date-printer]` instead of `.o-date__printer`.\n\t\tlet printers = el.querySelectorAll('.o-date__printer,[data-o-date-printer]');\n\t\tprinters = printers.length ? printers : [el];\n\n\t\t// Render the found date in each printer element.\n\t\tfor (const printer of printers) {\n\t\t\tthis._renderDateFor(printer, date);\n\t\t}\n\n\t\t// If no printers result in output, e.g. because the,\n\t\t// format chosen does not output the time after x hours,\n\t\t// then hide the `time` element.\n\t\tif (el.textContent) {\n\t\t\tel.setAttribute('title', ftDateFormat.format(date, 'datetime'));\n\t\t\tel.removeAttribute('aria-hidden');\n\t\t} else {\n\t\t\tel.setAttribute('aria-hidden', true);\n\t\t}\n\t}\n\n\t/**\n\t * Remove o-date from the `time` element i.e. remove event\n\t * listeners and drop references to the element.\n\t *\n\t * @returns {undefined}\n\t */\n\tdestroy() {\n\t\tdocument.body.removeEventListener(updateEventName, this);\n\t\tthis.el = null;\n\t}\n\n\t/**\n\t * Initialise the o-date component.\n\t *\n\t * @param {HTMLElement | string} [el] - The root element or CSS selector to initialise\n\t * @returns {Array<ODate> | ODate} - An o-date instance or array of o-date instances.\n\t */\n\tstatic init (el) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t}\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\t/* If el's data-o-component has \\bo-date\\b in it, ie it is itself a date,\n\t\t return a new o-date */\n\t\tif (/\\bo-date\\b/.test(el.getAttribute('data-o-component'))) {\n\t\t\treturn new ODate(el);\n\t\t}\n\n\t\t// If el contains date components, return o-dates\n\t\tconst dateEls = el.querySelectorAll('[data-o-component~=\"o-date\"]');\n\t\treturn [].map.call(dateEls, function (el) {\n\t\t\treturn new ODate(el);\n\t\t});\n\t}\n\n\t/**\n\t * Render the date to the \"printer\" element in the requested format.\n\t *\n\t * @param {HTMLElement} printer - The element to render the date in\n\t * @param {Date} date - The date to format\n\t * @returns {undefined}\n\t */\n\t_renderDateFor(printer, date) {\n\t\t// Use the printer `data-o-date-format` if found or fallback to the\n\t\t// root element if not found.\n\t\tconst format = printer.getAttribute('data-o-date-format') ||\n\t\t\tthis.el.getAttribute('data-o-date-format');\n\n\t\tlet formattedDate;\n\n\t\tif (format === 'today-or-yesterday-or-nothing') {\n\t\t\tformattedDate = ftDateFormat.asTodayOrYesterdayOrNothing(date);\n\t\t} else if (format === 'date-only') {\n\t\t\tformattedDate = ftDateFormat.format(date, 'date');\n\t\t} else if (format === 'time-ago-limit-4-hours') {\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 4 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-limit-24-hours') {\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 24 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-abbreviated') {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('The o-date format \"time-ago-abbreviated\" is deprecated and the time is no longer abbreviated. Consider using \"time-ago-limit-4-hours\" instead.');\n\t\t\tformattedDate = ftDateFormat.timeAgo(date);\n\t\t} else if (format === 'time-ago-abbreviated-limit-4-hours') {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('The o-date format \"time-ago-abbreviated-limit-4-hours\" is deprecated and the time is no longer abbreviated. Use \"time-ago-limit-4-hours\" instead.');\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 4 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-no-seconds') {\n\t\t\tformattedDate = ftDateFormat.timeAgoNoSeconds(date);\n\t\t} else if (format !== null) {\n\t\t\tformattedDate = ftDateFormat.format(date, format);\n\t\t} else {\n\t\t\tformattedDate = ftDateFormat.ftTime(date);\n\t\t}\n\n\t\t// To avoid triggering a parent live region unnecessarily\n\t\t// <https://github.com/Financial-Times/o-date/pull/43>\n\t\tconst hasSingleTextNode = printer.childNodes.length === 1 &&\n\t\t\tprinter.firstChild &&\n\t\t\tprinter.firstChild.nodeType === 3;\n\n\t\tif (hasSingleTextNode) {\n\t\t\tprinter.firstChild.nodeValue = formattedDate;\n\t\t} else {\n\t\t\tprinter.innerHTML = formattedDate;\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic toDate() {\n\t\tftDateFormatWarning('toDate');\n\t\treturn ftDateFormat.toDate(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic format() {\n\t\tftDateFormatWarning('format');\n\t\treturn ftDateFormat.format(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic getSecondsBetween() {\n\t\tftDateFormatWarning('getSecondsBetween');\n\t\treturn ftDateFormat.getSecondsBetween(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic ftTime() {\n\t\tftDateFormatWarning('ftTime');\n\t\treturn ftDateFormat.ftTime(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isNearFuture() {\n\t\tftDateFormatWarning('isNearFuture');\n\t\treturn ftDateFormat.isNearFuture(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isFarFuture() {\n\t\tftDateFormatWarning('isFarFuture');\n\t\treturn ftDateFormat.isFarFuture(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isToday() {\n\t\tftDateFormatWarning('isToday');\n\t\treturn ftDateFormat.isToday(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isYesterday() {\n\t\tftDateFormatWarning('isYesterday');\n\t\treturn ftDateFormat.isYesterday(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic timeAgo() {\n\t\tftDateFormatWarning('timeAgo');\n\t\treturn ftDateFormat.timeAgo(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic asTodayOrYesterdayOrNothing() {\n\t\tftDateFormatWarning('asTodayOrYesterdayOrNothing');\n\t\treturn ftDateFormat.asTodayOrYesterdayOrNothing(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic timeAgoNoSeconds() {\n\t\tftDateFormatWarning('timeAgoNoSeconds');\n\t\treturn ftDateFormat.timeAgoNoSeconds(...arguments);\n\t}\n\n}\n\nexport default ODate;\n","import oDate from './src/js/date.js';\nconst constructAll = function () {\n\toDate.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\nexport default oDate;\n","import DomDelegate from 'ftdomdelegate';\n\n/**\n * The `oShare.open` open event fires when a social network share action is\n * triggered, to open a new window.\n *\n * @event \"oShare.open\"\n * @type {object}\n * @property {boolean} share - The o-share instance.\n * @property {boolean} action - The kind of share i.e. \"social\".\n * @property {boolean} url - The social share url opened.\n */\n\n/**\n * The `oShare.ready` fires when a o-share instance has been initialised.\n *\n * @event \"oShare.ready\"\n * @type {object}\n * @property {boolean} share - The initialised o-share instance.\n */\n\n/**\n * @class Share\n * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for an o-share component. You can pass an HTMLElement or a selector string\n * @param {object} config - Optional\n * @param {string} config.url - Optional, url to share\n * @param {string} config.title - Optional, title to be used in social network sharing\n * @param {string} config.titleExtra - Optional, extra bit to add to the title for some social networks\n * @param {string} config.summary - Optional, summary of the page that's being shared\n * @param {string} config.relatedTwitterAccounts - Optional, extra information for sharing on Twitter\n * @param {object[]} config.links - Optional, array of strings of supported social network names that you want rendered\n */\nfunction Share(rootEl, config) {\n\tconst oShare = this;\n\tconst openWindows = {};\n\n\t/**\n\t * Helper function to dispatch namespaced events, namespace defaults to oShare\n\t *\n\t * @param {string} eventName - event to dispatch\n\t * @param {object} data - the payload\n\t * @param {string} namespace - the namespace for the event\n\t * @returns {void}\n\t * @private\n\t */\n\tfunction dispatchCustomEvent(eventName, data = {}, namespace = 'oShare') {\n\t\toShare.rootEl.dispatchEvent(new CustomEvent(namespace + '.' + eventName, {\n\t\t\tdetail: data,\n\t\t\tbubbles: true\n\t\t}));\n\t}\n\n\t/**\n\t * Click event handler that checks the event target is an o-share action\n\t *\n\t * @param {Event} ev - The event to handle\n\t * @returns {undefined}\n\t * @private\n\t */\n\tfunction handleClick(ev) {\n\t\tconst actionEl = ev.target.closest('li.o-share__action');\n\n\t\tif (oShare.rootEl.contains(actionEl) && actionEl.querySelector('a[href]')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\n\t\t\tconst url = actionEl.querySelector('a[href]').href;\n\t\t\tconst shareLocation = oShare.rootEl.dataset.oShareLocation || '';\n\n\t\t\tdispatchCustomEvent('event', {\n\t\t\t\tcategory: 'share',\n\t\t\t\taction: 'click',\n\t\t\t\tbutton: actionEl.textContent.trim().toLowerCase(),\n\t\t\t\tlocation: shareLocation\n\t\t\t}, 'oTracking');\n\n\t\t\tshareSocial(url);\n\t\t}\n\t}\n\n\t/**\n\t * Event handler for social network actions. Opens up a new window for that social network and dispatched the 'oShare.open' event\n\t *\n\t * @private\n\t * @param {string} url - URL to be loaded in the new window\n\t * @returns {undefined}\n\t * @fires \"oShare.open\"\n\t */\n\tfunction shareSocial(url) {\n\t\tif (url) {\n\t\t\tif (openWindows[url] && !openWindows[url].closed) {\n\t\t\t\topenWindows[url].focus();\n\t\t\t} else {\n\t\t\t\topenWindows[url] = window.open(url, '', 'width=646,height=436');\n\t\t\t\topenWindows[url].opener = null;\n\t\t\t}\n\n\t\t\tdispatchCustomEvent('open', {\n\t\t\t\tshare: oShare,\n\t\t\t\taction: \"social\",\n\t\t\t\turl: url\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Renders the list of social networks in {@link config.links}\n\t *\n\t * @returns {void}\n\t * @private\n\t */\n\tfunction render() {\n\t\tnormaliseConfig();\n\t\tconst ulElement = document.createElement('ul');\n\t\tfor (let i = 0; i < config.links.length; i++) {\n\t\t\tconst liElement = document.createElement('li');\n\t\t\tconst spanElement = document.createElement('span');\n\t\t\tconst aElement = document.createElement('a');\n\n\t\t\tliElement.classList.add('o-share__action', `o-share__action--${config.links[i]}`);\n\n\t\t\tspanElement.classList.add('o-share__text');\n\t\t\tspanElement.innerText = generateDescriptiveLinkText(config, config.links[i]);\n\n\t\t\taElement.classList.add('o-share__icon', `o-share__icon--${config.links[i]}`);\n\t\t\taElement.href = generateSocialUrl(config, config.links[i]);\n\t\t\taElement.setAttribute('target', '_blank');\n\t\t\taElement.setAttribute('rel', 'noopener');\n\n\t\t\taElement.appendChild(spanElement);\n\t\t\tliElement.appendChild(aElement);\n\t\t\tulElement.appendChild(liElement);\n\t\t}\n\t\toShare.rootEl.appendChild(ulElement);\n\t}\n\n\t/**\n\t * Normalises any data in the configuration, converting relative URLs to ready-to-share\n\t * absolute versions\n\t *\n\t * @returns {undefined}\n\t * @private\n\t */\n\tfunction normaliseConfig() {\n\t\tconst link = document.createElement('a');\n\t\tlink.href = config.url;\n\t\tconfig.url = link.protocol + '//' + link.host + link.pathname + link.search + link.hash;\n\t}\n\n\t/**\n\t * Initialises the Share class, rendering the o-share element if it's empty with {@link config} options,\n\t * or from corresponding data attributes and sets up dom-delegates.\n\t * Dispatches 'oShare.ready' at the end\n\t *\n\t * @returns {undefined}\n\t * @fires \"oShare.ready\"\n\t */\n\tfunction init() {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tconst rootDelegate = new DomDelegate(rootEl);\n\t\trootDelegate.on('click', handleClick);\n\t\trootEl.setAttribute('data-o-share--js', '');\n\n\t\toShare.rootDomDelegate = rootDelegate;\n\t\toShare.rootEl = rootEl;\n\n\t\tif (rootEl.children.length === 0) {\n\t\t\tif (!config) {\n\t\t\t\tconfig = {};\n\t\t\t\tconfig.links = rootEl.hasAttribute('data-o-share-links') ?\n\t\t\t\t\trootEl.getAttribute('data-o-share-links').split(' ') : [];\n\t\t\t\tconfig.url = rootEl.getAttribute('data-o-share-url') || '';\n\t\t\t\tconfig.title = rootEl.getAttribute('data-o-share-title') || '';\n\t\t\t\tconfig.titleExtra = rootEl.getAttribute('data-o-share-titleExtra') || '';\n\t\t\t\tconfig.summary = rootEl.getAttribute('data-o-share-summary') || '';\n\t\t\t\tconfig.relatedTwitterAccounts = rootEl.getAttribute('data-o-share-relatedTwitterAccounts') || '';\n\t\t\t}\n\t\t\trender();\n\t\t}\n\n\t\tdispatchCustomEvent('ready', {\n\t\t\tshare: oShare\n\t\t});\n\t}\n\n\tinit();\n}\n\n/**\n * Destroys the Share instance, disables dom-delegates\n *\n * @returns {undefined}\n */\nShare.prototype.destroy = function () {\n\tthis.rootDomDelegate.destroy();\n\tthis.rootEl.textContent = '';\n\n\tthis.rootEl.removeAttribute('data-o-share--js');\n\tthis.rootEl = undefined;\n};\n\n/**\n * Initialises all o-share components inside the element passed as the first parameter\n *\n * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for o-share components. You can pass an HTMLElement or a selector string\n * @returns {Share|Share[]} - A Share or an array of Shares\n */\nShare.init = function (rootEl = document.body) {\n\tif (!(rootEl instanceof HTMLElement)) {\n\t\trootEl = document.querySelector(rootEl);\n\t}\n\tif (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-share]')) {\n\t\treturn new Share(rootEl);\n\t}\n\treturn Array.from(rootEl.querySelectorAll('[data-o-component=o-share]'), rootEl => new Share(rootEl));\n};\n\n\n/**\n * Transforms the default social urls\n *\n * @private\n * @param {object} config - Optional\n * @param {string} config.url - Optional, url to share\n * @param {string} config.title - Optional, title to be used in social network sharing\n * @param {string} config.titleExtra - Optional, extra bit to add to the title for some social networks\n * @param {string} config.summary - Optional, summary of the page that's being shared\n * @param {string} config.relatedTwitterAccounts - Optional, extra information for sharing on Twitter\n * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n * @returns {string} - the generated url\n */\nexport function generateSocialUrl(config, socialNetwork) {\n\tconst url = encodeURIComponent(config.url);\n\tconst title = encodeURIComponent(config.title);\n\tconst titleExtra = encodeURIComponent(config.titleExtra);\n\tconst summary = encodeURIComponent(config.summary);\n\tconst relatedTwitterAccounts = encodeURIComponent(config.relatedTwitterAccounts);\n\tconst socialUrls = {\n\t\ttwitter: `https://twitter.com/intent/tweet?url=${url}&text=${title}&related=${relatedTwitterAccounts}&via=FT`,\n\t\tfacebook: `http://www.facebook.com/sharer.php?u=${url}`,\n\t\tlinkedin: `http://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${title}+%7C+${titleExtra}&summary=${summary}&source=Financial+Times`,\n\t\tpinterest: `http://www.pinterest.com/pin/create/button/?url=${url}&description=${title}`,\n\t\twhatsapp: `whatsapp://send?text=${title}%20(${titleExtra})%20-%20${url}`,\n\t\tlink: url,\n\t\tenterpriseSharing: url,\n\t};\n\treturn socialUrls[socialNetwork];\n}\n\n\n/**\n * Transforms the descriptive text for social links\n *\n * @private\n * @param {object} config - Optional\n * @param {string} config.title - Optional, title to be used in social network sharing\n * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n * @returns {string} - A lovely URL\n */\nexport function generateDescriptiveLinkText (config, socialNetwork) {\n\tconst descriptiveLinkText = {\n\t\ttwitter: `Share ${config.title} on Twitter (opens a new window)`,\n\t\tfacebook: `Share ${config.title} on Facebook (opens a new window)`,\n\t\tlinkedin: `Share ${config.title} on LinkedIn (opens a new window)`,\n\t\tpinterest: `Share ${config.title} on Pinterest (opens a new window)`,\n\t\twhatsapp: `Share ${config.title} on Whatsapp (opens a new window)`,\n\t\tlink: `Open link in new window`,\n\t\tenterpriseSharing: `Share ${config.title} with your Enterprise Sharing tools (opens a new window)`,\n\t};\n\treturn descriptiveLinkText[socialNetwork];\n}\n\nexport default Share;\n","import Share from './src/js/share.js';\n\nconst constructAll = function() {\n\tShare.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\nif (typeof document !== 'undefined') {\n\tdocument.addEventListener('o.DOMContentLoaded', constructAll);\n}\n\nexport default Share;\n"],"sourceRoot":""}