{"version":3,"file":"static/chunks/64008-80c6844ff642e4e1.js","sources":["webpack://_N_E/./node_modules/earcut/src/earcut.js","webpack://_N_E/./node_modules/eventemitter3/index.js","webpack://_N_E/./node_modules/ismobilejs/esm/isMobile.js","webpack://_N_E/./node_modules/@pixi/app/lib/Application.mjs","webpack://_N_E/./node_modules/@pixi/app/lib/ResizePlugin.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/AssetExtension.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/BackgroundLoader.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/utils/checkExtension.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/utils/convertToList.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/cache/Cache.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/utils/isSingleItem.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/Loader.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/LoaderParser.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/utils/checkDataUrl.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/loadJson.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/loadTxt.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/loadWebFont.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/WorkerManager.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/textures/utils/createTexture.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/textures/loadTextures.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/loader/parsers/textures/loadSVG.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/utils/createStringVariations.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/resolver/Resolver.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/Assets.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/cache/parsers/cacheTextureArray.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/detections/parsers/detectAvif.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/detections/parsers/detectWebp.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/detections/parsers/detectDefaults.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/resolver/parsers/resolveTextureUrl.mjs","webpack://_N_E/./node_modules/@pixi/assets/lib/utils/copySearchParams.mjs","webpack://_N_E/./node_modules/colord/index.mjs","webpack://_N_E/./node_modules/@pixi/color/lib/Color.mjs","webpack://_N_E/./node_modules/colord/plugins/names.mjs","webpack://_N_E/./node_modules/@pixi/constants/lib/index.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/ViewableBuffer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/checkMaxIfStatementsInShader.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/state/State.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/autoDetectResource.mjs","webpack://_N_E/./node_modules/@pixi/runner/lib/Runner.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/Resource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/BufferResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/BaseTexture.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/BatchDrawCall.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/Buffer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/Attribute.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/utils/interleaveTypedArrays.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/Geometry.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/BatchGeometry.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/uniformParsers.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/generateUniformsSync.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/getTestContext.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/getMaxFragmentPrecision.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/mapSize.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/mapType.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/setPrecision.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/Program.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/defaultProgram2.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/defaultProgram.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/UniformGroup.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/Shader.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/BatchShaderGenerator.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/BatchTextureArray.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/ObjectRenderer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/BatchRenderer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/maxRecommendedTextures.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/canUploadSameBuffer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/texture2.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/texture.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/Filter.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/defaultFilter2.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/defaultFilter.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/background/BackgroundSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/batch/BatchSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/context/ContextSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/DepthResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/framebuffer/Framebuffer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/renderTexture/BaseRenderTexture.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/BaseImageResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/ImageResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/TextureUvs.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/Texture.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/renderTexture/RenderTexture.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/renderTexture/RenderTexturePool.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/utils/Quad.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/utils/QuadUv.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/FilterState.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/FilterSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/framebuffer/GLFramebuffer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/framebuffer/FramebufferSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/GeometrySystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/TextureMatrix.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/spriteMask/SpriteMaskFilter.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter3.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/filters/spriteMask/spriteMaskFilter2.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/mask/MaskData.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/mask/MaskSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/mask/AbstractMaskSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/mask/ScissorSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/mask/StencilSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/plugin/PluginSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/projection/ProjectionSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/renderTexture/GenerateTextureSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/renderTexture/RenderTextureSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/GLProgram.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/compileShader.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/defaultValue.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/logProgramError.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/generateProgram.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/getAttributeData.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/getUniformData.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/generateUniformBufferSync.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/utils/unsafeEvalSupported.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/shader/ShaderSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/startup/StartupSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/state/StateSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/state/utils/mapWebGLBlendModesToPixi.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/system/SystemManager.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/TextureGCSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/GLTexture.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/TextureSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/utils/mapTypeAndFormatToInternalFormat.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/transformFeedback/TransformFeedbackSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/view/ViewSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/settings.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/autoDetectRenderer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/fragments/index.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/fragments/default.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/fragments/defaultFilter.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/framebuffer/MultisampleSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/GLBuffer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/geometry/BufferSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/render/ObjectRendererSystem.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/Renderer.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/AbstractMultiResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/CanvasResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/CubeResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/ImageBitmapResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/SVGResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/VideoResource.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/index.mjs","webpack://_N_E/./node_modules/@pixi/core/lib/textures/resources/ArrayResource.mjs","webpack://_N_E/./node_modules/@pixi/display/lib/Bounds.mjs","webpack://_N_E/./node_modules/@pixi/display/lib/DisplayObject.mjs","webpack://_N_E/./node_modules/@pixi/display/lib/Container.mjs","webpack://_N_E/./node_modules/@pixi/display/lib/settings.mjs","webpack://_N_E/./node_modules/@pixi/extensions/lib/index.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/buildCircle.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/buildPoly.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/buildRectangle.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/buildRoundedRectangle.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/const.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/ArcUtils.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/BezierUtils.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/buildLine.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/QuadraticUtils.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/index.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/GraphicsData.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/utils/BatchPart.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/GraphicsGeometry.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/styles/FillStyle.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/styles/LineStyle.mjs","webpack://_N_E/./node_modules/@pixi/graphics/lib/Graphics.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/const.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/Point.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/shapes/Rectangle.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/shapes/Circle.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/shapes/Ellipse.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/shapes/Polygon.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/shapes/RoundedRectangle.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/Matrix.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/groupD8.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/ObservablePoint.mjs","webpack://_N_E/./node_modules/@pixi/math/lib/Transform.mjs","webpack://_N_E/./node_modules/@pixi/mesh-extras/lib/geometry/PlaneGeometry.mjs","webpack://_N_E/./node_modules/@pixi/mesh-extras/lib/geometry/RopeGeometry.mjs","webpack://_N_E/./node_modules/@pixi/mesh-extras/lib/SimplePlane.mjs","webpack://_N_E/./node_modules/@pixi/mesh-extras/lib/NineSlicePlane.mjs","webpack://_N_E/./node_modules/@pixi/mesh-extras/lib/SimpleMesh.mjs","webpack://_N_E/./node_modules/@pixi/mesh-extras/lib/SimpleRope.mjs","webpack://_N_E/./node_modules/@pixi/mesh/lib/MeshBatchUvs.mjs","webpack://_N_E/./node_modules/@pixi/mesh/lib/Mesh.mjs","webpack://_N_E/./node_modules/@pixi/mesh/lib/MeshGeometry.mjs","webpack://_N_E/./node_modules/@pixi/mesh/lib/MeshMaterial.mjs","webpack://_N_E/./node_modules/@pixi/mesh/lib/shader/mesh2.mjs","webpack://_N_E/./node_modules/@pixi/mesh/lib/shader/mesh.mjs","webpack://_N_E/./node_modules/@pixi/particle-container/lib/ParticleContainer.mjs","webpack://_N_E/./node_modules/@pixi/particle-container/lib/ParticleBuffer.mjs","webpack://_N_E/./node_modules/@pixi/particle-container/lib/ParticleRenderer.mjs","webpack://_N_E/./node_modules/@pixi/particle-container/lib/particles2.mjs","webpack://_N_E/./node_modules/@pixi/particle-container/lib/particles.mjs","webpack://_N_E/./node_modules/@pixi/prepare/lib/CountLimiter.mjs","webpack://_N_E/./node_modules/@pixi/prepare/lib/BasePrepare.mjs","webpack://_N_E/./node_modules/@pixi/prepare/lib/settings.mjs","webpack://_N_E/./node_modules/@pixi/prepare/lib/Prepare.mjs","webpack://_N_E/./node_modules/@pixi/settings/lib/adapter.mjs","webpack://_N_E/./node_modules/@pixi/settings/lib/settings.mjs","webpack://_N_E/./node_modules/@pixi/settings/lib/utils/isMobile.mjs","webpack://_N_E/./node_modules/@pixi/sprite-animated/lib/AnimatedSprite.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/TilingSprite.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/sprite-tiling.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/sprite-tiling-fallback2.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/TilingSpriteRenderer.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/sprite-tiling-simple.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/sprite-tiling2.mjs","webpack://_N_E/./node_modules/@pixi/sprite-tiling/lib/sprite-tiling-fallback.mjs","webpack://_N_E/./node_modules/@pixi/sprite/lib/Sprite.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/BitmapFontData.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/formats/TextFormat.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/formats/XMLFormat.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/formats/XMLStringFormat.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/formats/index.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/utils/drawGlyph.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/utils/generateFillStyle.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/utils/splitTextToCharacters.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/utils/extractCharCode.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/BitmapFont.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/utils/resolveCharacters.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/BitmapText.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/shader/msdf2.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/shader/msdf.mjs","webpack://_N_E/./node_modules/@pixi/text-bitmap/lib/loadBitmapFont.mjs","webpack://_N_E/./node_modules/@pixi/text/lib/const.mjs","webpack://_N_E/./node_modules/@pixi/text/lib/TextMetrics.mjs","webpack://_N_E/./node_modules/@pixi/text/lib/TextStyle.mjs","webpack://_N_E/./node_modules/@pixi/text/lib/Text.mjs","webpack://_N_E/./node_modules/@pixi/ticker/lib/const.mjs","webpack://_N_E/./node_modules/@pixi/ticker/lib/TickerListener.mjs","webpack://_N_E/./node_modules/@pixi/ticker/lib/Ticker.mjs","webpack://_N_E/./node_modules/@pixi/ticker/lib/settings.mjs","webpack://_N_E/./node_modules/@pixi/ticker/lib/TickerPlugin.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/settings.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/url.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/path.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/logging/deprecation.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/browser/hello.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/browser/isWebGLSupported.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/color/hex.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/color/premultiply.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/const.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/createIndicesForQuads.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/getBufferType.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/interleaveTypedArrays.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/pow2.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/removeItems.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/sign.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/data/uid.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/media/BoundingBox.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/media/caches.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/media/CanvasRenderTarget.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/media/getCanvasBoundingBox.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/media/trimCanvas.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/network/decomposeDataUri.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/network/determineCrossOrigin.mjs","webpack://_N_E/./node_modules/@pixi/utils/lib/network/getResolutionOfUrl.mjs","webpack://_N_E/./node_modules/@pixi/mixin-cache-as-bitmap/lib/index.mjs","webpack://_N_E/./node_modules/@pixi/mixin-get-child-by-name/lib/index.mjs","webpack://_N_E/./node_modules/@pixi/mixin-get-global-position/lib/index.mjs","webpack://_N_E/./node_modules/@pixi/filter-alpha/lib/AlphaFilter.mjs","webpack://_N_E/./node_modules/@pixi/filter-alpha/lib/alpha.mjs","webpack://_N_E/./node_modules/@pixi/filter-blur/lib/generateBlurFragSource.mjs","webpack://_N_E/./node_modules/@pixi/filter-blur/lib/BlurFilterPass.mjs","webpack://_N_E/./node_modules/@pixi/filter-blur/lib/generateBlurVertSource.mjs","webpack://_N_E/./node_modules/@pixi/filter-blur/lib/BlurFilter.mjs","webpack://_N_E/./node_modules/@pixi/filter-color-matrix/lib/ColorMatrixFilter.mjs","webpack://_N_E/./node_modules/@pixi/filter-color-matrix/lib/colorMatrix.mjs","webpack://_N_E/./node_modules/@pixi/filter-displacement/lib/DisplacementFilter.mjs","webpack://_N_E/./node_modules/@pixi/filter-displacement/lib/displacement2.mjs","webpack://_N_E/./node_modules/@pixi/filter-displacement/lib/displacement.mjs","webpack://_N_E/./node_modules/@pixi/filter-fxaa/lib/FXAAFilter.mjs","webpack://_N_E/./node_modules/@pixi/filter-fxaa/lib/fxaa2.mjs","webpack://_N_E/./node_modules/@pixi/filter-fxaa/lib/fxaa.mjs","webpack://_N_E/./node_modules/@pixi/filter-noise/lib/NoiseFilter.mjs","webpack://_N_E/./node_modules/@pixi/filter-noise/lib/noise.mjs","webpack://_N_E/./node_modules/pixi.js/lib/filters.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/EventTicker.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/FederatedEvent.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/FederatedMouseEvent.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/FederatedPointerEvent.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/FederatedWheelEvent.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/EventBoundary.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/EventSystem.mjs","webpack://_N_E/./node_modules/@pixi/events/lib/FederatedEventTarget.mjs","webpack://_N_E/./node_modules/@pixi/accessibility/lib/AccessibilityManager.mjs","webpack://_N_E/./node_modules/@pixi/accessibility/lib/accessibleTarget.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/const.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/loaders/detectCompressedTextures.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/resources/BlobResource.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/resources/CompressedTextureResource.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/parsers/parseDDS.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/parsers/parseKTX.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/loaders/loadDDS.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/loaders/loadKTX.mjs","webpack://_N_E/./node_modules/@pixi/compressed-textures/lib/loaders/resolveCompressedTextureUrl.mjs","webpack://_N_E/./node_modules/@pixi/extract/lib/Extract.mjs","webpack://_N_E/./node_modules/@pixi/spritesheet/lib/Spritesheet.mjs","webpack://_N_E/./node_modules/@pixi/spritesheet/lib/spritesheetAsset.mjs","webpack://_N_E/./node_modules/@pixi/text-html/lib/HTMLTextStyle.mjs","webpack://_N_E/./node_modules/@pixi/text-html/lib/HTMLText.mjs"],"sourceRoot":"","sourcesContent":["'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\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 var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\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 if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\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 var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\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 // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return 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\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\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 var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\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 var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nexport default function isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","import { autoDetectRenderer, extensions, ExtensionType } from '@pixi/core';\nimport { Container } from '@pixi/display';\n\nconst _Application = class {\n constructor(options) {\n this.stage = new Container();\n options = Object.assign({\n forceCanvas: false\n }, options);\n this.renderer = autoDetectRenderer(options);\n _Application._plugins.forEach((plugin) => {\n plugin.init.call(this, options);\n });\n }\n render() {\n this.renderer.render(this.stage);\n }\n get view() {\n return this.renderer.view;\n }\n get screen() {\n return this.renderer.screen;\n }\n destroy(removeView, stageOptions) {\n const plugins = _Application._plugins.slice(0);\n plugins.reverse();\n plugins.forEach((plugin) => {\n plugin.destroy.call(this);\n });\n this.stage.destroy(stageOptions);\n this.stage = null;\n this.renderer.destroy(removeView);\n this.renderer = null;\n }\n};\nlet Application = _Application;\nApplication._plugins = [];\nextensions.handleByList(ExtensionType.Application, Application._plugins);\n\nexport { Application };\n//# sourceMappingURL=Application.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nclass ResizePlugin {\n static init(options) {\n Object.defineProperty(this, \"resizeTo\", {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n });\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this.cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this.cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this.cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this.cancelResize();\n this.cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\nResizePlugin.extension = ExtensionType.Application;\nextensions.add(ResizePlugin);\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nconst assetKeyMap = {\n loader: ExtensionType.LoadParser,\n resolver: ExtensionType.ResolveParser,\n cache: ExtensionType.CacheParser,\n detection: ExtensionType.DetectionParser\n};\nextensions.handle(ExtensionType.Asset, (extension) => {\n const ref = extension.ref;\n Object.entries(assetKeyMap).filter(([key]) => !!ref[key]).forEach(([key, type]) => extensions.add(Object.assign(ref[key], { extension: ref[key].extension ?? type })));\n}, (extension) => {\n const ref = extension.ref;\n Object.keys(assetKeyMap).filter((key) => !!ref[key]).forEach((key) => extensions.remove(ref[key]));\n});\n//# sourceMappingURL=AssetExtension.mjs.map\n","class BackgroundLoader {\n constructor(loader, verbose = false) {\n this._loader = loader;\n this._assetList = [];\n this._isLoading = false;\n this._maxConcurrent = 1;\n this.verbose = verbose;\n }\n add(assetUrls) {\n assetUrls.forEach((a) => {\n this._assetList.push(a);\n });\n if (this.verbose)\n console.log(\"[BackgroundLoader] assets: \", this._assetList);\n if (this._isActive && !this._isLoading) {\n this._next();\n }\n }\n async _next() {\n if (this._assetList.length && this._isActive) {\n this._isLoading = true;\n const toLoad = [];\n const toLoadAmount = Math.min(this._assetList.length, this._maxConcurrent);\n for (let i = 0; i < toLoadAmount; i++) {\n toLoad.push(this._assetList.pop());\n }\n await this._loader.load(toLoad);\n this._isLoading = false;\n this._next();\n }\n }\n get active() {\n return this._isActive;\n }\n set active(value) {\n if (this._isActive === value)\n return;\n this._isActive = value;\n if (value && !this._isLoading) {\n this._next();\n }\n }\n}\n\nexport { BackgroundLoader };\n//# sourceMappingURL=BackgroundLoader.mjs.map\n","import { utils } from '@pixi/core';\n\nfunction checkExtension(url, extension) {\n const tempURL = url.split(\"?\")[0];\n const ext = utils.path.extname(tempURL).toLowerCase();\n if (Array.isArray(extension)) {\n return extension.includes(ext);\n }\n return ext === extension;\n}\n\nexport { checkExtension };\n//# sourceMappingURL=checkExtension.mjs.map\n","const convertToList = (input, transform) => {\n if (!Array.isArray(input)) {\n input = [input];\n }\n if (!transform) {\n return input;\n }\n return input.map((item) => {\n if (typeof item === \"string\") {\n return transform(item);\n }\n return item;\n });\n};\n\nexport { convertToList };\n//# sourceMappingURL=convertToList.mjs.map\n","import { Texture, BaseTexture } from '@pixi/core';\nimport '../utils/index.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\nclass CacheClass {\n constructor() {\n this._parsers = [];\n this._cache = /* @__PURE__ */ new Map();\n this._cacheMap = /* @__PURE__ */ new Map();\n }\n reset() {\n this._cacheMap.clear();\n this._cache.clear();\n }\n has(key) {\n return this._cache.has(key);\n }\n get(key) {\n const result = this._cache.get(key);\n if (!result) {\n console.warn(`[Assets] Asset id ${key} was not found in the Cache`);\n }\n return result;\n }\n set(key, value) {\n const keys = convertToList(key);\n let cacheableAssets;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser = this.parsers[i];\n if (parser.test(value)) {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n break;\n }\n }\n if (!cacheableAssets) {\n cacheableAssets = {};\n keys.forEach((key2) => {\n cacheableAssets[key2] = value;\n });\n }\n const cacheKeys = Object.keys(cacheableAssets);\n const cachedAssets = {\n cacheKeys,\n keys\n };\n keys.forEach((key2) => {\n this._cacheMap.set(key2, cachedAssets);\n });\n cacheKeys.forEach((key2) => {\n if (this._cache.has(key2) && this._cache.get(key2) !== value) {\n console.warn(\"[Cache] already has key:\", key2);\n }\n this._cache.set(key2, cacheableAssets[key2]);\n });\n if (value instanceof Texture) {\n const texture = value;\n keys.forEach((key2) => {\n if (texture.baseTexture !== Texture.EMPTY.baseTexture) {\n BaseTexture.addToCache(texture.baseTexture, key2);\n }\n Texture.addToCache(texture, key2);\n });\n }\n }\n remove(key) {\n this._cacheMap.get(key);\n if (!this._cacheMap.has(key)) {\n console.warn(`[Assets] Asset id ${key} was not found in the Cache`);\n return;\n }\n const cacheMap = this._cacheMap.get(key);\n const cacheKeys = cacheMap.cacheKeys;\n cacheKeys.forEach((key2) => {\n this._cache.delete(key2);\n });\n cacheMap.keys.forEach((key2) => {\n this._cacheMap.delete(key2);\n });\n }\n get parsers() {\n return this._parsers;\n }\n}\nconst Cache = new CacheClass();\n\nexport { Cache };\n//# sourceMappingURL=Cache.mjs.map\n","const isSingleItem = (item) => !Array.isArray(item);\n\nexport { isSingleItem };\n//# sourceMappingURL=isSingleItem.mjs.map\n","import { utils } from '@pixi/core';\nimport '../utils/index.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\nimport { convertToList } from '../utils/convertToList.mjs';\n\nclass Loader {\n constructor() {\n this._parsers = [];\n this._parsersValidated = false;\n this.parsers = new Proxy(this._parsers, {\n set: (target, key, value) => {\n this._parsersValidated = false;\n target[key] = value;\n return true;\n }\n });\n this.promiseCache = {};\n }\n reset() {\n this._parsersValidated = false;\n this.promiseCache = {};\n }\n _getLoadPromiseAndParser(url, data) {\n const result = {\n promise: null,\n parser: null\n };\n result.promise = (async () => {\n let asset = null;\n let parser = null;\n if (data.loadParser) {\n parser = this._parserHash[data.loadParser];\n if (!parser) {\n console.warn(`[Assets] specified load parser \"${data.loadParser}\" not found while loading ${url}`);\n }\n }\n if (!parser) {\n for (let i = 0; i < this.parsers.length; i++) {\n const parserX = this.parsers[i];\n if (parserX.load && parserX.test?.(url, data, this)) {\n parser = parserX;\n break;\n }\n }\n if (!parser) {\n console.warn(`[Assets] ${url} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`);\n return null;\n }\n }\n asset = await parser.load(url, data, this);\n result.parser = parser;\n for (let i = 0; i < this.parsers.length; i++) {\n const parser2 = this.parsers[i];\n if (parser2.parse) {\n if (parser2.parse && await parser2.testParse?.(asset, data, this)) {\n asset = await parser2.parse(asset, data, this) || asset;\n result.parser = parser2;\n }\n }\n }\n return asset;\n })();\n return result;\n }\n async load(assetsToLoadIn, onProgress) {\n if (!this._parsersValidated) {\n this._validateParsers();\n }\n let count = 0;\n const assets = {};\n const singleAsset = isSingleItem(assetsToLoadIn);\n const assetsToLoad = convertToList(assetsToLoadIn, (item) => ({\n src: item\n }));\n const total = assetsToLoad.length;\n const promises = assetsToLoad.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n if (!assets[asset.src]) {\n try {\n if (!this.promiseCache[url]) {\n this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset);\n }\n assets[asset.src] = await this.promiseCache[url].promise;\n if (onProgress)\n onProgress(++count / total);\n } catch (e) {\n delete this.promiseCache[url];\n delete assets[asset.src];\n throw new Error(`[Loader.load] Failed to load ${url}.\n${e}`);\n }\n }\n });\n await Promise.all(promises);\n return singleAsset ? assets[assetsToLoad[0].src] : assets;\n }\n async unload(assetsToUnloadIn) {\n const assetsToUnload = convertToList(assetsToUnloadIn, (item) => ({\n src: item\n }));\n const promises = assetsToUnload.map(async (asset) => {\n const url = utils.path.toAbsolute(asset.src);\n const loadPromise = this.promiseCache[url];\n if (loadPromise) {\n const loadedAsset = await loadPromise.promise;\n loadPromise.parser?.unload?.(loadedAsset, asset, this);\n delete this.promiseCache[url];\n }\n });\n await Promise.all(promises);\n }\n _validateParsers() {\n this._parsersValidated = true;\n this._parserHash = this._parsers.filter((parser) => parser.name).reduce((hash, parser) => {\n if (hash[parser.name]) {\n console.warn(`[Assets] loadParser name conflict \"${parser.name}\"`);\n }\n return { ...hash, [parser.name]: parser };\n }, {});\n }\n}\n\nexport { Loader };\n//# sourceMappingURL=Loader.mjs.map\n","var LoaderParserPriority = /* @__PURE__ */ ((LoaderParserPriority2) => {\n LoaderParserPriority2[LoaderParserPriority2[\"Low\"] = 0] = \"Low\";\n LoaderParserPriority2[LoaderParserPriority2[\"Normal\"] = 1] = \"Normal\";\n LoaderParserPriority2[LoaderParserPriority2[\"High\"] = 2] = \"High\";\n return LoaderParserPriority2;\n})(LoaderParserPriority || {});\n\nexport { LoaderParserPriority };\n//# sourceMappingURL=LoaderParser.mjs.map\n","function checkDataUrl(url, mimes) {\n if (Array.isArray(mimes)) {\n for (const mime of mimes) {\n if (url.startsWith(`data:${mime}`))\n return true;\n }\n return false;\n }\n return url.startsWith(`data:${mimes}`);\n}\n\nexport { checkDataUrl };\n//# sourceMappingURL=checkDataUrl.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\nimport { checkDataUrl } from '../../utils/checkDataUrl.mjs';\nimport { checkExtension } from '../../utils/checkExtension.mjs';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst validJSONExtension = \".json\";\nconst validJSONMIME = \"application/json\";\nconst loadJson = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n name: \"loadJson\",\n test(url) {\n return checkDataUrl(url, validJSONMIME) || checkExtension(url, validJSONExtension);\n },\n async load(url) {\n const response = await settings.ADAPTER.fetch(url);\n const json = await response.json();\n return json;\n }\n};\nextensions.add(loadJson);\n\nexport { loadJson };\n//# sourceMappingURL=loadJson.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\nimport { checkDataUrl } from '../../utils/checkDataUrl.mjs';\nimport { checkExtension } from '../../utils/checkExtension.mjs';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst validTXTExtension = \".txt\";\nconst validTXTMIME = \"text/plain\";\nconst loadTxt = {\n name: \"loadTxt\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n test(url) {\n return checkDataUrl(url, validTXTMIME) || checkExtension(url, validTXTExtension);\n },\n async load(url) {\n const response = await settings.ADAPTER.fetch(url);\n const txt = await response.text();\n return txt;\n }\n};\nextensions.add(loadTxt);\n\nexport { loadTxt };\n//# sourceMappingURL=loadTxt.mjs.map\n","import { utils, ExtensionType, settings, extensions } from '@pixi/core';\nimport { checkDataUrl } from '../../utils/checkDataUrl.mjs';\nimport { checkExtension } from '../../utils/checkExtension.mjs';\nimport { LoaderParserPriority } from './LoaderParser.mjs';\n\nconst validWeights = [\n \"normal\",\n \"bold\",\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\"\n];\nconst validFontExtensions = [\".ttf\", \".otf\", \".woff\", \".woff2\"];\nconst validFontMIMEs = [\n \"font/ttf\",\n \"font/otf\",\n \"font/woff\",\n \"font/woff2\"\n];\nconst CSS_IDENT_TOKEN_REGEX = /^(--|-?[A-Z_])[0-9A-Z_-]*$/i;\nfunction getFontFamilyName(url) {\n const ext = utils.path.extname(url);\n const name = utils.path.basename(url, ext);\n const nameWithSpaces = name.replace(/(-|_)/g, \" \");\n const nameTokens = nameWithSpaces.toLowerCase().split(\" \").map((word) => word.charAt(0).toUpperCase() + word.slice(1));\n let valid = nameTokens.length > 0;\n for (const token of nameTokens) {\n if (!token.match(CSS_IDENT_TOKEN_REGEX)) {\n valid = false;\n break;\n }\n }\n let fontFamilyName = nameTokens.join(\" \");\n if (!valid) {\n fontFamilyName = `\"${fontFamilyName.replace(/[\\\\\"]/g, \"\\\\$&\")}\"`;\n }\n return fontFamilyName;\n}\nconst loadWebFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low\n },\n name: \"loadWebFont\",\n test(url) {\n return checkDataUrl(url, validFontMIMEs) || checkExtension(url, validFontExtensions);\n },\n async load(url, options) {\n const fonts = settings.ADAPTER.getFontFaceSet();\n if (fonts) {\n const fontFaces = [];\n const name = options.data?.family ?? getFontFamilyName(url);\n const weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? [\"normal\"];\n const data = options.data ?? {};\n for (let i = 0; i < weights.length; i++) {\n const weight = weights[i];\n const font = new FontFace(name, `url(${encodeURI(url)})`, {\n ...data,\n weight\n });\n await font.load();\n fonts.add(font);\n fontFaces.push(font);\n }\n return fontFaces.length === 1 ? fontFaces[0] : fontFaces;\n }\n console.warn(\"[loadWebFont] FontFace API is not supported. Skipping loading font\");\n return null;\n },\n unload(font) {\n (Array.isArray(font) ? font : [font]).forEach((t) => settings.ADAPTER.getFontFaceSet().delete(t));\n }\n};\nextensions.add(loadWebFont);\n\nexport { getFontFamilyName, loadWebFont };\n//# sourceMappingURL=loadWebFont.mjs.map\n","let UUID = 0;\nlet MAX_WORKERS;\nconst WHITE_PNG = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=\";\nconst checkImageBitmapCode = {\n id: \"checkImageBitmap\",\n code: `\n async function checkImageBitmap()\n {\n try\n {\n if (typeof createImageBitmap !== 'function') return false;\n\n const response = await fetch('${WHITE_PNG}');\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n }\n catch (e)\n {\n return false;\n }\n }\n checkImageBitmap().then((result) => { self.postMessage(result); });\n `\n};\nconst workerCode = {\n id: \"loadImageBitmap\",\n code: `\n async function loadImageBitmap(url)\n {\n const response = await fetch(url);\n\n if (!response.ok)\n {\n throw new Error(\\`[WorkerManager.loadImageBitmap] Failed to fetch \\${url}: \\`\n + \\`\\${response.status} \\${response.statusText}\\`);\n }\n\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap;\n }\n self.onmessage = async (event) =>\n {\n try\n {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id,\n }, [imageBitmap]);\n }\n catch(e)\n {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id,\n });\n }\n };`\n};\nlet workerURL;\nclass WorkerManagerClass {\n constructor() {\n this._initialized = false;\n this._createdWorkers = 0;\n this.workerPool = [];\n this.queue = [];\n this.resolveHash = {};\n }\n isImageBitmapSupported() {\n if (this._isImageBitmapSupported !== void 0)\n return this._isImageBitmapSupported;\n this._isImageBitmapSupported = new Promise((resolve) => {\n const workerURL2 = URL.createObjectURL(new Blob([checkImageBitmapCode.code], { type: \"application/javascript\" }));\n const worker = new Worker(workerURL2);\n worker.addEventListener(\"message\", (event) => {\n worker.terminate();\n URL.revokeObjectURL(workerURL2);\n resolve(event.data);\n });\n });\n return this._isImageBitmapSupported;\n }\n loadImageBitmap(src) {\n return this._run(\"loadImageBitmap\", [src]);\n }\n async _initWorkers() {\n if (this._initialized)\n return;\n this._initialized = true;\n }\n getWorker() {\n if (MAX_WORKERS === void 0) {\n MAX_WORKERS = navigator.hardwareConcurrency || 4;\n }\n let worker = this.workerPool.pop();\n if (!worker && this._createdWorkers < MAX_WORKERS) {\n if (!workerURL) {\n workerURL = URL.createObjectURL(new Blob([workerCode.code], { type: \"application/javascript\" }));\n }\n this._createdWorkers++;\n worker = new Worker(workerURL);\n worker.addEventListener(\"message\", (event) => {\n this.complete(event.data);\n this.returnWorker(event.target);\n this.next();\n });\n }\n return worker;\n }\n returnWorker(worker) {\n this.workerPool.push(worker);\n }\n complete(data) {\n if (data.error !== void 0) {\n this.resolveHash[data.uuid].reject(data.error);\n } else {\n this.resolveHash[data.uuid].resolve(data.data);\n }\n this.resolveHash[data.uuid] = null;\n }\n async _run(id, args) {\n await this._initWorkers();\n const promise = new Promise((resolve, reject) => {\n this.queue.push({ id, arguments: args, resolve, reject });\n });\n this.next();\n return promise;\n }\n next() {\n if (!this.queue.length)\n return;\n const worker = this.getWorker();\n if (!worker) {\n return;\n }\n const toDo = this.queue.pop();\n const id = toDo.id;\n this.resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject };\n worker.postMessage({\n data: toDo.arguments,\n uuid: UUID++,\n id\n });\n }\n}\nconst WorkerManager = new WorkerManagerClass();\n\nexport { WorkerManager };\n//# sourceMappingURL=WorkerManager.mjs.map\n","import { Texture } from '@pixi/core';\n\nfunction createTexture(base, loader, url) {\n const texture = new Texture(base);\n texture.baseTexture.on(\"dispose\", () => {\n delete loader.promiseCache[url];\n });\n return texture;\n}\n\nexport { createTexture };\n//# sourceMappingURL=createTexture.mjs.map\n","import { settings, ExtensionType, BaseTexture, utils, extensions } from '@pixi/core';\nimport { checkDataUrl } from '../../../utils/checkDataUrl.mjs';\nimport { checkExtension } from '../../../utils/checkExtension.mjs';\nimport { LoaderParserPriority } from '../LoaderParser.mjs';\nimport { WorkerManager } from '../WorkerManager.mjs';\nimport { createTexture } from './utils/createTexture.mjs';\n\nconst validImageExtensions = [\".jpeg\", \".jpg\", \".png\", \".webp\", \".avif\"];\nconst validImageMIMEs = [\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\",\n \"image/avif\"\n];\nasync function loadImageBitmap(url) {\n const response = await settings.ADAPTER.fetch(url);\n if (!response.ok) {\n throw new Error(`[loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n }\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap;\n}\nconst loadTextures = {\n name: \"loadTextures\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n config: {\n preferWorkers: true,\n preferCreateImageBitmap: true,\n crossOrigin: \"anonymous\"\n },\n test(url) {\n return checkDataUrl(url, validImageMIMEs) || checkExtension(url, validImageExtensions);\n },\n async load(url, asset, loader) {\n let src = null;\n if (globalThis.createImageBitmap && this.config.preferCreateImageBitmap) {\n if (this.config.preferWorkers && await WorkerManager.isImageBitmapSupported()) {\n src = await WorkerManager.loadImageBitmap(url);\n } else {\n src = await loadImageBitmap(url);\n }\n } else {\n src = await new Promise((resolve) => {\n src = new Image();\n src.crossOrigin = this.config.crossOrigin;\n src.src = url;\n if (src.complete) {\n resolve(src);\n } else {\n src.onload = () => {\n resolve(src);\n };\n }\n });\n }\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n base.resource.src = url;\n return createTexture(base, loader, url);\n },\n unload(texture) {\n texture.destroy(true);\n }\n};\nextensions.add(loadTextures);\n\nexport { loadImageBitmap, loadTextures };\n//# sourceMappingURL=loadTextures.mjs.map\n","import { ExtensionType, SVGResource, BaseTexture, utils, settings, extensions } from '@pixi/core';\nimport { checkDataUrl } from '../../../utils/checkDataUrl.mjs';\nimport { checkExtension } from '../../../utils/checkExtension.mjs';\nimport { LoaderParserPriority } from '../LoaderParser.mjs';\nimport { loadTextures } from './loadTextures.mjs';\nimport { createTexture } from './utils/createTexture.mjs';\n\nconst validSVGExtension = \".svg\";\nconst validSVGMIME = \"image/svg+xml\";\nconst loadSVG = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n name: \"loadSVG\",\n test(url) {\n return checkDataUrl(url, validSVGMIME) || checkExtension(url, validSVGExtension);\n },\n async testParse(data) {\n return SVGResource.test(data);\n },\n async parse(asset, data, loader) {\n const src = new SVGResource(asset, data?.data?.resourceOptions);\n await src.load();\n const base = new BaseTexture(src, {\n resolution: utils.getResolutionOfUrl(asset),\n ...data?.data\n });\n base.resource.src = asset;\n const texture = createTexture(base, loader, asset);\n return texture;\n },\n async load(url, _options) {\n const response = await settings.ADAPTER.fetch(url);\n return response.text();\n },\n unload: loadTextures.unload\n};\nextensions.add(loadSVG);\n\nexport { loadSVG };\n//# sourceMappingURL=loadSVG.mjs.map\n","function processX(base, ids, depth, result, tags) {\n const id = ids[depth];\n for (let i = 0; i < id.length; i++) {\n const value = id[i];\n if (depth < ids.length - 1) {\n processX(base.replace(result[depth], value), ids, depth + 1, result, tags);\n } else {\n tags.push(base.replace(result[depth], value));\n }\n }\n}\nfunction createStringVariations(string) {\n const regex = /\\{(.*?)\\}/g;\n const result = string.match(regex);\n const tags = [];\n if (result) {\n const ids = [];\n result.forEach((vars) => {\n const split = vars.substring(1, vars.length - 1).split(\",\");\n ids.push(split);\n });\n processX(string, ids, 0, result, tags);\n } else {\n tags.push(string);\n }\n return tags;\n}\n\nexport { createStringVariations };\n//# sourceMappingURL=createStringVariations.mjs.map\n","import { utils } from '@pixi/core';\nimport { convertToList } from '../utils/convertToList.mjs';\nimport { createStringVariations } from '../utils/createStringVariations.mjs';\nimport { isSingleItem } from '../utils/isSingleItem.mjs';\n\nclass Resolver {\n constructor() {\n this._defaultBundleIdentifierOptions = {\n connector: \"-\",\n createBundleAssetId: (bundleId, assetId) => `${bundleId}${this._bundleIdConnector}${assetId}`,\n extractAssetIdFromBundle: (bundleId, assetBundleId) => assetBundleId.replace(`${bundleId}${this._bundleIdConnector}`, \"\")\n };\n this._bundleIdConnector = this._defaultBundleIdentifierOptions.connector;\n this._createBundleAssetId = this._defaultBundleIdentifierOptions.createBundleAssetId;\n this._extractAssetIdFromBundle = this._defaultBundleIdentifierOptions.extractAssetIdFromBundle;\n this._assetMap = {};\n this._preferredOrder = [];\n this._parsers = [];\n this._resolverHash = {};\n this._bundles = {};\n }\n setBundleIdentifier(bundleIdentifier) {\n this._bundleIdConnector = bundleIdentifier.connector ?? this._bundleIdConnector;\n this._createBundleAssetId = bundleIdentifier.createBundleAssetId ?? this._createBundleAssetId;\n this._extractAssetIdFromBundle = bundleIdentifier.extractAssetIdFromBundle ?? this._extractAssetIdFromBundle;\n if (this._extractAssetIdFromBundle(\"foo\", this._createBundleAssetId(\"foo\", \"bar\")) !== \"bar\") {\n throw new Error(\"[Resolver] GenerateBundleAssetId are not working correctly\");\n }\n }\n prefer(...preferOrders) {\n preferOrders.forEach((prefer) => {\n this._preferredOrder.push(prefer);\n if (!prefer.priority) {\n prefer.priority = Object.keys(prefer.params);\n }\n });\n this._resolverHash = {};\n }\n set basePath(basePath) {\n this._basePath = basePath;\n }\n get basePath() {\n return this._basePath;\n }\n set rootPath(rootPath) {\n this._rootPath = rootPath;\n }\n get rootPath() {\n return this._rootPath;\n }\n get parsers() {\n return this._parsers;\n }\n reset() {\n this.setBundleIdentifier(this._defaultBundleIdentifierOptions);\n this._assetMap = {};\n this._preferredOrder = [];\n this._resolverHash = {};\n this._rootPath = null;\n this._basePath = null;\n this._manifest = null;\n this._bundles = {};\n this._defaultSearchParams = null;\n }\n setDefaultSearchParams(searchParams) {\n if (typeof searchParams === \"string\") {\n this._defaultSearchParams = searchParams;\n } else {\n const queryValues = searchParams;\n this._defaultSearchParams = Object.keys(queryValues).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(queryValues[key])}`).join(\"&\");\n }\n }\n addManifest(manifest) {\n if (this._manifest) {\n console.warn(\"[Resolver] Manifest already exists, this will be overwritten\");\n }\n this._manifest = manifest;\n manifest.bundles.forEach((bundle) => {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n addBundle(bundleId, assets) {\n const assetNames = [];\n if (Array.isArray(assets)) {\n assets.forEach((asset) => {\n if (typeof asset.name === \"string\") {\n const bundleAssetId = this._createBundleAssetId(bundleId, asset.name);\n assetNames.push(bundleAssetId);\n this.add([asset.name, bundleAssetId], asset.srcs, asset.data);\n } else {\n const bundleIds = asset.name.map((name) => this._createBundleAssetId(bundleId, name));\n bundleIds.forEach((bundleId2) => {\n assetNames.push(bundleId2);\n });\n this.add([...asset.name, ...bundleIds], asset.srcs);\n }\n });\n } else {\n Object.keys(assets).forEach((key) => {\n assetNames.push(this._createBundleAssetId(bundleId, key));\n this.add([key, this._createBundleAssetId(bundleId, key)], assets[key]);\n });\n }\n this._bundles[bundleId] = assetNames;\n }\n add(keysIn, assetsIn, data) {\n const keys = convertToList(keysIn);\n keys.forEach((key) => {\n if (this.hasKey(key)) {\n console.warn(`[Resolver] already has key: ${key} overwriting`);\n }\n });\n if (!Array.isArray(assetsIn)) {\n if (typeof assetsIn === \"string\") {\n assetsIn = createStringVariations(assetsIn);\n } else {\n assetsIn = [assetsIn];\n }\n }\n const assetMap = assetsIn.map((asset) => {\n let formattedAsset = asset;\n if (typeof asset === \"string\") {\n let parsed = false;\n for (let i = 0; i < this._parsers.length; i++) {\n const parser = this._parsers[i];\n if (parser.test(asset)) {\n formattedAsset = parser.parse(asset);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n formattedAsset = {\n src: asset\n };\n }\n }\n if (!formattedAsset.format) {\n formattedAsset.format = formattedAsset.src.split(\".\").pop();\n }\n if (!formattedAsset.alias) {\n formattedAsset.alias = keys;\n }\n if (this._basePath || this._rootPath) {\n formattedAsset.src = utils.path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath);\n }\n formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src);\n formattedAsset.data = formattedAsset.data ?? data;\n return formattedAsset;\n });\n keys.forEach((key) => {\n this._assetMap[key] = assetMap;\n });\n }\n resolveBundle(bundleIds) {\n const singleAsset = isSingleItem(bundleIds);\n bundleIds = convertToList(bundleIds);\n const out = {};\n bundleIds.forEach((bundleId) => {\n const assetNames = this._bundles[bundleId];\n if (assetNames) {\n const results = this.resolve(assetNames);\n const assets = {};\n for (const key in results) {\n const asset = results[key];\n assets[this._extractAssetIdFromBundle(bundleId, key)] = asset;\n }\n out[bundleId] = assets;\n }\n });\n return singleAsset ? out[bundleIds[0]] : out;\n }\n resolveUrl(key) {\n const result = this.resolve(key);\n if (typeof key !== \"string\") {\n const out = {};\n for (const i in result) {\n out[i] = result[i].src;\n }\n return out;\n }\n return result.src;\n }\n resolve(keys) {\n const singleAsset = isSingleItem(keys);\n keys = convertToList(keys);\n const result = {};\n keys.forEach((key) => {\n if (!this._resolverHash[key]) {\n if (this._assetMap[key]) {\n let assets = this._assetMap[key];\n const preferredOrder = this._getPreferredOrder(assets);\n const bestAsset = assets[0];\n preferredOrder?.priority.forEach((priorityKey) => {\n preferredOrder.params[priorityKey].forEach((value) => {\n const filteredAssets = assets.filter((asset) => {\n if (asset[priorityKey]) {\n return asset[priorityKey] === value;\n }\n return false;\n });\n if (filteredAssets.length) {\n assets = filteredAssets;\n }\n });\n });\n this._resolverHash[key] = assets[0] ?? bestAsset;\n } else {\n let src = key;\n if (this._basePath || this._rootPath) {\n src = utils.path.toAbsolute(src, this._basePath, this._rootPath);\n }\n src = this._appendDefaultSearchParams(src);\n this._resolverHash[key] = {\n src\n };\n }\n }\n result[key] = this._resolverHash[key];\n });\n return singleAsset ? result[keys[0]] : result;\n }\n hasKey(key) {\n return !!this._assetMap[key];\n }\n hasBundle(key) {\n return !!this._bundles[key];\n }\n _getPreferredOrder(assets) {\n for (let i = 0; i < assets.length; i++) {\n const asset = assets[0];\n const preferred = this._preferredOrder.find((preference) => preference.params.format.includes(asset.format));\n if (preferred) {\n return preferred;\n }\n }\n return this._preferredOrder[0];\n }\n _appendDefaultSearchParams(url) {\n if (!this._defaultSearchParams)\n return url;\n const paramConnector = /\\?/.test(url) ? \"&\" : \"?\";\n return `${url}${paramConnector}${this._defaultSearchParams}`;\n }\n}\n\nexport { Resolver };\n//# sourceMappingURL=Resolver.mjs.map\n","import { utils, extensions, ExtensionType } from '@pixi/core';\nimport { BackgroundLoader } from './BackgroundLoader.mjs';\nimport { Cache } from './cache/Cache.mjs';\nimport { Loader } from './loader/Loader.mjs';\nimport './loader/parsers/index.mjs';\nimport { Resolver } from './resolver/Resolver.mjs';\nimport { convertToList } from './utils/convertToList.mjs';\nimport { isSingleItem } from './utils/isSingleItem.mjs';\nimport { loadTextures } from './loader/parsers/textures/loadTextures.mjs';\n\nclass AssetsClass {\n constructor() {\n this._detections = [];\n this._initialized = false;\n this.resolver = new Resolver();\n this.loader = new Loader();\n this.cache = Cache;\n this._backgroundLoader = new BackgroundLoader(this.loader);\n this._backgroundLoader.active = true;\n this.reset();\n }\n async init(options = {}) {\n if (this._initialized) {\n console.warn(\"[Assets]AssetManager already initialized, did you load before calling this Asset.init()?\");\n return;\n }\n this._initialized = true;\n if (options.defaultSearchParams) {\n this.resolver.setDefaultSearchParams(options.defaultSearchParams);\n }\n if (options.basePath) {\n this.resolver.basePath = options.basePath;\n }\n if (options.bundleIdentifier) {\n this.resolver.setBundleIdentifier(options.bundleIdentifier);\n }\n if (options.manifest) {\n let manifest = options.manifest;\n if (typeof manifest === \"string\") {\n manifest = await this.load(manifest);\n }\n this.resolver.addManifest(manifest);\n }\n const resolutionPref = options.texturePreference?.resolution ?? 1;\n const resolution = typeof resolutionPref === \"number\" ? [resolutionPref] : resolutionPref;\n let formats = [];\n if (options.texturePreference?.format) {\n const formatPref = options.texturePreference?.format;\n formats = typeof formatPref === \"string\" ? [formatPref] : formatPref;\n for (const detection of this._detections) {\n if (!await detection.test()) {\n formats = await detection.remove(formats);\n }\n }\n } else {\n for (const detection of this._detections) {\n if (await detection.test()) {\n formats = await detection.add(formats);\n }\n }\n }\n this.resolver.prefer({\n params: {\n format: formats,\n resolution\n }\n });\n if (options.preferences) {\n this.setPreferences(options.preferences);\n }\n }\n add(keysIn, assetsIn, data) {\n this.resolver.add(keysIn, assetsIn, data);\n }\n async load(urls, onProgress) {\n if (!this._initialized) {\n await this.init();\n }\n const singleAsset = isSingleItem(urls);\n const urlArray = convertToList(urls).map((url) => {\n if (typeof url !== \"string\") {\n this.resolver.add(url.src, url);\n return url.src;\n }\n if (!this.resolver.hasKey(url)) {\n this.resolver.add(url, url);\n }\n return url;\n });\n const resolveResults = this.resolver.resolve(urlArray);\n const out = await this._mapLoadToResolve(resolveResults, onProgress);\n return singleAsset ? out[urlArray[0]] : out;\n }\n addBundle(bundleId, assets) {\n this.resolver.addBundle(bundleId, assets);\n }\n async loadBundle(bundleIds, onProgress) {\n if (!this._initialized) {\n await this.init();\n }\n let singleAsset = false;\n if (typeof bundleIds === \"string\") {\n singleAsset = true;\n bundleIds = [bundleIds];\n }\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n const out = {};\n const keys = Object.keys(resolveResults);\n let count = 0;\n let total = 0;\n const _onProgress = () => {\n onProgress?.(++count / total);\n };\n const promises = keys.map((bundleId) => {\n const resolveResult = resolveResults[bundleId];\n total += Object.keys(resolveResult).length;\n return this._mapLoadToResolve(resolveResult, _onProgress).then((resolveResult2) => {\n out[bundleId] = resolveResult2;\n });\n });\n await Promise.all(promises);\n return singleAsset ? out[bundleIds[0]] : out;\n }\n async backgroundLoad(urls) {\n if (!this._initialized) {\n await this.init();\n }\n if (typeof urls === \"string\") {\n urls = [urls];\n }\n const resolveResults = this.resolver.resolve(urls);\n this._backgroundLoader.add(Object.values(resolveResults));\n }\n async backgroundLoadBundle(bundleIds) {\n if (!this._initialized) {\n await this.init();\n }\n if (typeof bundleIds === \"string\") {\n bundleIds = [bundleIds];\n }\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n Object.values(resolveResults).forEach((resolveResult) => {\n this._backgroundLoader.add(Object.values(resolveResult));\n });\n }\n reset() {\n this.resolver.reset();\n this.loader.reset();\n this.cache.reset();\n this._initialized = false;\n }\n get(keys) {\n if (typeof keys === \"string\") {\n return Cache.get(keys);\n }\n const assets = {};\n for (let i = 0; i < keys.length; i++) {\n assets[i] = Cache.get(keys[i]);\n }\n return assets;\n }\n async _mapLoadToResolve(resolveResults, onProgress) {\n const resolveArray = Object.values(resolveResults);\n const resolveKeys = Object.keys(resolveResults);\n this._backgroundLoader.active = false;\n const loadedAssets = await this.loader.load(resolveArray, onProgress);\n this._backgroundLoader.active = true;\n const out = {};\n resolveArray.forEach((resolveResult, i) => {\n const asset = loadedAssets[resolveResult.src];\n const keys = [resolveResult.src];\n if (resolveResult.alias) {\n keys.push(...resolveResult.alias);\n }\n out[resolveKeys[i]] = asset;\n Cache.set(keys, asset);\n });\n return out;\n }\n async unload(urls) {\n if (!this._initialized) {\n await this.init();\n }\n const urlArray = convertToList(urls).map((url) => typeof url !== \"string\" ? url.src : url);\n const resolveResults = this.resolver.resolve(urlArray);\n await this._unloadFromResolved(resolveResults);\n }\n async unloadBundle(bundleIds) {\n if (!this._initialized) {\n await this.init();\n }\n bundleIds = convertToList(bundleIds);\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n const promises = Object.keys(resolveResults).map((bundleId) => this._unloadFromResolved(resolveResults[bundleId]));\n await Promise.all(promises);\n }\n async _unloadFromResolved(resolveResult) {\n const resolveArray = Object.values(resolveResult);\n resolveArray.forEach((resolveResult2) => {\n Cache.remove(resolveResult2.src);\n });\n await this.loader.unload(resolveArray);\n }\n get detections() {\n return this._detections;\n }\n get preferWorkers() {\n return loadTextures.config.preferWorkers;\n }\n set preferWorkers(value) {\n utils.deprecation(\"7.2.0\", \"Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead.\");\n this.setPreferences({ preferWorkers: value });\n }\n setPreferences(preferences) {\n this.loader.parsers.forEach((parser) => {\n if (!parser.config)\n return;\n Object.keys(parser.config).filter((key) => key in preferences).forEach((key) => {\n parser.config[key] = preferences[key];\n });\n });\n }\n}\nconst Assets = new AssetsClass();\nextensions.handleByList(ExtensionType.LoadParser, Assets.loader.parsers).handleByList(ExtensionType.ResolveParser, Assets.resolver.parsers).handleByList(ExtensionType.CacheParser, Assets.cache.parsers).handleByList(ExtensionType.DetectionParser, Assets.detections);\n\nexport { Assets, AssetsClass };\n//# sourceMappingURL=Assets.mjs.map\n","import { ExtensionType, Texture, extensions } from '@pixi/core';\n\nconst cacheTextureArray = {\n extension: ExtensionType.CacheParser,\n test: (asset) => Array.isArray(asset) && asset.every((t) => t instanceof Texture),\n getCacheableAssets: (keys, asset) => {\n const out = {};\n keys.forEach((key) => {\n asset.forEach((item, i) => {\n out[key + (i === 0 ? \"\" : i + 1)] = item;\n });\n });\n return out;\n }\n};\nextensions.add(cacheTextureArray);\n\nexport { cacheTextureArray };\n//# sourceMappingURL=cacheTextureArray.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst detectAvif = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 1\n },\n test: async () => {\n if (!globalThis.createImageBitmap)\n return false;\n const avifData = \"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=\";\n const blob = await settings.ADAPTER.fetch(avifData).then((r) => r.blob());\n return createImageBitmap(blob).then(() => true, () => false);\n },\n add: async (formats) => [...formats, \"avif\"],\n remove: async (formats) => formats.filter((f) => f !== \"avif\")\n};\nextensions.add(detectAvif);\n\nexport { detectAvif };\n//# sourceMappingURL=detectAvif.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst detectWebp = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0\n },\n test: async () => {\n if (!globalThis.createImageBitmap)\n return false;\n const webpData = \"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=\";\n const blob = await settings.ADAPTER.fetch(webpData).then((r) => r.blob());\n return createImageBitmap(blob).then(() => true, () => false);\n },\n add: async (formats) => [...formats, \"webp\"],\n remove: async (formats) => formats.filter((f) => f !== \"webp\")\n};\nextensions.add(detectWebp);\n\nexport { detectWebp };\n//# sourceMappingURL=detectWebp.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\n\nconst imageFormats = [\"png\", \"jpg\", \"jpeg\"];\nconst detectDefaults = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: -1\n },\n test: () => Promise.resolve(true),\n add: async (formats) => [...formats, ...imageFormats],\n remove: async (formats) => formats.filter((f) => !imageFormats.includes(f))\n};\nextensions.add(detectDefaults);\n\nexport { detectDefaults };\n//# sourceMappingURL=detectDefaults.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\nimport '../../loader/index.mjs';\nimport { loadTextures } from '../../loader/parsers/textures/loadTextures.mjs';\n\nconst resolveTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: loadTextures.test,\n parse: (value) => ({\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: value.split(\".\").pop(),\n src: value\n })\n};\nextensions.add(resolveTextureUrl);\n\nexport { resolveTextureUrl };\n//# sourceMappingURL=resolveTextureUrl.mjs.map\n","const copySearchParams = (targetUrl, sourceUrl) => {\n const searchParams = sourceUrl.split(\"?\")[1];\n if (searchParams) {\n targetUrl += `?${searchParams}`;\n }\n return targetUrl;\n};\n\nexport { copySearchParams };\n//# sourceMappingURL=copySearchParams.mjs.map\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","import { extend, colord } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\nextend([namesPlugin]);\nconst _Color = class {\n constructor(value = 16777215) {\n this._value = null;\n this._components = new Float32Array(4);\n this._components.fill(1);\n this._int = 16777215;\n this.value = value;\n }\n get red() {\n return this._components[0];\n }\n get green() {\n return this._components[1];\n }\n get blue() {\n return this._components[2];\n }\n get alpha() {\n return this._components[3];\n }\n setValue(value) {\n this.value = value;\n return this;\n }\n set value(value) {\n if (value instanceof _Color) {\n this._value = this.cloneSource(value._value);\n this._int = value._int;\n this._components.set(value._components);\n } else if (value === null) {\n throw new Error(\"Cannot set PIXI.Color#value to null\");\n } else if (this._value === null || !this.isSourceEqual(this._value, value)) {\n this.normalize(value);\n this._value = this.cloneSource(value);\n }\n }\n get value() {\n return this._value;\n }\n cloneSource(value) {\n if (typeof value === \"string\" || typeof value === \"number\" || value instanceof Number || value === null) {\n return value;\n } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return value.slice(0);\n } else if (typeof value === \"object\" && value !== null) {\n return { ...value };\n }\n return value;\n }\n isSourceEqual(value1, value2) {\n const type1 = typeof value1;\n const type2 = typeof value2;\n if (type1 !== type2) {\n return false;\n } else if (type1 === \"number\" || type1 === \"string\" || value1 instanceof Number) {\n return value1 === value2;\n } else if (Array.isArray(value1) && Array.isArray(value2) || ArrayBuffer.isView(value1) && ArrayBuffer.isView(value2)) {\n if (value1.length !== value2.length) {\n return false;\n }\n return value1.every((v, i) => v === value2[i]);\n } else if (value1 !== null && value2 !== null) {\n const keys1 = Object.keys(value1);\n const keys2 = Object.keys(value2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keys1.every((key) => value1[key] === value2[key]);\n }\n return value1 === value2;\n }\n toRgba() {\n const [r, g, b, a] = this._components;\n return { r, g, b, a };\n }\n toRgb() {\n const [r, g, b] = this._components;\n return { r, g, b };\n }\n toRgbaString() {\n const [r, g, b] = this.toUint8RgbArray();\n return `rgba(${r},${g},${b},${this.alpha})`;\n }\n toUint8RgbArray(out) {\n const [r, g, b] = this._components;\n out = out ?? [];\n out[0] = Math.round(r * 255);\n out[1] = Math.round(g * 255);\n out[2] = Math.round(b * 255);\n return out;\n }\n toRgbArray(out) {\n out = out ?? [];\n const [r, g, b] = this._components;\n out[0] = r;\n out[1] = g;\n out[2] = b;\n return out;\n }\n toNumber() {\n return this._int;\n }\n toLittleEndianNumber() {\n const value = this._int;\n return (value >> 16) + (value & 65280) + ((value & 255) << 16);\n }\n multiply(value) {\n const [r, g, b, a] = _Color.temp.setValue(value)._components;\n this._components[0] *= r;\n this._components[1] *= g;\n this._components[2] *= b;\n this._components[3] *= a;\n this.refreshInt();\n this._value = null;\n return this;\n }\n premultiply(alpha, applyToRGB = true) {\n if (applyToRGB) {\n this._components[0] *= alpha;\n this._components[1] *= alpha;\n this._components[2] *= alpha;\n }\n this._components[3] = alpha;\n this.refreshInt();\n this._value = null;\n return this;\n }\n toPremultiplied(alpha, applyToRGB = true) {\n if (alpha === 1) {\n return (255 << 24) + this._int;\n }\n if (alpha === 0) {\n return applyToRGB ? 0 : this._int;\n }\n let r = this._int >> 16 & 255;\n let g = this._int >> 8 & 255;\n let b = this._int & 255;\n if (applyToRGB) {\n r = r * alpha + 0.5 | 0;\n g = g * alpha + 0.5 | 0;\n b = b * alpha + 0.5 | 0;\n }\n return (alpha * 255 << 24) + (r << 16) + (g << 8) + b;\n }\n toHex() {\n const hexString = this._int.toString(16);\n return `#${\"000000\".substring(0, 6 - hexString.length) + hexString}`;\n }\n toHexa() {\n const alphaValue = Math.round(this._components[3] * 255);\n const alphaString = alphaValue.toString(16);\n return this.toHex() + \"00\".substring(0, 2 - alphaString.length) + alphaString;\n }\n setAlpha(alpha) {\n this._components[3] = this._clamp(alpha);\n return this;\n }\n round(steps) {\n const [r, g, b] = this._components;\n this._components[0] = Math.round(r * steps) / steps;\n this._components[1] = Math.round(g * steps) / steps;\n this._components[2] = Math.round(b * steps) / steps;\n this.refreshInt();\n this._value = null;\n return this;\n }\n toArray(out) {\n out = out ?? [];\n const [r, g, b, a] = this._components;\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n }\n normalize(value) {\n let r;\n let g;\n let b;\n let a;\n if ((typeof value === \"number\" || value instanceof Number) && value >= 0 && value <= 16777215) {\n const int = value;\n r = (int >> 16 & 255) / 255;\n g = (int >> 8 & 255) / 255;\n b = (int & 255) / 255;\n a = 1;\n } else if ((Array.isArray(value) || value instanceof Float32Array) && value.length >= 3 && value.length <= 4) {\n value = this._clamp(value);\n [r, g, b, a = 1] = value;\n } else if ((value instanceof Uint8Array || value instanceof Uint8ClampedArray) && value.length >= 3 && value.length <= 4) {\n value = this._clamp(value, 0, 255);\n [r, g, b, a = 255] = value;\n r /= 255;\n g /= 255;\n b /= 255;\n a /= 255;\n } else if (typeof value === \"string\" || typeof value === \"object\") {\n if (typeof value === \"string\") {\n const match = _Color.HEX_PATTERN.exec(value);\n if (match) {\n value = `#${match[2]}`;\n }\n }\n const color = colord(value);\n if (color.isValid()) {\n ({ r, g, b, a } = color.rgba);\n r /= 255;\n g /= 255;\n b /= 255;\n }\n }\n if (r !== void 0) {\n this._components[0] = r;\n this._components[1] = g;\n this._components[2] = b;\n this._components[3] = a;\n this.refreshInt();\n } else {\n throw new Error(`Unable to convert color ${value}`);\n }\n }\n refreshInt() {\n this._clamp(this._components);\n const [r, g, b] = this._components;\n this._int = (r * 255 << 16) + (g * 255 << 8) + (b * 255 | 0);\n }\n _clamp(value, min = 0, max = 1) {\n if (typeof value === \"number\") {\n return Math.min(Math.max(value, min), max);\n }\n value.forEach((v, i) => {\n value[i] = Math.min(Math.max(v, min), max);\n });\n return value;\n }\n};\nlet Color = _Color;\nColor.shared = new _Color();\nColor.temp = new _Color();\nColor.HEX_PATTERN = /^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;\n\nexport { Color };\n//# sourceMappingURL=Color.mjs.map\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u {\n ENV2[ENV2[\"WEBGL_LEGACY\"] = 0] = \"WEBGL_LEGACY\";\n ENV2[ENV2[\"WEBGL\"] = 1] = \"WEBGL\";\n ENV2[ENV2[\"WEBGL2\"] = 2] = \"WEBGL2\";\n return ENV2;\n})(ENV || {});\nvar RENDERER_TYPE = /* @__PURE__ */ ((RENDERER_TYPE2) => {\n RENDERER_TYPE2[RENDERER_TYPE2[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n RENDERER_TYPE2[RENDERER_TYPE2[\"WEBGL\"] = 1] = \"WEBGL\";\n RENDERER_TYPE2[RENDERER_TYPE2[\"CANVAS\"] = 2] = \"CANVAS\";\n return RENDERER_TYPE2;\n})(RENDERER_TYPE || {});\nvar BUFFER_BITS = /* @__PURE__ */ ((BUFFER_BITS2) => {\n BUFFER_BITS2[BUFFER_BITS2[\"COLOR\"] = 16384] = \"COLOR\";\n BUFFER_BITS2[BUFFER_BITS2[\"DEPTH\"] = 256] = \"DEPTH\";\n BUFFER_BITS2[BUFFER_BITS2[\"STENCIL\"] = 1024] = \"STENCIL\";\n return BUFFER_BITS2;\n})(BUFFER_BITS || {});\nvar BLEND_MODES = /* @__PURE__ */ ((BLEND_MODES2) => {\n BLEND_MODES2[BLEND_MODES2[\"NORMAL\"] = 0] = \"NORMAL\";\n BLEND_MODES2[BLEND_MODES2[\"ADD\"] = 1] = \"ADD\";\n BLEND_MODES2[BLEND_MODES2[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n BLEND_MODES2[BLEND_MODES2[\"SCREEN\"] = 3] = \"SCREEN\";\n BLEND_MODES2[BLEND_MODES2[\"OVERLAY\"] = 4] = \"OVERLAY\";\n BLEND_MODES2[BLEND_MODES2[\"DARKEN\"] = 5] = \"DARKEN\";\n BLEND_MODES2[BLEND_MODES2[\"LIGHTEN\"] = 6] = \"LIGHTEN\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR_DODGE\"] = 7] = \"COLOR_DODGE\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR_BURN\"] = 8] = \"COLOR_BURN\";\n BLEND_MODES2[BLEND_MODES2[\"HARD_LIGHT\"] = 9] = \"HARD_LIGHT\";\n BLEND_MODES2[BLEND_MODES2[\"SOFT_LIGHT\"] = 10] = \"SOFT_LIGHT\";\n BLEND_MODES2[BLEND_MODES2[\"DIFFERENCE\"] = 11] = \"DIFFERENCE\";\n BLEND_MODES2[BLEND_MODES2[\"EXCLUSION\"] = 12] = \"EXCLUSION\";\n BLEND_MODES2[BLEND_MODES2[\"HUE\"] = 13] = \"HUE\";\n BLEND_MODES2[BLEND_MODES2[\"SATURATION\"] = 14] = \"SATURATION\";\n BLEND_MODES2[BLEND_MODES2[\"COLOR\"] = 15] = \"COLOR\";\n BLEND_MODES2[BLEND_MODES2[\"LUMINOSITY\"] = 16] = \"LUMINOSITY\";\n BLEND_MODES2[BLEND_MODES2[\"NORMAL_NPM\"] = 17] = \"NORMAL_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"ADD_NPM\"] = 18] = \"ADD_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"SCREEN_NPM\"] = 19] = \"SCREEN_NPM\";\n BLEND_MODES2[BLEND_MODES2[\"NONE\"] = 20] = \"NONE\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_OVER\"] = 0] = \"SRC_OVER\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_IN\"] = 21] = \"SRC_IN\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_OUT\"] = 22] = \"SRC_OUT\";\n BLEND_MODES2[BLEND_MODES2[\"SRC_ATOP\"] = 23] = \"SRC_ATOP\";\n BLEND_MODES2[BLEND_MODES2[\"DST_OVER\"] = 24] = \"DST_OVER\";\n BLEND_MODES2[BLEND_MODES2[\"DST_IN\"] = 25] = \"DST_IN\";\n BLEND_MODES2[BLEND_MODES2[\"DST_OUT\"] = 26] = \"DST_OUT\";\n BLEND_MODES2[BLEND_MODES2[\"DST_ATOP\"] = 27] = \"DST_ATOP\";\n BLEND_MODES2[BLEND_MODES2[\"ERASE\"] = 26] = \"ERASE\";\n BLEND_MODES2[BLEND_MODES2[\"SUBTRACT\"] = 28] = \"SUBTRACT\";\n BLEND_MODES2[BLEND_MODES2[\"XOR\"] = 29] = \"XOR\";\n return BLEND_MODES2;\n})(BLEND_MODES || {});\nvar DRAW_MODES = /* @__PURE__ */ ((DRAW_MODES2) => {\n DRAW_MODES2[DRAW_MODES2[\"POINTS\"] = 0] = \"POINTS\";\n DRAW_MODES2[DRAW_MODES2[\"LINES\"] = 1] = \"LINES\";\n DRAW_MODES2[DRAW_MODES2[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n DRAW_MODES2[DRAW_MODES2[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n DRAW_MODES2[DRAW_MODES2[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n return DRAW_MODES2;\n})(DRAW_MODES || {});\nvar FORMATS = /* @__PURE__ */ ((FORMATS2) => {\n FORMATS2[FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n FORMATS2[FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n FORMATS2[FORMATS2[\"RG\"] = 33319] = \"RG\";\n FORMATS2[FORMATS2[\"RED\"] = 6403] = \"RED\";\n FORMATS2[FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n FORMATS2[FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n FORMATS2[FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n FORMATS2[FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n FORMATS2[FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n FORMATS2[FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n FORMATS2[FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n FORMATS2[FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n FORMATS2[FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n return FORMATS2;\n})(FORMATS || {});\nvar TARGETS = /* @__PURE__ */ ((TARGETS2) => {\n TARGETS2[TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n TARGETS2[TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n TARGETS2[TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n return TARGETS2;\n})(TARGETS || {});\nvar TYPES = /* @__PURE__ */ ((TYPES2) => {\n TYPES2[TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n TYPES2[TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n TYPES2[TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n TYPES2[TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n TYPES2[TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n TYPES2[TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n TYPES2[TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n TYPES2[TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n TYPES2[TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n TYPES2[TYPES2[\"INT\"] = 5124] = \"INT\";\n TYPES2[TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n TYPES2[TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n TYPES2[TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n return TYPES2;\n})(TYPES || {});\nvar SAMPLER_TYPES = /* @__PURE__ */ ((SAMPLER_TYPES2) => {\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"FLOAT\"] = 0] = \"FLOAT\";\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"INT\"] = 1] = \"INT\";\n SAMPLER_TYPES2[SAMPLER_TYPES2[\"UINT\"] = 2] = \"UINT\";\n return SAMPLER_TYPES2;\n})(SAMPLER_TYPES || {});\nvar SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => {\n SCALE_MODES2[SCALE_MODES2[\"NEAREST\"] = 0] = \"NEAREST\";\n SCALE_MODES2[SCALE_MODES2[\"LINEAR\"] = 1] = \"LINEAR\";\n return SCALE_MODES2;\n})(SCALE_MODES || {});\nvar WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => {\n WRAP_MODES2[WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n WRAP_MODES2[WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n WRAP_MODES2[WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n return WRAP_MODES2;\n})(WRAP_MODES || {});\nvar MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => {\n MIPMAP_MODES2[MIPMAP_MODES2[\"OFF\"] = 0] = \"OFF\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"POW2\"] = 1] = \"POW2\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"ON\"] = 2] = \"ON\";\n MIPMAP_MODES2[MIPMAP_MODES2[\"ON_MANUAL\"] = 3] = \"ON_MANUAL\";\n return MIPMAP_MODES2;\n})(MIPMAP_MODES || {});\nvar ALPHA_MODES = /* @__PURE__ */ ((ALPHA_MODES2) => {\n ALPHA_MODES2[ALPHA_MODES2[\"NPM\"] = 0] = \"NPM\";\n ALPHA_MODES2[ALPHA_MODES2[\"UNPACK\"] = 1] = \"UNPACK\";\n ALPHA_MODES2[ALPHA_MODES2[\"PMA\"] = 2] = \"PMA\";\n ALPHA_MODES2[ALPHA_MODES2[\"NO_PREMULTIPLIED_ALPHA\"] = 0] = \"NO_PREMULTIPLIED_ALPHA\";\n ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLY_ON_UPLOAD\"] = 1] = \"PREMULTIPLY_ON_UPLOAD\";\n ALPHA_MODES2[ALPHA_MODES2[\"PREMULTIPLIED_ALPHA\"] = 2] = \"PREMULTIPLIED_ALPHA\";\n return ALPHA_MODES2;\n})(ALPHA_MODES || {});\nvar CLEAR_MODES = /* @__PURE__ */ ((CLEAR_MODES2) => {\n CLEAR_MODES2[CLEAR_MODES2[\"NO\"] = 0] = \"NO\";\n CLEAR_MODES2[CLEAR_MODES2[\"YES\"] = 1] = \"YES\";\n CLEAR_MODES2[CLEAR_MODES2[\"AUTO\"] = 2] = \"AUTO\";\n CLEAR_MODES2[CLEAR_MODES2[\"BLEND\"] = 0] = \"BLEND\";\n CLEAR_MODES2[CLEAR_MODES2[\"CLEAR\"] = 1] = \"CLEAR\";\n CLEAR_MODES2[CLEAR_MODES2[\"BLIT\"] = 2] = \"BLIT\";\n return CLEAR_MODES2;\n})(CLEAR_MODES || {});\nvar GC_MODES = /* @__PURE__ */ ((GC_MODES2) => {\n GC_MODES2[GC_MODES2[\"AUTO\"] = 0] = \"AUTO\";\n GC_MODES2[GC_MODES2[\"MANUAL\"] = 1] = \"MANUAL\";\n return GC_MODES2;\n})(GC_MODES || {});\nvar PRECISION = /* @__PURE__ */ ((PRECISION2) => {\n PRECISION2[\"LOW\"] = \"lowp\";\n PRECISION2[\"MEDIUM\"] = \"mediump\";\n PRECISION2[\"HIGH\"] = \"highp\";\n return PRECISION2;\n})(PRECISION || {});\nvar MASK_TYPES = /* @__PURE__ */ ((MASK_TYPES2) => {\n MASK_TYPES2[MASK_TYPES2[\"NONE\"] = 0] = \"NONE\";\n MASK_TYPES2[MASK_TYPES2[\"SCISSOR\"] = 1] = \"SCISSOR\";\n MASK_TYPES2[MASK_TYPES2[\"STENCIL\"] = 2] = \"STENCIL\";\n MASK_TYPES2[MASK_TYPES2[\"SPRITE\"] = 3] = \"SPRITE\";\n MASK_TYPES2[MASK_TYPES2[\"COLOR\"] = 4] = \"COLOR\";\n return MASK_TYPES2;\n})(MASK_TYPES || {});\nvar COLOR_MASK_BITS = /* @__PURE__ */ ((COLOR_MASK_BITS2) => {\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"RED\"] = 1] = \"RED\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"GREEN\"] = 2] = \"GREEN\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"BLUE\"] = 4] = \"BLUE\";\n COLOR_MASK_BITS2[COLOR_MASK_BITS2[\"ALPHA\"] = 8] = \"ALPHA\";\n return COLOR_MASK_BITS2;\n})(COLOR_MASK_BITS || {});\nvar MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => {\n MSAA_QUALITY2[MSAA_QUALITY2[\"NONE\"] = 0] = \"NONE\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"LOW\"] = 2] = \"LOW\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"MEDIUM\"] = 4] = \"MEDIUM\";\n MSAA_QUALITY2[MSAA_QUALITY2[\"HIGH\"] = 8] = \"HIGH\";\n return MSAA_QUALITY2;\n})(MSAA_QUALITY || {});\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { ALPHA_MODES, BLEND_MODES, BUFFER_BITS, BUFFER_TYPE, CLEAR_MODES, COLOR_MASK_BITS, DRAW_MODES, ENV, FORMATS, GC_MODES, MASK_TYPES, MIPMAP_MODES, MSAA_QUALITY, PRECISION, RENDERER_TYPE, SAMPLER_TYPES, SCALE_MODES, TARGETS, TYPES, WRAP_MODES };\n//# sourceMappingURL=index.mjs.map\n","class ViewableBuffer {\n constructor(sizeOrBuffer) {\n if (typeof sizeOrBuffer === \"number\") {\n this.rawBinaryData = new ArrayBuffer(sizeOrBuffer);\n } else if (sizeOrBuffer instanceof Uint8Array) {\n this.rawBinaryData = sizeOrBuffer.buffer;\n } else {\n this.rawBinaryData = sizeOrBuffer;\n }\n this.uint32View = new Uint32Array(this.rawBinaryData);\n this.float32View = new Float32Array(this.rawBinaryData);\n }\n get int8View() {\n if (!this._int8View) {\n this._int8View = new Int8Array(this.rawBinaryData);\n }\n return this._int8View;\n }\n get uint8View() {\n if (!this._uint8View) {\n this._uint8View = new Uint8Array(this.rawBinaryData);\n }\n return this._uint8View;\n }\n get int16View() {\n if (!this._int16View) {\n this._int16View = new Int16Array(this.rawBinaryData);\n }\n return this._int16View;\n }\n get uint16View() {\n if (!this._uint16View) {\n this._uint16View = new Uint16Array(this.rawBinaryData);\n }\n return this._uint16View;\n }\n get int32View() {\n if (!this._int32View) {\n this._int32View = new Int32Array(this.rawBinaryData);\n }\n return this._int32View;\n }\n view(type) {\n return this[`${type}View`];\n }\n destroy() {\n this.rawBinaryData = null;\n this._int8View = null;\n this._uint8View = null;\n this._int16View = null;\n this._uint16View = null;\n this._int32View = null;\n this.uint32View = null;\n this.float32View = null;\n }\n static sizeOf(type) {\n switch (type) {\n case \"int8\":\n case \"uint8\":\n return 1;\n case \"int16\":\n case \"uint16\":\n return 2;\n case \"int32\":\n case \"uint32\":\n case \"float32\":\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\n\nexport { ViewableBuffer };\n//# sourceMappingURL=ViewableBuffer.mjs.map\n","const fragTemplate = [\n \"precision mediump float;\",\n \"void main(void){\",\n \"float test = 0.1;\",\n \"%forloop%\",\n \"gl_FragColor = vec4(0.0);\",\n \"}\"\n].join(\"\\n\");\nfunction generateIfTestSrc(maxIfs) {\n let src = \"\";\n for (let i = 0; i < maxIfs; ++i) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxIfs - 1) {\n src += `if(test == ${i}.0){}`;\n }\n }\n return src;\n}\nfunction checkMaxIfStatementsInShader(maxIfs, gl) {\n if (maxIfs === 0) {\n throw new Error(\"Invalid value of `0` passed to `checkMaxIfStatementsInShader`\");\n }\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n while (true) {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n maxIfs = maxIfs / 2 | 0;\n } else {\n break;\n }\n }\n return maxIfs;\n}\n\nexport { checkMaxIfStatementsInShader };\n//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nclass State {\n constructor() {\n this.data = 0;\n this.blendMode = BLEND_MODES.NORMAL;\n this.polygonOffset = 0;\n this.blend = true;\n this.depthMask = true;\n }\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n if (!!(this.data & 1 << BLEND) !== value) {\n this.data ^= 1 << BLEND;\n }\n }\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n if (!!(this.data & 1 << OFFSET) !== value) {\n this.data ^= 1 << OFFSET;\n }\n }\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n if (!!(this.data & 1 << CULLING) !== value) {\n this.data ^= 1 << CULLING;\n }\n }\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n if (!!(this.data & 1 << DEPTH_TEST) !== value) {\n this.data ^= 1 << DEPTH_TEST;\n }\n }\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n if (!!(this.data & 1 << DEPTH_MASK) !== value) {\n this.data ^= 1 << DEPTH_MASK;\n }\n }\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n if (!!(this.data & 1 << WINDING) !== value) {\n this.data ^= 1 << WINDING;\n }\n }\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== BLEND_MODES.NONE;\n this._blendMode = value;\n }\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n toString() {\n return `[@pixi/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`;\n }\n static for2d() {\n const state = new State();\n state.depthTest = false;\n state.blend = true;\n return state;\n }\n}\n\nexport { State };\n//# sourceMappingURL=State.mjs.map\n","const INSTALLED = [];\nfunction autoDetectResource(source, options) {\n if (!source) {\n return null;\n }\n let extension = \"\";\n if (typeof source === \"string\") {\n const result = /\\.(\\w{3,4})(?:$|\\?|#)/i.exec(source);\n if (result) {\n extension = result[1].toLowerCase();\n }\n }\n for (let i = INSTALLED.length - 1; i >= 0; --i) {\n const ResourcePlugin = INSTALLED[i];\n if (ResourcePlugin.test && ResourcePlugin.test(source, extension)) {\n return new ResourcePlugin(source, options);\n }\n }\n throw new Error(\"Unrecognized source type to auto-detect Resource\");\n}\n\nexport { INSTALLED, autoDetectResource };\n//# sourceMappingURL=autoDetectResource.mjs.map\n","class Runner {\n constructor(name) {\n this.items = [];\n this._name = name;\n this._aliasCount = 0;\n }\n emit(a0, a1, a2, a3, a4, a5, a6, a7) {\n if (arguments.length > 8) {\n throw new Error(\"max arguments reached\");\n }\n const { name, items } = this;\n this._aliasCount++;\n for (let i = 0, len = items.length; i < len; i++) {\n items[i][name](a0, a1, a2, a3, a4, a5, a6, a7);\n }\n if (items === this.items) {\n this._aliasCount--;\n }\n return this;\n }\n ensureNonAliasedItems() {\n if (this._aliasCount > 0 && this.items.length > 1) {\n this._aliasCount = 0;\n this.items = this.items.slice(0);\n }\n }\n add(item) {\n if (item[this._name]) {\n this.ensureNonAliasedItems();\n this.remove(item);\n this.items.push(item);\n }\n return this;\n }\n remove(item) {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.ensureNonAliasedItems();\n this.items.splice(index, 1);\n }\n return this;\n }\n contains(item) {\n return this.items.includes(item);\n }\n removeAll() {\n this.ensureNonAliasedItems();\n this.items.length = 0;\n return this;\n }\n destroy() {\n this.removeAll();\n this.items = null;\n this._name = null;\n }\n get empty() {\n return this.items.length === 0;\n }\n get name() {\n return this._name;\n }\n}\nObject.defineProperties(Runner.prototype, {\n dispatch: { value: Runner.prototype.emit },\n run: { value: Runner.prototype.emit }\n});\n\nexport { Runner };\n//# sourceMappingURL=Runner.mjs.map\n","import { Runner } from '@pixi/runner';\n\nclass Resource {\n constructor(width = 0, height = 0) {\n this._width = width;\n this._height = height;\n this.destroyed = false;\n this.internal = false;\n this.onResize = new Runner(\"setRealSize\");\n this.onUpdate = new Runner(\"update\");\n this.onError = new Runner(\"onError\");\n }\n bind(baseTexture) {\n this.onResize.add(baseTexture);\n this.onUpdate.add(baseTexture);\n this.onError.add(baseTexture);\n if (this._width || this._height) {\n this.onResize.emit(this._width, this._height);\n }\n }\n unbind(baseTexture) {\n this.onResize.remove(baseTexture);\n this.onUpdate.remove(baseTexture);\n this.onError.remove(baseTexture);\n }\n resize(width, height) {\n if (width !== this._width || height !== this._height) {\n this._width = width;\n this._height = height;\n this.onResize.emit(width, height);\n }\n }\n get valid() {\n return !!this._width && !!this._height;\n }\n update() {\n if (!this.destroyed) {\n this.onUpdate.emit();\n }\n }\n load() {\n return Promise.resolve(this);\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n style(_renderer, _baseTexture, _glTexture) {\n return false;\n }\n dispose() {\n }\n destroy() {\n if (!this.destroyed) {\n this.destroyed = true;\n this.dispose();\n this.onError.removeAll();\n this.onError = null;\n this.onResize.removeAll();\n this.onResize = null;\n this.onUpdate.removeAll();\n this.onUpdate = null;\n }\n }\n static test(_source, _extension) {\n return false;\n }\n}\n\nexport { Resource };\n//# sourceMappingURL=Resource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { Resource } from './Resource.mjs';\n\nclass BufferResource extends Resource {\n constructor(source, options) {\n const { width, height } = options || {};\n if (!width || !height) {\n throw new Error(\"BufferResource width or height invalid\");\n }\n super(width, height);\n this.data = source;\n }\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n if (glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data);\n }\n return true;\n }\n dispose() {\n this.data = null;\n }\n static test(source) {\n return source instanceof Float32Array || source instanceof Uint8Array || source instanceof Uint32Array;\n }\n}\n\nexport { BufferResource };\n//# sourceMappingURL=BufferResource.mjs.map\n","import { SCALE_MODES, FORMATS, ALPHA_MODES, TYPES, MIPMAP_MODES, WRAP_MODES, TARGETS } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { EventEmitter, uid, isPow2, BaseTextureCache, TextureCache } from '@pixi/utils';\nimport { autoDetectResource } from './resources/autoDetectResource.mjs';\nimport { BufferResource } from './resources/BufferResource.mjs';\nimport { Resource } from './resources/Resource.mjs';\n\nconst defaultBufferOptions = {\n scaleMode: SCALE_MODES.NEAREST,\n format: FORMATS.RGBA,\n alphaMode: ALPHA_MODES.NPM\n};\nconst _BaseTexture = class extends EventEmitter {\n constructor(resource = null, options = null) {\n super();\n options = Object.assign({}, _BaseTexture.defaultOptions, options);\n const {\n alphaMode,\n mipmap,\n anisotropicLevel,\n scaleMode,\n width,\n height,\n wrapMode,\n format,\n type,\n target,\n resolution,\n resourceOptions\n } = options;\n if (resource && !(resource instanceof Resource)) {\n resource = autoDetectResource(resource, resourceOptions);\n resource.internal = true;\n }\n this.resolution = resolution || settings.RESOLUTION;\n this.width = Math.round((width || 0) * this.resolution) / this.resolution;\n this.height = Math.round((height || 0) * this.resolution) / this.resolution;\n this._mipmap = mipmap;\n this.anisotropicLevel = anisotropicLevel;\n this._wrapMode = wrapMode;\n this._scaleMode = scaleMode;\n this.format = format;\n this.type = type;\n this.target = target;\n this.alphaMode = alphaMode;\n this.uid = uid();\n this.touched = 0;\n this.isPowerOfTwo = false;\n this._refreshPOT();\n this._glTextures = {};\n this.dirtyId = 0;\n this.dirtyStyleId = 0;\n this.cacheId = null;\n this.valid = width > 0 && height > 0;\n this.textureCacheIds = [];\n this.destroyed = false;\n this.resource = null;\n this._batchEnabled = 0;\n this._batchLocation = 0;\n this.parentTextureArray = null;\n this.setResource(resource);\n }\n get realWidth() {\n return Math.round(this.width * this.resolution);\n }\n get realHeight() {\n return Math.round(this.height * this.resolution);\n }\n get mipmap() {\n return this._mipmap;\n }\n set mipmap(value) {\n if (this._mipmap !== value) {\n this._mipmap = value;\n this.dirtyStyleId++;\n }\n }\n get scaleMode() {\n return this._scaleMode;\n }\n set scaleMode(value) {\n if (this._scaleMode !== value) {\n this._scaleMode = value;\n this.dirtyStyleId++;\n }\n }\n get wrapMode() {\n return this._wrapMode;\n }\n set wrapMode(value) {\n if (this._wrapMode !== value) {\n this._wrapMode = value;\n this.dirtyStyleId++;\n }\n }\n setStyle(scaleMode, mipmap) {\n let dirty;\n if (scaleMode !== void 0 && scaleMode !== this.scaleMode) {\n this.scaleMode = scaleMode;\n dirty = true;\n }\n if (mipmap !== void 0 && mipmap !== this.mipmap) {\n this.mipmap = mipmap;\n dirty = true;\n }\n if (dirty) {\n this.dirtyStyleId++;\n }\n return this;\n }\n setSize(desiredWidth, desiredHeight, resolution) {\n resolution = resolution || this.resolution;\n return this.setRealSize(desiredWidth * resolution, desiredHeight * resolution, resolution);\n }\n setRealSize(realWidth, realHeight, resolution) {\n this.resolution = resolution || this.resolution;\n this.width = Math.round(realWidth) / this.resolution;\n this.height = Math.round(realHeight) / this.resolution;\n this._refreshPOT();\n this.update();\n return this;\n }\n _refreshPOT() {\n this.isPowerOfTwo = isPow2(this.realWidth) && isPow2(this.realHeight);\n }\n setResolution(resolution) {\n const oldResolution = this.resolution;\n if (oldResolution === resolution) {\n return this;\n }\n this.resolution = resolution;\n if (this.valid) {\n this.width = Math.round(this.width * oldResolution) / resolution;\n this.height = Math.round(this.height * oldResolution) / resolution;\n this.emit(\"update\", this);\n }\n this._refreshPOT();\n return this;\n }\n setResource(resource) {\n if (this.resource === resource) {\n return this;\n }\n if (this.resource) {\n throw new Error(\"Resource can be set only once\");\n }\n resource.bind(this);\n this.resource = resource;\n return this;\n }\n update() {\n if (!this.valid) {\n if (this.width > 0 && this.height > 0) {\n this.valid = true;\n this.emit(\"loaded\", this);\n this.emit(\"update\", this);\n }\n } else {\n this.dirtyId++;\n this.dirtyStyleId++;\n this.emit(\"update\", this);\n }\n }\n onError(event) {\n this.emit(\"error\", this, event);\n }\n destroy() {\n if (this.resource) {\n this.resource.unbind(this);\n if (this.resource.internal) {\n this.resource.destroy();\n }\n this.resource = null;\n }\n if (this.cacheId) {\n delete BaseTextureCache[this.cacheId];\n delete TextureCache[this.cacheId];\n this.cacheId = null;\n }\n this.dispose();\n _BaseTexture.removeFromCache(this);\n this.textureCacheIds = null;\n this.destroyed = true;\n }\n dispose() {\n this.emit(\"dispose\", this);\n }\n castToBaseTexture() {\n return this;\n }\n static from(source, options, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source === \"string\";\n let cacheId = null;\n if (isFrame) {\n cacheId = source;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let baseTexture = BaseTextureCache[cacheId];\n if (isFrame && strict && !baseTexture) {\n throw new Error(`The cacheId \"${cacheId}\" does not exist in BaseTextureCache.`);\n }\n if (!baseTexture) {\n baseTexture = new _BaseTexture(source, options);\n baseTexture.cacheId = cacheId;\n _BaseTexture.addToCache(baseTexture, cacheId);\n }\n return baseTexture;\n }\n static fromBuffer(buffer, width, height, options) {\n buffer = buffer || new Float32Array(width * height * 4);\n const resource = new BufferResource(buffer, { width, height });\n const type = buffer instanceof Float32Array ? TYPES.FLOAT : TYPES.UNSIGNED_BYTE;\n return new _BaseTexture(resource, Object.assign({}, defaultBufferOptions, { type }, options));\n }\n static addToCache(baseTexture, id) {\n if (id) {\n if (!baseTexture.textureCacheIds.includes(id)) {\n baseTexture.textureCacheIds.push(id);\n }\n if (BaseTextureCache[id] && BaseTextureCache[id] !== baseTexture) {\n console.warn(`BaseTexture added to the cache with an id [${id}] that already had an entry`);\n }\n BaseTextureCache[id] = baseTexture;\n }\n }\n static removeFromCache(baseTexture) {\n if (typeof baseTexture === \"string\") {\n const baseTextureFromCache = BaseTextureCache[baseTexture];\n if (baseTextureFromCache) {\n const index = baseTextureFromCache.textureCacheIds.indexOf(baseTexture);\n if (index > -1) {\n baseTextureFromCache.textureCacheIds.splice(index, 1);\n }\n delete BaseTextureCache[baseTexture];\n return baseTextureFromCache;\n }\n } else if (baseTexture?.textureCacheIds) {\n for (let i = 0; i < baseTexture.textureCacheIds.length; ++i) {\n delete BaseTextureCache[baseTexture.textureCacheIds[i]];\n }\n baseTexture.textureCacheIds.length = 0;\n return baseTexture;\n }\n return null;\n }\n};\nlet BaseTexture = _BaseTexture;\nBaseTexture.defaultOptions = {\n mipmap: MIPMAP_MODES.POW2,\n anisotropicLevel: 0,\n scaleMode: SCALE_MODES.LINEAR,\n wrapMode: WRAP_MODES.CLAMP,\n alphaMode: ALPHA_MODES.UNPACK,\n target: TARGETS.TEXTURE_2D,\n format: FORMATS.RGBA,\n type: TYPES.UNSIGNED_BYTE\n};\nBaseTexture._globalBatch = 0;\n\nexport { BaseTexture };\n//# sourceMappingURL=BaseTexture.mjs.map\n","import { DRAW_MODES } from '@pixi/constants';\n\nclass BatchDrawCall {\n constructor() {\n this.texArray = null;\n this.blend = 0;\n this.type = DRAW_MODES.TRIANGLES;\n this.start = 0;\n this.size = 0;\n this.data = null;\n }\n}\n\nexport { BatchDrawCall };\n//# sourceMappingURL=BatchDrawCall.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Runner } from '@pixi/runner';\n\nlet UID = 0;\nclass Buffer {\n constructor(data, _static = true, index = false) {\n this.data = data || new Float32Array(1);\n this._glBuffers = {};\n this._updateID = 0;\n this.index = index;\n this.static = _static;\n this.id = UID++;\n this.disposeRunner = new Runner(\"disposeBuffer\");\n }\n update(data) {\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n this.data = data || this.data;\n this._updateID++;\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroy() {\n this.dispose();\n this.data = null;\n }\n set index(value) {\n this.type = value ? BUFFER_TYPE.ELEMENT_ARRAY_BUFFER : BUFFER_TYPE.ARRAY_BUFFER;\n }\n get index() {\n return this.type === BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n static from(data) {\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n return new Buffer(data);\n }\n}\n\nexport { Buffer };\n//# sourceMappingURL=Buffer.mjs.map\n","import { TYPES } from '@pixi/constants';\n\nclass Attribute {\n constructor(buffer, size = 0, normalized = false, type = TYPES.FLOAT, stride, start, instance, divisor = 1) {\n this.buffer = buffer;\n this.size = size;\n this.normalized = normalized;\n this.type = type;\n this.stride = stride;\n this.start = start;\n this.instance = instance;\n this.divisor = divisor;\n }\n destroy() {\n this.buffer = null;\n }\n static from(buffer, size, normalized, type, stride) {\n return new Attribute(buffer, size, normalized, type, stride);\n }\n}\n\nexport { Attribute };\n//# sourceMappingURL=Attribute.mjs.map\n","import { getBufferType } from '@pixi/utils';\n\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array\n};\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0;\n let stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++) {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null;\n let littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i];\n const array = arrays[i];\n const type = getBufferType(array);\n if (!views[type]) {\n views[type] = new map[type](buffer);\n }\n out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset;\n const index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\nexport { interleaveTypedArrays };\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Runner } from '@pixi/runner';\nimport { getBufferType } from '@pixi/utils';\nimport { Attribute } from './Attribute.mjs';\nimport { Buffer } from './Buffer.mjs';\nimport { interleaveTypedArrays } from './utils/interleaveTypedArrays.mjs';\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nlet UID = 0;\nconst map = {\n Float32Array,\n Uint32Array,\n Int32Array,\n Uint8Array,\n Uint16Array\n};\nclass Geometry {\n constructor(buffers = [], attributes = {}) {\n this.buffers = buffers;\n this.indexBuffer = null;\n this.attributes = attributes;\n this.glVertexArrayObjects = {};\n this.id = UID++;\n this.instanced = false;\n this.instanceCount = 1;\n this.disposeRunner = new Runner(\"disposeGeometry\");\n this.refCount = 0;\n }\n addAttribute(id, buffer, size = 0, normalized = false, type, stride, start, instance = false) {\n if (!buffer) {\n throw new Error(\"You must pass a buffer when creating an attribute\");\n }\n if (!(buffer instanceof Buffer)) {\n if (buffer instanceof Array) {\n buffer = new Float32Array(buffer);\n }\n buffer = new Buffer(buffer);\n }\n const ids = id.split(\"|\");\n if (ids.length > 1) {\n for (let i = 0; i < ids.length; i++) {\n this.addAttribute(ids[i], buffer, size, normalized, type);\n }\n return this;\n }\n let bufferIndex = this.buffers.indexOf(buffer);\n if (bufferIndex === -1) {\n this.buffers.push(buffer);\n bufferIndex = this.buffers.length - 1;\n }\n this.attributes[id] = new Attribute(bufferIndex, size, normalized, type, stride, start, instance);\n this.instanced = this.instanced || instance;\n return this;\n }\n getAttribute(id) {\n return this.attributes[id];\n }\n getBuffer(id) {\n return this.buffers[this.getAttribute(id).buffer];\n }\n addIndex(buffer) {\n if (!(buffer instanceof Buffer)) {\n if (buffer instanceof Array) {\n buffer = new Uint16Array(buffer);\n }\n buffer = new Buffer(buffer);\n }\n buffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n this.indexBuffer = buffer;\n if (!this.buffers.includes(buffer)) {\n this.buffers.push(buffer);\n }\n return this;\n }\n getIndex() {\n return this.indexBuffer;\n }\n interleave() {\n if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer)\n return this;\n const arrays = [];\n const sizes = [];\n const interleavedBuffer = new Buffer();\n let i;\n for (i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = this.buffers[attribute.buffer];\n arrays.push(buffer.data);\n sizes.push(attribute.size * byteSizeMap[attribute.type] / 4);\n attribute.buffer = 0;\n }\n interleavedBuffer.data = interleaveTypedArrays(arrays, sizes);\n for (i = 0; i < this.buffers.length; i++) {\n if (this.buffers[i] !== this.indexBuffer) {\n this.buffers[i].destroy();\n }\n }\n this.buffers = [interleavedBuffer];\n if (this.indexBuffer) {\n this.buffers.push(this.indexBuffer);\n }\n return this;\n }\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = this.buffers[attribute.buffer];\n return buffer.data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroy() {\n this.dispose();\n this.buffers = null;\n this.indexBuffer = null;\n this.attributes = null;\n }\n clone() {\n const geometry = new Geometry();\n for (let i = 0; i < this.buffers.length; i++) {\n geometry.buffers[i] = new Buffer(this.buffers[i].data.slice(0));\n }\n for (const i in this.attributes) {\n const attrib = this.attributes[i];\n geometry.attributes[i] = new Attribute(attrib.buffer, attrib.size, attrib.normalized, attrib.type, attrib.stride, attrib.start, attrib.instance);\n }\n if (this.indexBuffer) {\n geometry.indexBuffer = geometry.buffers[this.buffers.indexOf(this.indexBuffer)];\n geometry.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n return geometry;\n }\n static merge(geometries) {\n const geometryOut = new Geometry();\n const arrays = [];\n const sizes = [];\n const offsets = [];\n let geometry;\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++) {\n sizes[j] = sizes[j] || 0;\n sizes[j] += geometry.buffers[j].data.length;\n offsets[j] = 0;\n }\n }\n for (let i = 0; i < geometry.buffers.length; i++) {\n arrays[i] = new map[getBufferType(geometry.buffers[i].data)](sizes[i]);\n geometryOut.buffers[i] = new Buffer(arrays[i]);\n }\n for (let i = 0; i < geometries.length; i++) {\n geometry = geometries[i];\n for (let j = 0; j < geometry.buffers.length; j++) {\n arrays[j].set(geometry.buffers[j].data, offsets[j]);\n offsets[j] += geometry.buffers[j].data.length;\n }\n }\n geometryOut.attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n geometryOut.indexBuffer = geometryOut.buffers[geometry.buffers.indexOf(geometry.indexBuffer)];\n geometryOut.indexBuffer.type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n let offset = 0;\n let stride = 0;\n let offset2 = 0;\n let bufferIndexToCount = 0;\n for (let i = 0; i < geometry.buffers.length; i++) {\n if (geometry.buffers[i] !== geometry.indexBuffer) {\n bufferIndexToCount = i;\n break;\n }\n }\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n if ((attribute.buffer | 0) === bufferIndexToCount) {\n stride += attribute.size * byteSizeMap[attribute.type] / 4;\n }\n }\n for (let i = 0; i < geometries.length; i++) {\n const indexBufferData = geometries[i].indexBuffer.data;\n for (let j = 0; j < indexBufferData.length; j++) {\n geometryOut.indexBuffer.data[j + offset2] += offset;\n }\n offset += geometries[i].buffers[bufferIndexToCount].data.length / stride;\n offset2 += indexBufferData.length;\n }\n }\n return geometryOut;\n }\n}\n\nexport { Geometry };\n//# sourceMappingURL=Geometry.mjs.map\n","import { TYPES } from '@pixi/constants';\nimport { Buffer } from '../geometry/Buffer.mjs';\nimport { Geometry } from '../geometry/Geometry.mjs';\n\nclass BatchGeometry extends Geometry {\n constructor(_static = false) {\n super();\n this._buffer = new Buffer(null, _static, false);\n this._indexBuffer = new Buffer(null, _static, true);\n this.addAttribute(\"aVertexPosition\", this._buffer, 2, false, TYPES.FLOAT).addAttribute(\"aTextureCoord\", this._buffer, 2, false, TYPES.FLOAT).addAttribute(\"aColor\", this._buffer, 4, true, TYPES.UNSIGNED_BYTE).addAttribute(\"aTextureId\", this._buffer, 1, true, TYPES.FLOAT).addIndex(this._indexBuffer);\n }\n}\n\nexport { BatchGeometry };\n//# sourceMappingURL=BatchGeometry.mjs.map\n","const uniformParsers = [\n {\n test: (data) => data.type === \"float\" && data.size === 1 && !data.isArray,\n code: (name) => `\n if(uv[\"${name}\"] !== ud[\"${name}\"].value)\n {\n ud[\"${name}\"].value = uv[\"${name}\"]\n gl.uniform1f(ud[\"${name}\"].location, uv[\"${name}\"])\n }\n `\n },\n {\n test: (data, uniform) => (data.type === \"sampler2D\" || data.type === \"samplerCube\" || data.type === \"sampler2DArray\") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0),\n code: (name) => `t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"${name}\"], t);\n\n if(ud[\"${name}\"].value !== t)\n {\n ud[\"${name}\"].value = t;\n gl.uniform1i(ud[\"${name}\"].location, t);\n; // eslint-disable-line max-len\n }`\n },\n {\n test: (data, uniform) => data.type === \"mat3\" && data.size === 1 && !data.isArray && uniform.a !== void 0,\n code: (name) => `\n gl.uniformMatrix3fv(ud[\"${name}\"].location, false, uv[\"${name}\"].toArray(true));\n `,\n codeUbo: (name) => `\n var ${name}_matrix = uv.${name}.toArray(true);\n\n data[offset] = ${name}_matrix[0];\n data[offset+1] = ${name}_matrix[1];\n data[offset+2] = ${name}_matrix[2];\n \n data[offset + 4] = ${name}_matrix[3];\n data[offset + 5] = ${name}_matrix[4];\n data[offset + 6] = ${name}_matrix[5];\n \n data[offset + 8] = ${name}_matrix[6];\n data[offset + 9] = ${name}_matrix[7];\n data[offset + 10] = ${name}_matrix[8];\n `\n },\n {\n test: (data, uniform) => data.type === \"vec2\" && data.size === 1 && !data.isArray && uniform.x !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[\"${name}\"].location, v.x, v.y);\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n `\n },\n {\n test: (data) => data.type === \"vec2\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[\"${name}\"].location, v[0], v[1]);\n }\n `\n },\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.width !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[\"${name}\"].location, v.x, v.y, v.width, v.height)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n `\n },\n {\n test: (data, uniform) => data.type === \"vec4\" && data.size === 1 && !data.isArray && uniform.red !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[\"${name}\"].location, v.red, v.green, v.blue, v.alpha)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n data[offset+3] = v.alpha;\n `\n },\n {\n test: (data, uniform) => data.type === \"vec3\" && data.size === 1 && !data.isArray && uniform.red !== void 0,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)\n {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n \n gl.uniform3f(ud[\"${name}\"].location, v.red, v.green, v.blue)\n }`,\n codeUbo: (name) => `\n v = uv.${name};\n\n data[offset] = v.red;\n data[offset+1] = v.green;\n data[offset+2] = v.blue;\n `\n },\n {\n test: (data) => data.type === \"vec4\" && data.size === 1 && !data.isArray,\n code: (name) => `\n cv = ud[\"${name}\"].value;\n v = uv[\"${name}\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud[\"${name}\"].location, v[0], v[1], v[2], v[3])\n }`\n }\n];\n\nexport { uniformParsers };\n//# sourceMappingURL=uniformParsers.mjs.map\n","import { uniformParsers } from './uniformParsers.mjs';\n\nconst GLSL_TO_SINGLE_SETTERS_CACHED = {\n float: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n vec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }`,\n vec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }`,\n vec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n int: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n ivec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n ivec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n ivec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n uint: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }`,\n uvec2: `\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n uvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n uvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n bvec2: `\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }`,\n bvec3: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n bvec4: `\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n sampler2D: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n samplerCube: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`,\n sampler2DArray: `\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }`\n};\nconst GLSL_TO_ARRAY_SETTERS = {\n float: `gl.uniform1fv(location, v)`,\n vec2: `gl.uniform2fv(location, v)`,\n vec3: `gl.uniform3fv(location, v)`,\n vec4: \"gl.uniform4fv(location, v)\",\n mat4: \"gl.uniformMatrix4fv(location, false, v)\",\n mat3: \"gl.uniformMatrix3fv(location, false, v)\",\n mat2: \"gl.uniformMatrix2fv(location, false, v)\",\n int: \"gl.uniform1iv(location, v)\",\n ivec2: \"gl.uniform2iv(location, v)\",\n ivec3: \"gl.uniform3iv(location, v)\",\n ivec4: \"gl.uniform4iv(location, v)\",\n uint: \"gl.uniform1uiv(location, v)\",\n uvec2: \"gl.uniform2uiv(location, v)\",\n uvec3: \"gl.uniform3uiv(location, v)\",\n uvec4: \"gl.uniform4uiv(location, v)\",\n bool: \"gl.uniform1iv(location, v)\",\n bvec2: \"gl.uniform2iv(location, v)\",\n bvec3: \"gl.uniform3iv(location, v)\",\n bvec4: \"gl.uniform4iv(location, v)\",\n sampler2D: \"gl.uniform1iv(location, v)\",\n samplerCube: \"gl.uniform1iv(location, v)\",\n sampler2DArray: \"gl.uniform1iv(location, v)\"\n};\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n `];\n for (const i in group.uniforms) {\n const data = uniformData[i];\n if (!data) {\n if (group.uniforms[i]?.group) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.syncUniformBufferGroup(uv.${i}, '${i}');\n `);\n } else {\n funcFragments.push(`\n renderer.shader.syncUniformGroup(uv.${i}, syncData);\n `);\n }\n }\n continue;\n }\n const uniform = group.uniforms[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n if (uniformParsers[j].test(data, uniform)) {\n funcFragments.push(uniformParsers[j].code(i, uniform));\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = data.size === 1 && !data.isArray ? GLSL_TO_SINGLE_SETTERS_CACHED : GLSL_TO_ARRAY_SETTERS;\n const template = templateType[data.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","import { ENV } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\n\nconst unknownContext = {};\nlet context = unknownContext;\nfunction getTestContext() {\n if (context === unknownContext || context?.isContextLost()) {\n const canvas = settings.ADAPTER.createCanvas();\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2) {\n gl = canvas.getContext(\"webgl2\", {});\n }\n if (!gl) {\n gl = canvas.getContext(\"webgl\", {}) || canvas.getContext(\"experimental-webgl\", {});\n if (!gl) {\n gl = null;\n } else {\n gl.getExtension(\"WEBGL_draw_buffers\");\n }\n }\n context = gl;\n }\n return context;\n}\n\nexport { getTestContext };\n//# sourceMappingURL=getTestContext.mjs.map\n","import { PRECISION } from '@pixi/constants';\nimport { getTestContext } from './getTestContext.mjs';\n\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = PRECISION.MEDIUM;\n const gl = getTestContext();\n if (gl) {\n if (gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n maxFragmentPrecision = shaderFragment.precision ? PRECISION.HIGH : PRECISION.MEDIUM;\n }\n }\n }\n return maxFragmentPrecision;\n}\n\nexport { getMaxFragmentPrecision };\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","const GLSL_TO_SIZE = {\n float: 1,\n vec2: 2,\n vec3: 3,\n vec4: 4,\n int: 1,\n ivec2: 2,\n ivec3: 3,\n ivec4: 4,\n uint: 1,\n uvec2: 2,\n uvec3: 3,\n uvec4: 4,\n bool: 1,\n bvec2: 2,\n bvec3: 3,\n bvec4: 4,\n mat2: 4,\n mat3: 9,\n mat4: 16,\n sampler2D: 1\n};\nfunction mapSize(type) {\n return GLSL_TO_SIZE[type];\n}\n\nexport { mapSize };\n//# sourceMappingURL=mapSize.mjs.map\n","let GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\n\nexport { mapType };\n//# sourceMappingURL=mapType.mjs.map\n","import { PRECISION } from '@pixi/constants';\n\nfunction setPrecision(src, requestedPrecision, maxSupportedPrecision) {\n if (src.substring(0, 9) !== \"precision\") {\n let precision = requestedPrecision;\n if (requestedPrecision === PRECISION.HIGH && maxSupportedPrecision !== PRECISION.HIGH) {\n precision = PRECISION.MEDIUM;\n }\n return `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== PRECISION.HIGH && src.substring(0, 15) === \"precision highp\") {\n return src.replace(\"precision highp\", \"precision mediump\");\n }\n return src;\n}\n\nexport { setPrecision };\n//# sourceMappingURL=setPrecision.mjs.map\n","import { PRECISION } from '@pixi/constants';\nimport { ProgramCache, isMobile } from '@pixi/utils';\nimport defaultFragment from './defaultProgram.mjs';\nimport defaultVertex from './defaultProgram2.mjs';\nimport './utils/index.mjs';\nimport { setPrecision } from './utils/setPrecision.mjs';\nimport { getMaxFragmentPrecision } from './utils/getMaxFragmentPrecision.mjs';\n\nlet UID = 0;\nconst nameCache = {};\nconst _Program = class {\n constructor(vertexSrc, fragmentSrc, name = \"pixi-shader\", extra = {}) {\n this.extra = {};\n this.id = UID++;\n this.vertexSrc = vertexSrc || _Program.defaultVertexSrc;\n this.fragmentSrc = fragmentSrc || _Program.defaultFragmentSrc;\n this.vertexSrc = this.vertexSrc.trim();\n this.fragmentSrc = this.fragmentSrc.trim();\n this.extra = extra;\n if (this.vertexSrc.substring(0, 8) !== \"#version\") {\n name = name.replace(/\\s+/g, \"-\");\n if (nameCache[name]) {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n } else {\n nameCache[name] = 1;\n }\n this.vertexSrc = `#define SHADER_NAME ${name}\n${this.vertexSrc}`;\n this.fragmentSrc = `#define SHADER_NAME ${name}\n${this.fragmentSrc}`;\n this.vertexSrc = setPrecision(this.vertexSrc, _Program.defaultVertexPrecision, PRECISION.HIGH);\n this.fragmentSrc = setPrecision(this.fragmentSrc, _Program.defaultFragmentPrecision, getMaxFragmentPrecision());\n }\n this.glPrograms = {};\n this.syncUniforms = null;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n static from(vertexSrc, fragmentSrc, name) {\n const key = vertexSrc + fragmentSrc;\n let program = ProgramCache[key];\n if (!program) {\n ProgramCache[key] = program = new _Program(vertexSrc, fragmentSrc, name);\n }\n return program;\n }\n};\nlet Program = _Program;\nProgram.defaultVertexPrecision = PRECISION.HIGH;\nProgram.defaultFragmentPrecision = isMobile.apple.device ? PRECISION.HIGH : PRECISION.MEDIUM;\n\nexport { Program };\n//# sourceMappingURL=Program.mjs.map\n","var defaultVertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=defaultProgram2.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\\n}\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=defaultProgram.mjs.map\n","import { BUFFER_TYPE } from '@pixi/constants';\nimport { Buffer } from '../geometry/Buffer.mjs';\n\nlet UID = 0;\nclass UniformGroup {\n constructor(uniforms, isStatic, isUbo) {\n this.group = true;\n this.syncUniforms = {};\n this.dirtyId = 0;\n this.id = UID++;\n this.static = !!isStatic;\n this.ubo = !!isUbo;\n if (uniforms instanceof Buffer) {\n this.buffer = uniforms;\n this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER;\n this.autoManage = false;\n this.ubo = true;\n } else {\n this.uniforms = uniforms;\n if (this.ubo) {\n this.buffer = new Buffer(new Float32Array(1));\n this.buffer.type = BUFFER_TYPE.UNIFORM_BUFFER;\n this.autoManage = true;\n }\n }\n }\n update() {\n this.dirtyId++;\n if (!this.autoManage && this.buffer) {\n this.buffer.update();\n }\n }\n add(name, uniforms, _static) {\n if (!this.ubo) {\n this.uniforms[name] = new UniformGroup(uniforms, _static);\n } else {\n throw new Error(\"[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them\");\n }\n }\n static from(uniforms, _static, _ubo) {\n return new UniformGroup(uniforms, _static, _ubo);\n }\n static uboFrom(uniforms, _static) {\n return new UniformGroup(uniforms, _static ?? true, true);\n }\n}\n\nexport { UniformGroup };\n//# sourceMappingURL=UniformGroup.mjs.map\n","import { Runner } from '@pixi/runner';\nimport { Program } from './Program.mjs';\nimport { UniformGroup } from './UniformGroup.mjs';\n\nclass Shader {\n constructor(program, uniforms) {\n this.uniformBindCount = 0;\n this.program = program;\n if (uniforms) {\n if (uniforms instanceof UniformGroup) {\n this.uniformGroup = uniforms;\n } else {\n this.uniformGroup = new UniformGroup(uniforms);\n }\n } else {\n this.uniformGroup = new UniformGroup({});\n }\n this.disposeRunner = new Runner(\"disposeShader\");\n }\n checkUniformExists(name, group) {\n if (group.uniforms[name]) {\n return true;\n }\n for (const i in group.uniforms) {\n const uniform = group.uniforms[i];\n if (uniform.group) {\n if (this.checkUniformExists(name, uniform)) {\n return true;\n }\n }\n }\n return false;\n }\n destroy() {\n this.uniformGroup = null;\n this.disposeRunner.emit(this);\n this.disposeRunner.destroy();\n }\n get uniforms() {\n return this.uniformGroup.uniforms;\n }\n static from(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc, fragmentSrc);\n return new Shader(program, uniforms);\n }\n}\n\nexport { Shader };\n//# sourceMappingURL=Shader.mjs.map\n","import { Matrix } from '@pixi/math';\nimport { Program } from '../shader/Program.mjs';\nimport { Shader } from '../shader/Shader.mjs';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\n\nclass BatchShaderGenerator {\n constructor(vertexSrc, fragTemplate) {\n this.vertexSrc = vertexSrc;\n this.fragTemplate = fragTemplate;\n this.programCache = {};\n this.defaultGroupCache = {};\n if (!fragTemplate.includes(\"%count%\")) {\n throw new Error('Fragment template must contain \"%count%\".');\n }\n if (!fragTemplate.includes(\"%forloop%\")) {\n throw new Error('Fragment template must contain \"%forloop%\".');\n }\n }\n generateShader(maxTextures) {\n if (!this.programCache[maxTextures]) {\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n this.defaultGroupCache[maxTextures] = UniformGroup.from({ uSamplers: sampleValues }, true);\n let fragmentSrc = this.fragTemplate;\n fragmentSrc = fragmentSrc.replace(/%count%/gi, `${maxTextures}`);\n fragmentSrc = fragmentSrc.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures));\n this.programCache[maxTextures] = new Program(this.vertexSrc, fragmentSrc);\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: this.defaultGroupCache[maxTextures]\n };\n return new Shader(this.programCache[maxTextures], uniforms);\n }\n generateSampleSrc(maxTextures) {\n let src = \"\";\n src += \"\\n\";\n src += \"\\n\";\n for (let i = 0; i < maxTextures; i++) {\n if (i > 0) {\n src += \"\\nelse \";\n }\n if (i < maxTextures - 1) {\n src += `if(vTextureId < ${i}.5)`;\n }\n src += \"\\n{\";\n src += `\n\tcolor = texture2D(uSamplers[${i}], vTextureCoord);`;\n src += \"\\n}\";\n }\n src += \"\\n\";\n src += \"\\n\";\n return src;\n }\n}\n\nexport { BatchShaderGenerator };\n//# sourceMappingURL=BatchShaderGenerator.mjs.map\n","class BatchTextureArray {\n constructor() {\n this.elements = [];\n this.ids = [];\n this.count = 0;\n }\n clear() {\n for (let i = 0; i < this.count; i++) {\n this.elements[i] = null;\n }\n this.count = 0;\n }\n}\n\nexport { BatchTextureArray };\n//# sourceMappingURL=BatchTextureArray.mjs.map\n","class ObjectRenderer {\n constructor(renderer) {\n this.renderer = renderer;\n }\n flush() {\n }\n destroy() {\n this.renderer = null;\n }\n start() {\n }\n stop() {\n this.flush();\n }\n render(_object) {\n }\n}\n\nexport { ObjectRenderer };\n//# sourceMappingURL=ObjectRenderer.mjs.map\n","import { Color } from '@pixi/color';\nimport { ENV } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\nimport { deprecation, premultiplyBlendMode, nextPow2, log2 } from '@pixi/utils';\nimport { ViewableBuffer } from '../geometry/ViewableBuffer.mjs';\nimport { checkMaxIfStatementsInShader } from '../shader/utils/checkMaxIfStatementsInShader.mjs';\nimport { State } from '../state/State.mjs';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { BatchDrawCall } from './BatchDrawCall.mjs';\nimport { BatchGeometry } from './BatchGeometry.mjs';\nimport { BatchShaderGenerator } from './BatchShaderGenerator.mjs';\nimport { BatchTextureArray } from './BatchTextureArray.mjs';\nimport { canUploadSameBuffer } from './canUploadSameBuffer.mjs';\nimport { maxRecommendedTextures } from './maxRecommendedTextures.mjs';\nimport { ObjectRenderer } from './ObjectRenderer.mjs';\nimport defaultFragment from './texture.mjs';\nimport defaultVertex from './texture2.mjs';\n\nconst _BatchRenderer = class extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n this.setShaderGenerator();\n this.geometryClass = BatchGeometry;\n this.vertexSize = 6;\n this.state = State.for2d();\n this.size = _BatchRenderer.defaultBatchSize * 4;\n this._vertexCount = 0;\n this._indexCount = 0;\n this._bufferedElements = [];\n this._bufferedTextures = [];\n this._bufferSize = 0;\n this._shader = null;\n this._packedGeometries = [];\n this._packedGeometryPoolSize = 2;\n this._flushId = 0;\n this._aBuffers = {};\n this._iBuffers = {};\n this.maxTextures = 1;\n this.renderer.on(\"prerender\", this.onPrerender, this);\n renderer.runners.contextChange.add(this);\n this._dcIndex = 0;\n this._aIndex = 0;\n this._iIndex = 0;\n this._attributeBuffer = null;\n this._indexBuffer = null;\n this._tempBoundTextures = [];\n }\n static get defaultMaxTextures() {\n this._defaultMaxTextures = this._defaultMaxTextures ?? maxRecommendedTextures(32);\n return this._defaultMaxTextures;\n }\n static set defaultMaxTextures(value) {\n this._defaultMaxTextures = value;\n }\n static get canUploadSameBuffer() {\n this._canUploadSameBuffer = this._canUploadSameBuffer ?? canUploadSameBuffer();\n return this._canUploadSameBuffer;\n }\n static set canUploadSameBuffer(value) {\n this._canUploadSameBuffer = value;\n }\n get MAX_TEXTURES() {\n deprecation(\"7.1.0\", \"BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures\");\n return this.maxTextures;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentTemplate() {\n return defaultFragment;\n }\n setShaderGenerator({\n vertex = _BatchRenderer.defaultVertexSrc,\n fragment = _BatchRenderer.defaultFragmentTemplate\n } = {}) {\n this.shaderGenerator = new BatchShaderGenerator(vertex, fragment);\n }\n contextChange() {\n const gl = this.renderer.gl;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n this.maxTextures = 1;\n } else {\n this.maxTextures = Math.min(gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS), _BatchRenderer.defaultMaxTextures);\n this.maxTextures = checkMaxIfStatementsInShader(this.maxTextures, gl);\n }\n this._shader = this.shaderGenerator.generateShader(this.maxTextures);\n for (let i = 0; i < this._packedGeometryPoolSize; i++) {\n this._packedGeometries[i] = new this.geometryClass();\n }\n this.initFlushBuffers();\n }\n initFlushBuffers() {\n const {\n _drawCallPool,\n _textureArrayPool\n } = _BatchRenderer;\n const MAX_SPRITES = this.size / 4;\n const MAX_TA = Math.floor(MAX_SPRITES / this.maxTextures) + 1;\n while (_drawCallPool.length < MAX_SPRITES) {\n _drawCallPool.push(new BatchDrawCall());\n }\n while (_textureArrayPool.length < MAX_TA) {\n _textureArrayPool.push(new BatchTextureArray());\n }\n for (let i = 0; i < this.maxTextures; i++) {\n this._tempBoundTextures[i] = null;\n }\n }\n onPrerender() {\n this._flushId = 0;\n }\n render(element) {\n if (!element._texture.valid) {\n return;\n }\n if (this._vertexCount + element.vertexData.length / 2 > this.size) {\n this.flush();\n }\n this._vertexCount += element.vertexData.length / 2;\n this._indexCount += element.indices.length;\n this._bufferedTextures[this._bufferSize] = element._texture.baseTexture;\n this._bufferedElements[this._bufferSize++] = element;\n }\n buildTexturesAndDrawCalls() {\n const {\n _bufferedTextures: textures,\n maxTextures\n } = this;\n const textureArrays = _BatchRenderer._textureArrayPool;\n const batch = this.renderer.batch;\n const boundTextures = this._tempBoundTextures;\n const touch = this.renderer.textureGC.count;\n let TICK = ++BaseTexture._globalBatch;\n let countTexArrays = 0;\n let texArray = textureArrays[0];\n let start = 0;\n batch.copyBoundTextures(boundTextures, maxTextures);\n for (let i = 0; i < this._bufferSize; ++i) {\n const tex = textures[i];\n textures[i] = null;\n if (tex._batchEnabled === TICK) {\n continue;\n }\n if (texArray.count >= maxTextures) {\n batch.boundArray(texArray, boundTextures, TICK, maxTextures);\n this.buildDrawCalls(texArray, start, i);\n start = i;\n texArray = textureArrays[++countTexArrays];\n ++TICK;\n }\n tex._batchEnabled = TICK;\n tex.touched = touch;\n texArray.elements[texArray.count++] = tex;\n }\n if (texArray.count > 0) {\n batch.boundArray(texArray, boundTextures, TICK, maxTextures);\n this.buildDrawCalls(texArray, start, this._bufferSize);\n ++countTexArrays;\n ++TICK;\n }\n for (let i = 0; i < boundTextures.length; i++) {\n boundTextures[i] = null;\n }\n BaseTexture._globalBatch = TICK;\n }\n buildDrawCalls(texArray, start, finish) {\n const {\n _bufferedElements: elements,\n _attributeBuffer,\n _indexBuffer,\n vertexSize\n } = this;\n const drawCalls = _BatchRenderer._drawCallPool;\n let dcIndex = this._dcIndex;\n let aIndex = this._aIndex;\n let iIndex = this._iIndex;\n let drawCall = drawCalls[dcIndex];\n drawCall.start = this._iIndex;\n drawCall.texArray = texArray;\n for (let i = start; i < finish; ++i) {\n const sprite = elements[i];\n const tex = sprite._texture.baseTexture;\n const spriteBlendMode = premultiplyBlendMode[tex.alphaMode ? 1 : 0][sprite.blendMode];\n elements[i] = null;\n if (start < i && drawCall.blend !== spriteBlendMode) {\n drawCall.size = iIndex - drawCall.start;\n start = i;\n drawCall = drawCalls[++dcIndex];\n drawCall.texArray = texArray;\n drawCall.start = iIndex;\n }\n this.packInterleavedGeometry(sprite, _attributeBuffer, _indexBuffer, aIndex, iIndex);\n aIndex += sprite.vertexData.length / 2 * vertexSize;\n iIndex += sprite.indices.length;\n drawCall.blend = spriteBlendMode;\n }\n if (start < finish) {\n drawCall.size = iIndex - drawCall.start;\n ++dcIndex;\n }\n this._dcIndex = dcIndex;\n this._aIndex = aIndex;\n this._iIndex = iIndex;\n }\n bindAndClearTexArray(texArray) {\n const textureSystem = this.renderer.texture;\n for (let j = 0; j < texArray.count; j++) {\n textureSystem.bind(texArray.elements[j], texArray.ids[j]);\n texArray.elements[j] = null;\n }\n texArray.count = 0;\n }\n updateGeometry() {\n const {\n _packedGeometries: packedGeometries,\n _attributeBuffer: attributeBuffer,\n _indexBuffer: indexBuffer\n } = this;\n if (!_BatchRenderer.canUploadSameBuffer) {\n if (this._packedGeometryPoolSize <= this._flushId) {\n this._packedGeometryPoolSize++;\n packedGeometries[this._flushId] = new this.geometryClass();\n }\n packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData);\n packedGeometries[this._flushId]._indexBuffer.update(indexBuffer);\n this.renderer.geometry.bind(packedGeometries[this._flushId]);\n this.renderer.geometry.updateBuffers();\n this._flushId++;\n } else {\n packedGeometries[this._flushId]._buffer.update(attributeBuffer.rawBinaryData);\n packedGeometries[this._flushId]._indexBuffer.update(indexBuffer);\n this.renderer.geometry.updateBuffers();\n }\n }\n drawBatches() {\n const dcCount = this._dcIndex;\n const { gl, state: stateSystem } = this.renderer;\n const drawCalls = _BatchRenderer._drawCallPool;\n let curTexArray = null;\n for (let i = 0; i < dcCount; i++) {\n const { texArray, type, size, start, blend } = drawCalls[i];\n if (curTexArray !== texArray) {\n curTexArray = texArray;\n this.bindAndClearTexArray(texArray);\n }\n this.state.blendMode = blend;\n stateSystem.set(this.state);\n gl.drawElements(type, size, gl.UNSIGNED_SHORT, start * 2);\n }\n }\n flush() {\n if (this._vertexCount === 0) {\n return;\n }\n this._attributeBuffer = this.getAttributeBuffer(this._vertexCount);\n this._indexBuffer = this.getIndexBuffer(this._indexCount);\n this._aIndex = 0;\n this._iIndex = 0;\n this._dcIndex = 0;\n this.buildTexturesAndDrawCalls();\n this.updateGeometry();\n this.drawBatches();\n this._bufferSize = 0;\n this._vertexCount = 0;\n this._indexCount = 0;\n }\n start() {\n this.renderer.state.set(this.state);\n this.renderer.texture.ensureSamplerType(this.maxTextures);\n this.renderer.shader.bind(this._shader);\n if (_BatchRenderer.canUploadSameBuffer) {\n this.renderer.geometry.bind(this._packedGeometries[this._flushId]);\n }\n }\n stop() {\n this.flush();\n }\n destroy() {\n for (let i = 0; i < this._packedGeometryPoolSize; i++) {\n if (this._packedGeometries[i]) {\n this._packedGeometries[i].destroy();\n }\n }\n this.renderer.off(\"prerender\", this.onPrerender, this);\n this._aBuffers = null;\n this._iBuffers = null;\n this._packedGeometries = null;\n this._attributeBuffer = null;\n this._indexBuffer = null;\n if (this._shader) {\n this._shader.destroy();\n this._shader = null;\n }\n super.destroy();\n }\n getAttributeBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 8));\n const roundedSizeIndex = log2(roundedP2);\n const roundedSize = roundedP2 * 8;\n if (this._aBuffers.length <= roundedSizeIndex) {\n this._iBuffers.length = roundedSizeIndex + 1;\n }\n let buffer = this._aBuffers[roundedSize];\n if (!buffer) {\n this._aBuffers[roundedSize] = buffer = new ViewableBuffer(roundedSize * this.vertexSize * 4);\n }\n return buffer;\n }\n getIndexBuffer(size) {\n const roundedP2 = nextPow2(Math.ceil(size / 12));\n const roundedSizeIndex = log2(roundedP2);\n const roundedSize = roundedP2 * 12;\n if (this._iBuffers.length <= roundedSizeIndex) {\n this._iBuffers.length = roundedSizeIndex + 1;\n }\n let buffer = this._iBuffers[roundedSizeIndex];\n if (!buffer) {\n this._iBuffers[roundedSizeIndex] = buffer = new Uint16Array(roundedSize);\n }\n return buffer;\n }\n packInterleavedGeometry(element, attributeBuffer, indexBuffer, aIndex, iIndex) {\n const {\n uint32View,\n float32View\n } = attributeBuffer;\n const packedVertices = aIndex / this.vertexSize;\n const uvs = element.uvs;\n const indicies = element.indices;\n const vertexData = element.vertexData;\n const textureId = element._texture.baseTexture._batchLocation;\n const alpha = Math.min(element.worldAlpha, 1);\n const argb = Color.shared.setValue(element._tintRGB).toPremultiplied(alpha, element._texture.baseTexture.alphaMode > 0);\n for (let i = 0; i < vertexData.length; i += 2) {\n float32View[aIndex++] = vertexData[i];\n float32View[aIndex++] = vertexData[i + 1];\n float32View[aIndex++] = uvs[i];\n float32View[aIndex++] = uvs[i + 1];\n uint32View[aIndex++] = argb;\n float32View[aIndex++] = textureId;\n }\n for (let i = 0; i < indicies.length; i++) {\n indexBuffer[iIndex++] = packedVertices + indicies[i];\n }\n }\n};\nlet BatchRenderer = _BatchRenderer;\nBatchRenderer.defaultBatchSize = 4096;\nBatchRenderer.extension = {\n name: \"batch\",\n type: ExtensionType.RendererPlugin\n};\nBatchRenderer._drawCallPool = [];\nBatchRenderer._textureArrayPool = [];\nextensions.add(BatchRenderer);\n\nexport { BatchRenderer };\n//# sourceMappingURL=BatchRenderer.mjs.map\n","import { settings, isMobile } from '@pixi/settings';\n\nfunction maxRecommendedTextures(max) {\n let allowMax = true;\n const navigator = settings.ADAPTER.getNavigator();\n if (isMobile.tablet || isMobile.phone) {\n if (isMobile.apple.device) {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)?/);\n if (match) {\n const majorVersion = parseInt(match[1], 10);\n if (majorVersion < 11) {\n allowMax = false;\n }\n }\n }\n if (isMobile.android.device) {\n const match = navigator.userAgent.match(/Android\\s([0-9.]*)/);\n if (match) {\n const majorVersion = parseInt(match[1], 10);\n if (majorVersion < 7) {\n allowMax = false;\n }\n }\n }\n }\n return allowMax ? max : 4;\n}\n\nexport { maxRecommendedTextures };\n//# sourceMappingURL=maxRecommendedTextures.mjs.map\n","import { isMobile } from '@pixi/settings';\n\nfunction canUploadSameBuffer() {\n return !isMobile.apple.device;\n}\n\nexport { canUploadSameBuffer };\n//# sourceMappingURL=canUploadSameBuffer.mjs.map\n","var defaultVertex = \"precision highp float;\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\nattribute float aTextureId;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform vec4 tint;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying float vTextureId;\\n\\nvoid main(void){\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vTextureId = aTextureId;\\n vColor = aColor * tint;\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=texture2.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\nvarying vec4 vColor;\\nvarying float vTextureId;\\nuniform sampler2D uSamplers[%count%];\\n\\nvoid main(void){\\n vec4 color;\\n %forloop%\\n gl_FragColor = color * vColor;\\n}\\n\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=texture.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\nimport { Program } from '../shader/Program.mjs';\nimport { Shader } from '../shader/Shader.mjs';\nimport { State } from '../state/State.mjs';\nimport defaultFragment from './defaultFilter.mjs';\nimport defaultVertex from './defaultFilter2.mjs';\n\nconst _Filter = class extends Shader {\n constructor(vertexSrc, fragmentSrc, uniforms) {\n const program = Program.from(vertexSrc || _Filter.defaultVertexSrc, fragmentSrc || _Filter.defaultFragmentSrc);\n super(program, uniforms);\n this.padding = 0;\n this.resolution = _Filter.defaultResolution;\n this.multisample = _Filter.defaultMultisample;\n this.enabled = true;\n this.autoFit = true;\n this.state = new State();\n }\n apply(filterManager, input, output, clearMode, _currentState) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n get blendMode() {\n return this.state.blendMode;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._resolution = value;\n }\n static get defaultVertexSrc() {\n return defaultVertex;\n }\n static get defaultFragmentSrc() {\n return defaultFragment;\n }\n};\nlet Filter = _Filter;\nFilter.defaultResolution = 1;\nFilter.defaultMultisample = MSAA_QUALITY.NONE;\n\nexport { Filter };\n//# sourceMappingURL=Filter.mjs.map\n","var defaultVertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition();\\n vTextureCoord = filterTextureCoord();\\n}\\n\";\n\nexport { defaultVertex as default };\n//# sourceMappingURL=defaultFilter2.mjs.map\n","var defaultFragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n gl_FragColor = texture2D(uSampler, vTextureCoord);\\n}\\n\";\n\nexport { defaultFragment as default };\n//# sourceMappingURL=defaultFilter.mjs.map\n","import { Color } from '@pixi/color';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass BackgroundSystem {\n constructor() {\n this.clearBeforeRender = true;\n this._backgroundColor = new Color(0);\n this.alpha = 1;\n }\n init(options) {\n this.clearBeforeRender = options.clearBeforeRender;\n const { backgroundColor, background, backgroundAlpha } = options;\n const color = background ?? backgroundColor;\n if (color !== void 0) {\n this.color = color;\n }\n this.alpha = backgroundAlpha;\n }\n get color() {\n return this._backgroundColor.value;\n }\n set color(value) {\n this._backgroundColor.setValue(value);\n }\n get alpha() {\n return this._backgroundColor.alpha;\n }\n set alpha(value) {\n this._backgroundColor.setAlpha(value);\n }\n get backgroundColor() {\n return this._backgroundColor;\n }\n destroy() {\n }\n}\nBackgroundSystem.defaultOptions = {\n backgroundAlpha: 1,\n backgroundColor: 0,\n clearBeforeRender: true\n};\nBackgroundSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"background\"\n};\nextensions.add(BackgroundSystem);\n\nexport { BackgroundSystem };\n//# sourceMappingURL=BackgroundSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { ObjectRenderer } from './ObjectRenderer.mjs';\n\nclass BatchSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.emptyRenderer = new ObjectRenderer(renderer);\n this.currentRenderer = this.emptyRenderer;\n }\n setObjectRenderer(objectRenderer) {\n if (this.currentRenderer === objectRenderer) {\n return;\n }\n this.currentRenderer.stop();\n this.currentRenderer = objectRenderer;\n this.currentRenderer.start();\n }\n flush() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n reset() {\n this.setObjectRenderer(this.emptyRenderer);\n }\n copyBoundTextures(arr, maxTextures) {\n const { boundTextures } = this.renderer.texture;\n for (let i = maxTextures - 1; i >= 0; --i) {\n arr[i] = boundTextures[i] || null;\n if (arr[i]) {\n arr[i]._batchLocation = i;\n }\n }\n }\n boundArray(texArray, boundTextures, batchId, maxTextures) {\n const { elements, ids, count } = texArray;\n let j = 0;\n for (let i = 0; i < count; i++) {\n const tex = elements[i];\n const loc = tex._batchLocation;\n if (loc >= 0 && loc < maxTextures && boundTextures[loc] === tex) {\n ids[i] = loc;\n continue;\n }\n while (j < maxTextures) {\n const bound = boundTextures[j];\n if (bound && bound._batchEnabled === batchId && bound._batchLocation === j) {\n j++;\n continue;\n }\n ids[i] = j;\n tex._batchLocation = j;\n boundTextures[j] = tex;\n break;\n }\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nBatchSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"batch\"\n};\nextensions.add(BatchSystem);\n\nexport { BatchSystem };\n//# sourceMappingURL=BatchSystem.mjs.map\n","import { ENV } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nlet CONTEXT_UID_COUNTER = 0;\nclass ContextSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.webGLVersion = 1;\n this.extensions = {};\n this.supports = {\n uint32Indices: false\n };\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n contextChange(gl) {\n this.gl = gl;\n this.renderer.gl = gl;\n this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n }\n init(options) {\n if (options.context) {\n this.initFromContext(options.context);\n } else {\n const alpha = this.renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha;\n this.preserveDrawingBuffer = options.preserveDrawingBuffer;\n this.useContextAlpha = options.useContextAlpha;\n this.powerPreference = options.powerPreference;\n this.initFromOptions({\n alpha,\n premultipliedAlpha,\n antialias: options.antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference\n });\n }\n }\n initFromContext(gl) {\n this.gl = gl;\n this.validateContext(gl);\n this.renderer.gl = gl;\n this.renderer.CONTEXT_UID = CONTEXT_UID_COUNTER++;\n this.renderer.runners.contextChange.emit(gl);\n const view = this.renderer.view;\n if (view.addEventListener !== void 0) {\n view.addEventListener(\"webglcontextlost\", this.handleContextLost, false);\n view.addEventListener(\"webglcontextrestored\", this.handleContextRestored, false);\n }\n }\n initFromOptions(options) {\n const gl = this.createContext(this.renderer.view, options);\n this.initFromContext(gl);\n }\n createContext(canvas, options) {\n let gl;\n if (settings.PREFER_ENV >= ENV.WEBGL2) {\n gl = canvas.getContext(\"webgl2\", options);\n }\n if (gl) {\n this.webGLVersion = 2;\n } else {\n this.webGLVersion = 1;\n gl = canvas.getContext(\"webgl\", options) || canvas.getContext(\"experimental-webgl\", options);\n if (!gl) {\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n }\n }\n this.gl = gl;\n this.getExtensions();\n return this.gl;\n }\n getExtensions() {\n const { gl } = this;\n const common = {\n loseContext: gl.getExtension(\"WEBGL_lose_context\"),\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n if (this.webGLVersion === 1) {\n Object.assign(this.extensions, common, {\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\")\n });\n } else if (this.webGLVersion === 2) {\n Object.assign(this.extensions, common, {\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n });\n }\n }\n handleContextLost(event) {\n event.preventDefault();\n setTimeout(() => {\n if (this.gl.isContextLost() && this.extensions.loseContext) {\n this.extensions.loseContext.restoreContext();\n }\n }, 0);\n }\n handleContextRestored() {\n this.renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const view = this.renderer.view;\n this.renderer = null;\n if (view.removeEventListener !== void 0) {\n view.removeEventListener(\"webglcontextlost\", this.handleContextLost);\n view.removeEventListener(\"webglcontextrestored\", this.handleContextRestored);\n }\n this.gl.useProgram(null);\n if (this.extensions.loseContext) {\n this.extensions.loseContext.loseContext();\n }\n }\n postrender() {\n if (this.renderer.objectRenderer.renderingToScreen) {\n this.gl.flush();\n }\n }\n validateContext(gl) {\n const attributes = gl.getContextAttributes();\n const isWebGl2 = \"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext;\n if (isWebGl2) {\n this.webGLVersion = 2;\n }\n if (attributes && !attributes.stencil) {\n console.warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n }\n const hasuint32 = isWebGl2 || !!gl.getExtension(\"OES_element_index_uint\");\n this.supports.uint32Indices = hasuint32;\n if (!hasuint32) {\n console.warn(\"Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly\");\n }\n }\n}\nContextSystem.defaultOptions = {\n context: null,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"default\"\n};\nContextSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"context\"\n};\nextensions.add(ContextSystem);\n\nexport { ContextSystem };\n//# sourceMappingURL=ContextSystem.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { BufferResource } from './BufferResource.mjs';\n\nclass DepthResource extends BufferResource {\n upload(renderer, baseTexture, glTexture) {\n const gl = renderer.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n if (glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(baseTexture.target, 0, 0, 0, width, height, baseTexture.format, glTexture.type, this.data);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, width, height, 0, baseTexture.format, glTexture.type, this.data);\n }\n return true;\n }\n}\n\nexport { DepthResource };\n//# sourceMappingURL=DepthResource.mjs.map\n","import { MSAA_QUALITY, SCALE_MODES, MIPMAP_MODES, FORMATS, TYPES } from '@pixi/constants';\nimport { Runner } from '@pixi/runner';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\nimport { DepthResource } from '../textures/resources/DepthResource.mjs';\n\nclass Framebuffer {\n constructor(width, height) {\n this.width = Math.round(width || 100);\n this.height = Math.round(height || 100);\n this.stencil = false;\n this.depth = false;\n this.dirtyId = 0;\n this.dirtyFormat = 0;\n this.dirtySize = 0;\n this.depthTexture = null;\n this.colorTextures = [];\n this.glFramebuffers = {};\n this.disposeRunner = new Runner(\"disposeFramebuffer\");\n this.multisample = MSAA_QUALITY.NONE;\n }\n get colorTexture() {\n return this.colorTextures[0];\n }\n addColorTexture(index = 0, texture) {\n this.colorTextures[index] = texture || new BaseTexture(null, {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n mipmap: MIPMAP_MODES.OFF,\n width: this.width,\n height: this.height\n });\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n addDepthTexture(texture) {\n this.depthTexture = texture || new BaseTexture(new DepthResource(null, { width: this.width, height: this.height }), {\n scaleMode: SCALE_MODES.NEAREST,\n resolution: 1,\n width: this.width,\n height: this.height,\n mipmap: MIPMAP_MODES.OFF,\n format: FORMATS.DEPTH_COMPONENT,\n type: TYPES.UNSIGNED_SHORT\n });\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n enableDepth() {\n this.depth = true;\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n enableStencil() {\n this.stencil = true;\n this.dirtyId++;\n this.dirtyFormat++;\n return this;\n }\n resize(width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width === this.width && height === this.height)\n return;\n this.width = width;\n this.height = height;\n this.dirtyId++;\n this.dirtySize++;\n for (let i = 0; i < this.colorTextures.length; i++) {\n const texture = this.colorTextures[i];\n const resolution = texture.resolution;\n texture.setSize(width / resolution, height / resolution);\n }\n if (this.depthTexture) {\n const resolution = this.depthTexture.resolution;\n this.depthTexture.setSize(width / resolution, height / resolution);\n }\n }\n dispose() {\n this.disposeRunner.emit(this, false);\n }\n destroyDepthTexture() {\n if (this.depthTexture) {\n this.depthTexture.destroy();\n this.depthTexture = null;\n ++this.dirtyId;\n ++this.dirtyFormat;\n }\n }\n}\n\nexport { Framebuffer };\n//# sourceMappingURL=Framebuffer.mjs.map\n","import { Color } from '@pixi/color';\nimport { MSAA_QUALITY, MIPMAP_MODES } from '@pixi/constants';\nimport { Framebuffer } from '../framebuffer/Framebuffer.mjs';\nimport { BaseTexture } from '../textures/BaseTexture.mjs';\n\nclass BaseRenderTexture extends BaseTexture {\n constructor(options = {}) {\n if (typeof options === \"number\") {\n const width = arguments[0];\n const height = arguments[1];\n const scaleMode = arguments[2];\n const resolution = arguments[3];\n options = { width, height, scaleMode, resolution };\n }\n options.width = options.width || 100;\n options.height = options.height || 100;\n options.multisample ?? (options.multisample = MSAA_QUALITY.NONE);\n super(null, options);\n this.mipmap = MIPMAP_MODES.OFF;\n this.valid = true;\n this._clear = new Color([0, 0, 0, 0]);\n this.framebuffer = new Framebuffer(this.realWidth, this.realHeight).addColorTexture(0, this);\n this.framebuffer.multisample = options.multisample;\n this.maskStack = [];\n this.filterStack = [{}];\n }\n set clearColor(value) {\n this._clear.setValue(value);\n }\n get clearColor() {\n return this._clear.value;\n }\n get clear() {\n return this._clear;\n }\n resize(desiredWidth, desiredHeight) {\n this.framebuffer.resize(desiredWidth * this.resolution, desiredHeight * this.resolution);\n this.setRealSize(this.framebuffer.width, this.framebuffer.height);\n }\n dispose() {\n this.framebuffer.dispose();\n super.dispose();\n }\n destroy() {\n super.destroy();\n this.framebuffer.destroyDepthTexture();\n this.framebuffer = null;\n }\n}\n\nexport { BaseRenderTexture };\n//# sourceMappingURL=BaseRenderTexture.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { determineCrossOrigin } from '@pixi/utils';\nimport { Resource } from './Resource.mjs';\n\nclass BaseImageResource extends Resource {\n constructor(source) {\n const sourceAny = source;\n const width = sourceAny.naturalWidth || sourceAny.videoWidth || sourceAny.width;\n const height = sourceAny.naturalHeight || sourceAny.videoHeight || sourceAny.height;\n super(width, height);\n this.source = source;\n this.noSubImage = false;\n }\n static crossOrigin(element, url, crossorigin) {\n if (crossorigin === void 0 && !url.startsWith(\"data:\")) {\n element.crossOrigin = determineCrossOrigin(url);\n } else if (crossorigin !== false) {\n element.crossOrigin = typeof crossorigin === \"string\" ? crossorigin : \"anonymous\";\n }\n }\n upload(renderer, baseTexture, glTexture, source) {\n const gl = renderer.gl;\n const width = baseTexture.realWidth;\n const height = baseTexture.realHeight;\n source = source || this.source;\n if (typeof HTMLImageElement !== \"undefined\" && source instanceof HTMLImageElement) {\n if (!source.complete || source.naturalWidth === 0) {\n return false;\n }\n } else if (typeof HTMLVideoElement !== \"undefined\" && source instanceof HTMLVideoElement) {\n if (source.readyState <= 1 && source.buffered.length === 0) {\n return false;\n }\n }\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK);\n if (!this.noSubImage && baseTexture.target === gl.TEXTURE_2D && glTexture.width === width && glTexture.height === height) {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, baseTexture.format, glTexture.type, source);\n } else {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(baseTexture.target, 0, glTexture.internalFormat, baseTexture.format, glTexture.type, source);\n }\n return true;\n }\n update() {\n if (this.destroyed) {\n return;\n }\n const source = this.source;\n const width = source.naturalWidth || source.videoWidth || source.width;\n const height = source.naturalHeight || source.videoHeight || source.height;\n this.resize(width, height);\n super.update();\n }\n dispose() {\n this.source = null;\n }\n}\n\nexport { BaseImageResource };\n//# sourceMappingURL=BaseImageResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nclass ImageResource extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n if (typeof source === \"string\") {\n const imageElement = new Image();\n BaseImageResource.crossOrigin(imageElement, source, options.crossorigin);\n imageElement.src = source;\n source = imageElement;\n }\n super(source);\n if (!source.complete && !!this._width && !!this._height) {\n this._width = 0;\n this._height = 0;\n }\n this.url = source.src;\n this._process = null;\n this.preserveBitmap = false;\n this.createBitmap = (options.createBitmap ?? settings.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap;\n this.alphaMode = typeof options.alphaMode === \"number\" ? options.alphaMode : null;\n this.bitmap = null;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load(createBitmap) {\n if (this._load) {\n return this._load;\n }\n if (createBitmap !== void 0) {\n this.createBitmap = createBitmap;\n }\n this._load = new Promise((resolve, reject) => {\n const source = this.source;\n this.url = source.src;\n const completed = () => {\n if (this.destroyed) {\n return;\n }\n source.onload = null;\n source.onerror = null;\n this.resize(source.width, source.height);\n this._load = null;\n if (this.createBitmap) {\n resolve(this.process());\n } else {\n resolve(this);\n }\n };\n if (source.complete && source.src) {\n completed();\n } else {\n source.onload = completed;\n source.onerror = (event) => {\n reject(event);\n this.onError.emit(event);\n };\n }\n });\n return this._load;\n }\n process() {\n const source = this.source;\n if (this._process !== null) {\n return this._process;\n }\n if (this.bitmap !== null || !globalThis.createImageBitmap) {\n return Promise.resolve(this);\n }\n const createImageBitmap = globalThis.createImageBitmap;\n const cors = !source.crossOrigin || source.crossOrigin === \"anonymous\";\n this._process = fetch(source.src, {\n mode: cors ? \"cors\" : \"no-cors\"\n }).then((r) => r.blob()).then((blob) => createImageBitmap(blob, 0, 0, source.width, source.height, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n })).then((bitmap) => {\n if (this.destroyed) {\n return Promise.reject();\n }\n this.bitmap = bitmap;\n this.update();\n this._process = null;\n return Promise.resolve(this);\n });\n return this._process;\n }\n upload(renderer, baseTexture, glTexture) {\n if (typeof this.alphaMode === \"number\") {\n baseTexture.alphaMode = this.alphaMode;\n }\n if (!this.createBitmap) {\n return super.upload(renderer, baseTexture, glTexture);\n }\n if (!this.bitmap) {\n this.process();\n if (!this.bitmap) {\n return false;\n }\n }\n super.upload(renderer, baseTexture, glTexture, this.bitmap);\n if (!this.preserveBitmap) {\n let flag = true;\n const glTextures = baseTexture._glTextures;\n for (const key in glTextures) {\n const otherTex = glTextures[key];\n if (otherTex !== glTexture && otherTex.dirtyId !== baseTexture.dirtyId) {\n flag = false;\n break;\n }\n }\n if (flag) {\n if (this.bitmap.close) {\n this.bitmap.close();\n }\n this.bitmap = null;\n }\n }\n return true;\n }\n dispose() {\n this.source.onload = null;\n this.source.onerror = null;\n super.dispose();\n if (this.bitmap) {\n this.bitmap.close();\n this.bitmap = null;\n }\n this._process = null;\n this._load = null;\n }\n static test(source) {\n return typeof HTMLImageElement !== \"undefined\" && (typeof source === \"string\" || source instanceof HTMLImageElement);\n }\n}\n\nexport { ImageResource };\n//# sourceMappingURL=ImageResource.mjs.map\n","import { groupD8 } from '@pixi/math';\n\nclass TextureUvs {\n constructor() {\n this.x0 = 0;\n this.y0 = 0;\n this.x1 = 1;\n this.y1 = 0;\n this.x2 = 1;\n this.y2 = 1;\n this.x3 = 0;\n this.y3 = 1;\n this.uvsFloat32 = new Float32Array(8);\n }\n set(frame, baseFrame, rotate) {\n const tw = baseFrame.width;\n const th = baseFrame.height;\n if (rotate) {\n const w2 = frame.width / 2 / tw;\n const h2 = frame.height / 2 / th;\n const cX = frame.x / tw + w2;\n const cY = frame.y / th + h2;\n rotate = groupD8.add(rotate, groupD8.NW);\n this.x0 = cX + w2 * groupD8.uX(rotate);\n this.y0 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x1 = cX + w2 * groupD8.uX(rotate);\n this.y1 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x2 = cX + w2 * groupD8.uX(rotate);\n this.y2 = cY + h2 * groupD8.uY(rotate);\n rotate = groupD8.add(rotate, 2);\n this.x3 = cX + w2 * groupD8.uX(rotate);\n this.y3 = cY + h2 * groupD8.uY(rotate);\n } else {\n this.x0 = frame.x / tw;\n this.y0 = frame.y / th;\n this.x1 = (frame.x + frame.width) / tw;\n this.y1 = frame.y / th;\n this.x2 = (frame.x + frame.width) / tw;\n this.y2 = (frame.y + frame.height) / th;\n this.x3 = frame.x / tw;\n this.y3 = (frame.y + frame.height) / th;\n }\n this.uvsFloat32[0] = this.x0;\n this.uvsFloat32[1] = this.y0;\n this.uvsFloat32[2] = this.x1;\n this.uvsFloat32[3] = this.y1;\n this.uvsFloat32[4] = this.x2;\n this.uvsFloat32[5] = this.y2;\n this.uvsFloat32[6] = this.x3;\n this.uvsFloat32[7] = this.y3;\n }\n toString() {\n return `[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`;\n }\n}\n\nexport { TextureUvs };\n//# sourceMappingURL=TextureUvs.mjs.map\n","import { Rectangle, Point } from '@pixi/math';\nimport { settings } from '@pixi/settings';\nimport { EventEmitter, TextureCache, uid, getResolutionOfUrl } from '@pixi/utils';\nimport { BaseTexture } from './BaseTexture.mjs';\nimport { ImageResource } from './resources/ImageResource.mjs';\nimport { TextureUvs } from './TextureUvs.mjs';\n\nconst DEFAULT_UVS = new TextureUvs();\nfunction removeAllHandlers(tex) {\n tex.destroy = function _emptyDestroy() {\n };\n tex.on = function _emptyOn() {\n };\n tex.once = function _emptyOnce() {\n };\n tex.emit = function _emptyEmit() {\n };\n}\nclass Texture extends EventEmitter {\n constructor(baseTexture, frame, orig, trim, rotate, anchor, borders) {\n super();\n this.noFrame = false;\n if (!frame) {\n this.noFrame = true;\n frame = new Rectangle(0, 0, 1, 1);\n }\n if (baseTexture instanceof Texture) {\n baseTexture = baseTexture.baseTexture;\n }\n this.baseTexture = baseTexture;\n this._frame = frame;\n this.trim = trim;\n this.valid = false;\n this._uvs = DEFAULT_UVS;\n this.uvMatrix = null;\n this.orig = orig || frame;\n this._rotate = Number(rotate || 0);\n if (rotate === true) {\n this._rotate = 2;\n } else if (this._rotate % 2 !== 0) {\n throw new Error(\"attempt to use diamond-shaped UVs. If you are sure, set rotation manually\");\n }\n this.defaultAnchor = anchor ? new Point(anchor.x, anchor.y) : new Point(0, 0);\n this.defaultBorders = borders;\n this._updateID = 0;\n this.textureCacheIds = [];\n if (!baseTexture.valid) {\n baseTexture.once(\"loaded\", this.onBaseTextureUpdated, this);\n } else if (this.noFrame) {\n if (baseTexture.valid) {\n this.onBaseTextureUpdated(baseTexture);\n }\n } else {\n this.frame = frame;\n }\n if (this.noFrame) {\n baseTexture.on(\"update\", this.onBaseTextureUpdated, this);\n }\n }\n update() {\n if (this.baseTexture.resource) {\n this.baseTexture.resource.update();\n }\n }\n onBaseTextureUpdated(baseTexture) {\n if (this.noFrame) {\n if (!this.baseTexture.valid) {\n return;\n }\n this._frame.width = baseTexture.width;\n this._frame.height = baseTexture.height;\n this.valid = true;\n this.updateUvs();\n } else {\n this.frame = this._frame;\n }\n this.emit(\"update\", this);\n }\n destroy(destroyBase) {\n if (this.baseTexture) {\n if (destroyBase) {\n const { resource } = this.baseTexture;\n if (resource?.url && TextureCache[resource.url]) {\n Texture.removeFromCache(resource.url);\n }\n this.baseTexture.destroy();\n }\n this.baseTexture.off(\"loaded\", this.onBaseTextureUpdated, this);\n this.baseTexture.off(\"update\", this.onBaseTextureUpdated, this);\n this.baseTexture = null;\n }\n this._frame = null;\n this._uvs = null;\n this.trim = null;\n this.orig = null;\n this.valid = false;\n Texture.removeFromCache(this);\n this.textureCacheIds = null;\n }\n clone() {\n const clonedFrame = this._frame.clone();\n const clonedOrig = this._frame === this.orig ? clonedFrame : this.orig.clone();\n const clonedTexture = new Texture(this.baseTexture, !this.noFrame && clonedFrame, clonedOrig, this.trim?.clone(), this.rotate, this.defaultAnchor, this.defaultBorders);\n if (this.noFrame) {\n clonedTexture._frame = clonedFrame;\n }\n return clonedTexture;\n }\n updateUvs() {\n if (this._uvs === DEFAULT_UVS) {\n this._uvs = new TextureUvs();\n }\n this._uvs.set(this._frame, this.baseTexture, this.rotate);\n this._updateID++;\n }\n static from(source, options = {}, strict = settings.STRICT_TEXTURE_CACHE) {\n const isFrame = typeof source === \"string\";\n let cacheId = null;\n if (isFrame) {\n cacheId = source;\n } else if (source instanceof BaseTexture) {\n if (!source.cacheId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source.cacheId = `${prefix}-${uid()}`;\n BaseTexture.addToCache(source, source.cacheId);\n }\n cacheId = source.cacheId;\n } else {\n if (!source._pixiId) {\n const prefix = options?.pixiIdPrefix || \"pixiid\";\n source._pixiId = `${prefix}_${uid()}`;\n }\n cacheId = source._pixiId;\n }\n let texture = TextureCache[cacheId];\n if (isFrame && strict && !texture) {\n throw new Error(`The cacheId \"${cacheId}\" does not exist in TextureCache.`);\n }\n if (!texture && !(source instanceof BaseTexture)) {\n if (!options.resolution) {\n options.resolution = getResolutionOfUrl(source);\n }\n texture = new Texture(new BaseTexture(source, options));\n texture.baseTexture.cacheId = cacheId;\n BaseTexture.addToCache(texture.baseTexture, cacheId);\n Texture.addToCache(texture, cacheId);\n } else if (!texture && source instanceof BaseTexture) {\n texture = new Texture(source);\n Texture.addToCache(texture, cacheId);\n }\n return texture;\n }\n static fromURL(url, options) {\n const resourceOptions = Object.assign({ autoLoad: false }, options?.resourceOptions);\n const texture = Texture.from(url, Object.assign({ resourceOptions }, options), false);\n const resource = texture.baseTexture.resource;\n if (texture.baseTexture.valid) {\n return Promise.resolve(texture);\n }\n return resource.load().then(() => Promise.resolve(texture));\n }\n static fromBuffer(buffer, width, height, options) {\n return new Texture(BaseTexture.fromBuffer(buffer, width, height, options));\n }\n static fromLoader(source, imageUrl, name, options) {\n const baseTexture = new BaseTexture(source, Object.assign({\n scaleMode: BaseTexture.defaultOptions.scaleMode,\n resolution: getResolutionOfUrl(imageUrl)\n }, options));\n const { resource } = baseTexture;\n if (resource instanceof ImageResource) {\n resource.url = imageUrl;\n }\n const texture = new Texture(baseTexture);\n if (!name) {\n name = imageUrl;\n }\n BaseTexture.addToCache(texture.baseTexture, name);\n Texture.addToCache(texture, name);\n if (name !== imageUrl) {\n BaseTexture.addToCache(texture.baseTexture, imageUrl);\n Texture.addToCache(texture, imageUrl);\n }\n if (texture.baseTexture.valid) {\n return Promise.resolve(texture);\n }\n return new Promise((resolve) => {\n texture.baseTexture.once(\"loaded\", () => resolve(texture));\n });\n }\n static addToCache(texture, id) {\n if (id) {\n if (!texture.textureCacheIds.includes(id)) {\n texture.textureCacheIds.push(id);\n }\n if (TextureCache[id] && TextureCache[id] !== texture) {\n console.warn(`Texture added to the cache with an id [${id}] that already had an entry`);\n }\n TextureCache[id] = texture;\n }\n }\n static removeFromCache(texture) {\n if (typeof texture === \"string\") {\n const textureFromCache = TextureCache[texture];\n if (textureFromCache) {\n const index = textureFromCache.textureCacheIds.indexOf(texture);\n if (index > -1) {\n textureFromCache.textureCacheIds.splice(index, 1);\n }\n delete TextureCache[texture];\n return textureFromCache;\n }\n } else if (texture?.textureCacheIds) {\n for (let i = 0; i < texture.textureCacheIds.length; ++i) {\n if (TextureCache[texture.textureCacheIds[i]] === texture) {\n delete TextureCache[texture.textureCacheIds[i]];\n }\n }\n texture.textureCacheIds.length = 0;\n return texture;\n }\n return null;\n }\n get resolution() {\n return this.baseTexture.resolution;\n }\n get frame() {\n return this._frame;\n }\n set frame(frame) {\n this._frame = frame;\n this.noFrame = false;\n const { x, y, width, height } = frame;\n const xNotFit = x + width > this.baseTexture.width;\n const yNotFit = y + height > this.baseTexture.height;\n if (xNotFit || yNotFit) {\n const relationship = xNotFit && yNotFit ? \"and\" : \"or\";\n const errorX = `X: ${x} + ${width} = ${x + width} > ${this.baseTexture.width}`;\n const errorY = `Y: ${y} + ${height} = ${y + height} > ${this.baseTexture.height}`;\n throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${errorX} ${relationship} ${errorY}`);\n }\n this.valid = width && height && this.baseTexture.valid;\n if (!this.trim && !this.rotate) {\n this.orig = frame;\n }\n if (this.valid) {\n this.updateUvs();\n }\n }\n get rotate() {\n return this._rotate;\n }\n set rotate(rotate) {\n this._rotate = rotate;\n if (this.valid) {\n this.updateUvs();\n }\n }\n get width() {\n return this.orig.width;\n }\n get height() {\n return this.orig.height;\n }\n castToBaseTexture() {\n return this.baseTexture;\n }\n static get EMPTY() {\n if (!Texture._EMPTY) {\n Texture._EMPTY = new Texture(new BaseTexture());\n removeAllHandlers(Texture._EMPTY);\n removeAllHandlers(Texture._EMPTY.baseTexture);\n }\n return Texture._EMPTY;\n }\n static get WHITE() {\n if (!Texture._WHITE) {\n const canvas = settings.ADAPTER.createCanvas(16, 16);\n const context = canvas.getContext(\"2d\");\n canvas.width = 16;\n canvas.height = 16;\n context.fillStyle = \"white\";\n context.fillRect(0, 0, 16, 16);\n Texture._WHITE = new Texture(BaseTexture.from(canvas));\n removeAllHandlers(Texture._WHITE);\n removeAllHandlers(Texture._WHITE.baseTexture);\n }\n return Texture._WHITE;\n }\n}\n\nexport { Texture };\n//# sourceMappingURL=Texture.mjs.map\n","import { Texture } from '../textures/Texture.mjs';\nimport { BaseRenderTexture } from './BaseRenderTexture.mjs';\n\nclass RenderTexture extends Texture {\n constructor(baseRenderTexture, frame) {\n super(baseRenderTexture, frame);\n this.valid = true;\n this.filterFrame = null;\n this.filterPoolKey = null;\n this.updateUvs();\n }\n get framebuffer() {\n return this.baseTexture.framebuffer;\n }\n get multisample() {\n return this.framebuffer.multisample;\n }\n set multisample(value) {\n this.framebuffer.multisample = value;\n }\n resize(desiredWidth, desiredHeight, resizeBaseTexture = true) {\n const resolution = this.baseTexture.resolution;\n const width = Math.round(desiredWidth * resolution) / resolution;\n const height = Math.round(desiredHeight * resolution) / resolution;\n this.valid = width > 0 && height > 0;\n this._frame.width = this.orig.width = width;\n this._frame.height = this.orig.height = height;\n if (resizeBaseTexture) {\n this.baseTexture.resize(width, height);\n }\n this.updateUvs();\n }\n setResolution(resolution) {\n const { baseTexture } = this;\n if (baseTexture.resolution === resolution) {\n return;\n }\n baseTexture.setResolution(resolution);\n this.resize(baseTexture.width, baseTexture.height, false);\n }\n static create(options) {\n return new RenderTexture(new BaseRenderTexture(options));\n }\n}\n\nexport { RenderTexture };\n//# sourceMappingURL=RenderTexture.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\nimport { nextPow2 } from '@pixi/utils';\nimport { BaseRenderTexture } from './BaseRenderTexture.mjs';\nimport { RenderTexture } from './RenderTexture.mjs';\n\nclass RenderTexturePool {\n constructor(textureOptions) {\n this.texturePool = {};\n this.textureOptions = textureOptions || {};\n this.enableFullScreen = false;\n this._pixelsWidth = 0;\n this._pixelsHeight = 0;\n }\n createTexture(realWidth, realHeight, multisample = MSAA_QUALITY.NONE) {\n const baseRenderTexture = new BaseRenderTexture(Object.assign({\n width: realWidth,\n height: realHeight,\n resolution: 1,\n multisample\n }, this.textureOptions));\n return new RenderTexture(baseRenderTexture);\n }\n getOptimalTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n let key;\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n if (!this.enableFullScreen || minWidth !== this._pixelsWidth || minHeight !== this._pixelsHeight) {\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n key = ((minWidth & 65535) << 16 | minHeight & 65535) >>> 0;\n if (multisample > 1) {\n key += multisample * 4294967296;\n }\n } else {\n key = multisample > 1 ? -multisample : -1;\n }\n if (!this.texturePool[key]) {\n this.texturePool[key] = [];\n }\n let renderTexture = this.texturePool[key].pop();\n if (!renderTexture) {\n renderTexture = this.createTexture(minWidth, minHeight, multisample);\n }\n renderTexture.filterPoolKey = key;\n renderTexture.setResolution(resolution);\n return renderTexture;\n }\n getFilterTexture(input, resolution, multisample) {\n const filterTexture = this.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE);\n filterTexture.filterFrame = input.filterFrame;\n return filterTexture;\n }\n returnTexture(renderTexture) {\n const key = renderTexture.filterPoolKey;\n renderTexture.filterFrame = null;\n this.texturePool[key].push(renderTexture);\n }\n returnFilterTexture(renderTexture) {\n this.returnTexture(renderTexture);\n }\n clear(destroyTextures) {\n destroyTextures = destroyTextures !== false;\n if (destroyTextures) {\n for (const i in this.texturePool) {\n const textures = this.texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n }\n }\n this.texturePool = {};\n }\n setScreenSize(size) {\n if (size.width === this._pixelsWidth && size.height === this._pixelsHeight) {\n return;\n }\n this.enableFullScreen = size.width > 0 && size.height > 0;\n for (const i in this.texturePool) {\n if (!(Number(i) < 0)) {\n continue;\n }\n const textures = this.texturePool[i];\n if (textures) {\n for (let j = 0; j < textures.length; j++) {\n textures[j].destroy(true);\n }\n }\n this.texturePool[i] = [];\n }\n this._pixelsWidth = size.width;\n this._pixelsHeight = size.height;\n }\n}\nRenderTexturePool.SCREEN_KEY = -1;\n\nexport { RenderTexturePool };\n//# sourceMappingURL=RenderTexturePool.mjs.map\n","import { Geometry } from '../geometry/Geometry.mjs';\n\nclass Quad extends Geometry {\n constructor() {\n super();\n this.addAttribute(\"aVertexPosition\", new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ])).addIndex([0, 1, 3, 2]);\n }\n}\n\nexport { Quad };\n//# sourceMappingURL=Quad.mjs.map\n","import { Buffer } from '../geometry/Buffer.mjs';\nimport { Geometry } from '../geometry/Geometry.mjs';\n\nclass QuadUv extends Geometry {\n constructor() {\n super();\n this.vertices = new Float32Array([\n -1,\n -1,\n 1,\n -1,\n 1,\n 1,\n -1,\n 1\n ]);\n this.uvs = new Float32Array([\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ]);\n this.vertexBuffer = new Buffer(this.vertices);\n this.uvBuffer = new Buffer(this.uvs);\n this.addAttribute(\"aVertexPosition\", this.vertexBuffer).addAttribute(\"aTextureCoord\", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);\n }\n map(targetTextureFrame, destinationFrame) {\n let x = 0;\n let y = 0;\n this.uvs[0] = x;\n this.uvs[1] = y;\n this.uvs[2] = x + destinationFrame.width / targetTextureFrame.width;\n this.uvs[3] = y;\n this.uvs[4] = x + destinationFrame.width / targetTextureFrame.width;\n this.uvs[5] = y + destinationFrame.height / targetTextureFrame.height;\n this.uvs[6] = x;\n this.uvs[7] = y + destinationFrame.height / targetTextureFrame.height;\n x = destinationFrame.x;\n y = destinationFrame.y;\n this.vertices[0] = x;\n this.vertices[1] = y;\n this.vertices[2] = x + destinationFrame.width;\n this.vertices[3] = y;\n this.vertices[4] = x + destinationFrame.width;\n this.vertices[5] = y + destinationFrame.height;\n this.vertices[6] = x;\n this.vertices[7] = y + destinationFrame.height;\n this.invalidate();\n return this;\n }\n invalidate() {\n this.vertexBuffer._updateID++;\n this.uvBuffer._updateID++;\n return this;\n }\n}\n\nexport { QuadUv };\n//# sourceMappingURL=QuadUv.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\nimport { Rectangle } from '@pixi/math';\n\nclass FilterState {\n constructor() {\n this.renderTexture = null;\n this.target = null;\n this.legacy = false;\n this.resolution = 1;\n this.multisample = MSAA_QUALITY.NONE;\n this.sourceFrame = new Rectangle();\n this.destinationFrame = new Rectangle();\n this.bindingSourceFrame = new Rectangle();\n this.bindingDestinationFrame = new Rectangle();\n this.filters = [];\n this.transform = null;\n }\n clear() {\n this.target = null;\n this.filters = null;\n this.renderTexture = null;\n }\n}\n\nexport { FilterState };\n//# sourceMappingURL=FilterState.mjs.map\n","import { CLEAR_MODES, DRAW_MODES, MSAA_QUALITY } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { Point, Matrix, Rectangle } from '@pixi/math';\nimport { RenderTexturePool } from '../renderTexture/RenderTexturePool.mjs';\nimport { UniformGroup } from '../shader/UniformGroup.mjs';\nimport { Quad } from '../utils/Quad.mjs';\nimport { QuadUv } from '../utils/QuadUv.mjs';\nimport { FilterState } from './FilterState.mjs';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nconst tempMatrix = new Matrix();\nclass FilterSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.defaultFilterStack = [{}];\n this.texturePool = new RenderTexturePool();\n this.statePool = [];\n this.quad = new Quad();\n this.quadUv = new QuadUv();\n this.tempRect = new Rectangle();\n this.activeState = {};\n this.globalUniforms = new UniformGroup({\n outputFrame: new Rectangle(),\n inputSize: new Float32Array(4),\n inputPixel: new Float32Array(4),\n inputClamp: new Float32Array(4),\n resolution: 1,\n filterArea: new Float32Array(4),\n filterClamp: new Float32Array(4)\n }, true);\n this.forceClear = false;\n this.useMaxPadding = false;\n }\n init() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n push(target, filters) {\n const renderer = this.renderer;\n const filterStack = this.defaultFilterStack;\n const state = this.statePool.pop() || new FilterState();\n const renderTextureSystem = this.renderer.renderTexture;\n let resolution = filters[0].resolution;\n let multisample = filters[0].multisample;\n let padding = filters[0].padding;\n let autoFit = filters[0].autoFit;\n let legacy = filters[0].legacy ?? true;\n for (let i = 1; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution);\n multisample = Math.min(multisample, filter.multisample);\n padding = this.useMaxPadding ? Math.max(padding, filter.padding) : padding + filter.padding;\n autoFit = autoFit && filter.autoFit;\n legacy = legacy || (filter.legacy ?? true);\n }\n if (filterStack.length === 1) {\n this.defaultFilterStack[0].renderTexture = renderTextureSystem.current;\n }\n filterStack.push(state);\n state.resolution = resolution;\n state.multisample = multisample;\n state.legacy = legacy;\n state.target = target;\n state.sourceFrame.copyFrom(target.filterArea || target.getBounds(true));\n state.sourceFrame.pad(padding);\n const sourceFrameProjected = this.tempRect.copyFrom(renderTextureSystem.sourceFrame);\n if (renderer.projection.transform) {\n this.transformAABB(tempMatrix.copyFrom(renderer.projection.transform).invert(), sourceFrameProjected);\n }\n if (autoFit) {\n state.sourceFrame.fit(sourceFrameProjected);\n if (state.sourceFrame.width <= 0 || state.sourceFrame.height <= 0) {\n state.sourceFrame.width = 0;\n state.sourceFrame.height = 0;\n }\n } else if (!state.sourceFrame.intersects(sourceFrameProjected)) {\n state.sourceFrame.width = 0;\n state.sourceFrame.height = 0;\n }\n this.roundFrame(state.sourceFrame, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform);\n state.renderTexture = this.getOptimalFilterTexture(state.sourceFrame.width, state.sourceFrame.height, resolution, multisample);\n state.filters = filters;\n state.destinationFrame.width = state.renderTexture.width;\n state.destinationFrame.height = state.renderTexture.height;\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0;\n destinationFrame.y = 0;\n destinationFrame.width = state.sourceFrame.width;\n destinationFrame.height = state.sourceFrame.height;\n state.renderTexture.filterFrame = state.sourceFrame;\n state.bindingSourceFrame.copyFrom(renderTextureSystem.sourceFrame);\n state.bindingDestinationFrame.copyFrom(renderTextureSystem.destinationFrame);\n state.transform = renderer.projection.transform;\n renderer.projection.transform = null;\n renderTextureSystem.bind(state.renderTexture, state.sourceFrame, destinationFrame);\n renderer.framebuffer.clear(0, 0, 0, 0);\n }\n pop() {\n const filterStack = this.defaultFilterStack;\n const state = filterStack.pop();\n const filters = state.filters;\n this.activeState = state;\n const globalUniforms = this.globalUniforms.uniforms;\n globalUniforms.outputFrame = state.sourceFrame;\n globalUniforms.resolution = state.resolution;\n const inputSize = globalUniforms.inputSize;\n const inputPixel = globalUniforms.inputPixel;\n const inputClamp = globalUniforms.inputClamp;\n inputSize[0] = state.destinationFrame.width;\n inputSize[1] = state.destinationFrame.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n inputPixel[0] = Math.round(inputSize[0] * state.resolution);\n inputPixel[1] = Math.round(inputSize[1] * state.resolution);\n inputPixel[2] = 1 / inputPixel[0];\n inputPixel[3] = 1 / inputPixel[1];\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = state.sourceFrame.width * inputSize[2] - 0.5 * inputPixel[2];\n inputClamp[3] = state.sourceFrame.height * inputSize[3] - 0.5 * inputPixel[3];\n if (state.legacy) {\n const filterArea = globalUniforms.filterArea;\n filterArea[0] = state.destinationFrame.width;\n filterArea[1] = state.destinationFrame.height;\n filterArea[2] = state.sourceFrame.x;\n filterArea[3] = state.sourceFrame.y;\n globalUniforms.filterClamp = globalUniforms.inputClamp;\n }\n this.globalUniforms.update();\n const lastState = filterStack[filterStack.length - 1];\n this.renderer.framebuffer.blit();\n if (filters.length === 1) {\n filters[0].apply(this, state.renderTexture, lastState.renderTexture, CLEAR_MODES.BLEND, state);\n this.returnFilterTexture(state.renderTexture);\n } else {\n let flip = state.renderTexture;\n let flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution);\n flop.filterFrame = flip.filterFrame;\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n if (i === 1 && state.multisample > 1) {\n flop = this.getOptimalFilterTexture(flip.width, flip.height, state.resolution);\n flop.filterFrame = flip.filterFrame;\n }\n filters[i].apply(this, flip, flop, CLEAR_MODES.CLEAR, state);\n const t = flip;\n flip = flop;\n flop = t;\n }\n filters[i].apply(this, flip, lastState.renderTexture, CLEAR_MODES.BLEND, state);\n if (i > 1 && state.multisample > 1) {\n this.returnFilterTexture(state.renderTexture);\n }\n this.returnFilterTexture(flip);\n this.returnFilterTexture(flop);\n }\n state.clear();\n this.statePool.push(state);\n }\n bindAndClear(filterTexture, clearMode = CLEAR_MODES.CLEAR) {\n const {\n renderTexture: renderTextureSystem,\n state: stateSystem\n } = this.renderer;\n if (filterTexture === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {\n this.renderer.projection.transform = this.activeState.transform;\n } else {\n this.renderer.projection.transform = null;\n }\n if (filterTexture?.filterFrame) {\n const destinationFrame = this.tempRect;\n destinationFrame.x = 0;\n destinationFrame.y = 0;\n destinationFrame.width = filterTexture.filterFrame.width;\n destinationFrame.height = filterTexture.filterFrame.height;\n renderTextureSystem.bind(filterTexture, filterTexture.filterFrame, destinationFrame);\n } else if (filterTexture !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {\n renderTextureSystem.bind(filterTexture);\n } else {\n this.renderer.renderTexture.bind(filterTexture, this.activeState.bindingSourceFrame, this.activeState.bindingDestinationFrame);\n }\n const autoClear = stateSystem.stateId & 1 || this.forceClear;\n if (clearMode === CLEAR_MODES.CLEAR || clearMode === CLEAR_MODES.BLIT && autoClear) {\n this.renderer.framebuffer.clear(0, 0, 0, 0);\n }\n }\n applyFilter(filter, input, output, clearMode) {\n const renderer = this.renderer;\n renderer.state.set(filter.state);\n this.bindAndClear(output, clearMode);\n filter.uniforms.uSampler = input;\n filter.uniforms.filterGlobals = this.globalUniforms;\n renderer.shader.bind(filter);\n filter.legacy = !!filter.program.attributeData.aTextureCoord;\n if (filter.legacy) {\n this.quadUv.map(input._frame, input.filterFrame);\n renderer.geometry.bind(this.quadUv);\n renderer.geometry.draw(DRAW_MODES.TRIANGLES);\n } else {\n renderer.geometry.bind(this.quad);\n renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP);\n }\n }\n calculateSpriteMatrix(outputMatrix, sprite) {\n const { sourceFrame, destinationFrame } = this.activeState;\n const { orig } = sprite._texture;\n const mappedMatrix = outputMatrix.set(destinationFrame.width, 0, 0, destinationFrame.height, sourceFrame.x, sourceFrame.y);\n const worldTransform = sprite.worldTransform.copyTo(Matrix.TEMP_MATRIX);\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(1 / orig.width, 1 / orig.height);\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n return mappedMatrix;\n }\n destroy() {\n this.renderer = null;\n this.texturePool.clear(false);\n }\n getOptimalFilterTexture(minWidth, minHeight, resolution = 1, multisample = MSAA_QUALITY.NONE) {\n return this.texturePool.getOptimalTexture(minWidth, minHeight, resolution, multisample);\n }\n getFilterTexture(input, resolution, multisample) {\n if (typeof input === \"number\") {\n const swap = input;\n input = resolution;\n resolution = swap;\n }\n input = input || this.activeState.renderTexture;\n const filterTexture = this.texturePool.getOptimalTexture(input.width, input.height, resolution || input.resolution, multisample || MSAA_QUALITY.NONE);\n filterTexture.filterFrame = input.filterFrame;\n return filterTexture;\n }\n returnFilterTexture(renderTexture) {\n this.texturePool.returnTexture(renderTexture);\n }\n emptyPool() {\n this.texturePool.clear(true);\n }\n resize() {\n this.texturePool.setScreenSize(this.renderer.view);\n }\n transformAABB(matrix, rect) {\n const lt = tempPoints[0];\n const lb = tempPoints[1];\n const rt = tempPoints[2];\n const rb = tempPoints[3];\n lt.set(rect.left, rect.top);\n lb.set(rect.left, rect.bottom);\n rt.set(rect.right, rect.top);\n rb.set(rect.right, rect.bottom);\n matrix.apply(lt, lt);\n matrix.apply(lb, lb);\n matrix.apply(rt, rt);\n matrix.apply(rb, rb);\n const x0 = Math.min(lt.x, lb.x, rt.x, rb.x);\n const y0 = Math.min(lt.y, lb.y, rt.y, rb.y);\n const x1 = Math.max(lt.x, lb.x, rt.x, rb.x);\n const y1 = Math.max(lt.y, lb.y, rt.y, rb.y);\n rect.x = x0;\n rect.y = y0;\n rect.width = x1 - x0;\n rect.height = y1 - y0;\n }\n roundFrame(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (frame.width <= 0 || frame.height <= 0 || bindingSourceFrame.width <= 0 || bindingSourceFrame.height <= 0) {\n return;\n }\n if (transform) {\n const { a, b, c, d } = transform;\n if ((Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4)) {\n return;\n }\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity();\n transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y);\n this.transformAABB(transform, frame);\n frame.ceil(resolution);\n this.transformAABB(transform.invert(), frame);\n }\n}\nFilterSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"filter\"\n};\nextensions.add(FilterSystem);\n\nexport { FilterSystem };\n//# sourceMappingURL=FilterSystem.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\n\nclass GLFramebuffer {\n constructor(framebuffer) {\n this.framebuffer = framebuffer;\n this.stencil = null;\n this.dirtyId = -1;\n this.dirtyFormat = -1;\n this.dirtySize = -1;\n this.multisample = MSAA_QUALITY.NONE;\n this.msaaBuffer = null;\n this.blitFramebuffer = null;\n this.mipLevel = 0;\n }\n}\n\nexport { GLFramebuffer };\n//# sourceMappingURL=GLFramebuffer.mjs.map\n","import { ENV, BUFFER_BITS, MSAA_QUALITY } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { Rectangle } from '@pixi/math';\nimport { settings } from '@pixi/settings';\nimport { Framebuffer } from './Framebuffer.mjs';\nimport { GLFramebuffer } from './GLFramebuffer.mjs';\n\nconst tempRectangle = new Rectangle();\nclass FramebufferSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.managedFramebuffers = [];\n this.unknownFramebuffer = new Framebuffer(10, 10);\n this.msaaSamples = null;\n }\n contextChange() {\n this.disposeAll(true);\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n this.current = this.unknownFramebuffer;\n this.viewport = new Rectangle();\n this.hasMRT = true;\n this.writeDepthTexture = true;\n if (this.renderer.context.webGLVersion === 1) {\n let nativeDrawBuffersExtension = this.renderer.context.extensions.drawBuffers;\n let nativeDepthTextureExtension = this.renderer.context.extensions.depthTexture;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n nativeDrawBuffersExtension = null;\n nativeDepthTextureExtension = null;\n }\n if (nativeDrawBuffersExtension) {\n gl.drawBuffers = (activeTextures) => nativeDrawBuffersExtension.drawBuffersWEBGL(activeTextures);\n } else {\n this.hasMRT = false;\n gl.drawBuffers = () => {\n };\n }\n if (!nativeDepthTextureExtension) {\n this.writeDepthTexture = false;\n }\n } else {\n this.msaaSamples = gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES);\n }\n }\n bind(framebuffer, frame, mipLevel = 0) {\n const { gl } = this;\n if (framebuffer) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(framebuffer);\n if (this.current !== framebuffer) {\n this.current = framebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo.framebuffer);\n }\n if (fbo.mipLevel !== mipLevel) {\n framebuffer.dirtyId++;\n framebuffer.dirtyFormat++;\n fbo.mipLevel = mipLevel;\n }\n if (fbo.dirtyId !== framebuffer.dirtyId) {\n fbo.dirtyId = framebuffer.dirtyId;\n if (fbo.dirtyFormat !== framebuffer.dirtyFormat) {\n fbo.dirtyFormat = framebuffer.dirtyFormat;\n fbo.dirtySize = framebuffer.dirtySize;\n this.updateFramebuffer(framebuffer, mipLevel);\n } else if (fbo.dirtySize !== framebuffer.dirtySize) {\n fbo.dirtySize = framebuffer.dirtySize;\n this.resizeFramebuffer(framebuffer);\n }\n }\n for (let i = 0; i < framebuffer.colorTextures.length; i++) {\n const tex = framebuffer.colorTextures[i];\n this.renderer.texture.unbind(tex.parentTextureArray || tex);\n }\n if (framebuffer.depthTexture) {\n this.renderer.texture.unbind(framebuffer.depthTexture);\n }\n if (frame) {\n const mipWidth = frame.width >> mipLevel;\n const mipHeight = frame.height >> mipLevel;\n const scale = mipWidth / frame.width;\n this.setViewport(frame.x * scale, frame.y * scale, mipWidth, mipHeight);\n } else {\n const mipWidth = framebuffer.width >> mipLevel;\n const mipHeight = framebuffer.height >> mipLevel;\n this.setViewport(0, 0, mipWidth, mipHeight);\n }\n } else {\n if (this.current) {\n this.current = null;\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n }\n if (frame) {\n this.setViewport(frame.x, frame.y, frame.width, frame.height);\n } else {\n this.setViewport(0, 0, this.renderer.width, this.renderer.height);\n }\n }\n }\n setViewport(x, y, width, height) {\n const v = this.viewport;\n x = Math.round(x);\n y = Math.round(y);\n width = Math.round(width);\n height = Math.round(height);\n if (v.width !== width || v.height !== height || v.x !== x || v.y !== y) {\n v.x = x;\n v.y = y;\n v.width = width;\n v.height = height;\n this.gl.viewport(x, y, width, height);\n }\n }\n get size() {\n if (this.current) {\n return { x: 0, y: 0, width: this.current.width, height: this.current.height };\n }\n return { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height };\n }\n clear(r, g, b, a, mask = BUFFER_BITS.COLOR | BUFFER_BITS.DEPTH) {\n const { gl } = this;\n gl.clearColor(r, g, b, a);\n gl.clear(mask);\n }\n initFramebuffer(framebuffer) {\n const { gl } = this;\n const fbo = new GLFramebuffer(gl.createFramebuffer());\n fbo.multisample = this.detectSamples(framebuffer.multisample);\n framebuffer.glFramebuffers[this.CONTEXT_UID] = fbo;\n this.managedFramebuffers.push(framebuffer);\n framebuffer.disposeRunner.add(this);\n return fbo;\n }\n resizeFramebuffer(framebuffer) {\n const { gl } = this;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (fbo.stencil) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height);\n }\n }\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n if (!gl.drawBuffers) {\n count = Math.min(count, 1);\n }\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i];\n const parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0);\n if (i === 0 && fbo.msaaBuffer) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height);\n }\n }\n if (framebuffer.depthTexture && this.writeDepthTexture) {\n this.renderer.texture.bind(framebuffer.depthTexture, 0);\n }\n }\n updateFramebuffer(framebuffer, mipLevel) {\n const { gl } = this;\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n const colorTextures = framebuffer.colorTextures;\n let count = colorTextures.length;\n if (!gl.drawBuffers) {\n count = Math.min(count, 1);\n }\n if (fbo.multisample > 1 && this.canMultisampleFramebuffer(framebuffer)) {\n fbo.msaaBuffer = fbo.msaaBuffer || gl.createRenderbuffer();\n } else if (fbo.msaaBuffer) {\n gl.deleteRenderbuffer(fbo.msaaBuffer);\n fbo.msaaBuffer = null;\n if (fbo.blitFramebuffer) {\n fbo.blitFramebuffer.dispose();\n fbo.blitFramebuffer = null;\n }\n }\n const activeTextures = [];\n for (let i = 0; i < count; i++) {\n const texture = colorTextures[i];\n const parentTexture = texture.parentTextureArray || texture;\n this.renderer.texture.bind(parentTexture, 0);\n if (i === 0 && fbo.msaaBuffer) {\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.msaaBuffer);\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, parentTexture._glTextures[this.CONTEXT_UID].internalFormat, framebuffer.width, framebuffer.height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, fbo.msaaBuffer);\n } else {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, texture.target, parentTexture._glTextures[this.CONTEXT_UID].texture, mipLevel);\n activeTextures.push(gl.COLOR_ATTACHMENT0 + i);\n }\n }\n if (activeTextures.length > 1) {\n gl.drawBuffers(activeTextures);\n }\n if (framebuffer.depthTexture) {\n const writeDepthTexture = this.writeDepthTexture;\n if (writeDepthTexture) {\n const depthTexture = framebuffer.depthTexture;\n this.renderer.texture.bind(depthTexture, 0);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture._glTextures[this.CONTEXT_UID].texture, mipLevel);\n }\n }\n if ((framebuffer.stencil || framebuffer.depth) && !(framebuffer.depthTexture && this.writeDepthTexture)) {\n fbo.stencil = fbo.stencil || gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, fbo.stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, framebuffer.width, framebuffer.height);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, framebuffer.width, framebuffer.height);\n }\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, fbo.stencil);\n } else if (fbo.stencil) {\n gl.deleteRenderbuffer(fbo.stencil);\n fbo.stencil = null;\n }\n }\n canMultisampleFramebuffer(framebuffer) {\n return this.renderer.context.webGLVersion !== 1 && framebuffer.colorTextures.length <= 1 && !framebuffer.depthTexture;\n }\n detectSamples(samples) {\n const { msaaSamples } = this;\n let res = MSAA_QUALITY.NONE;\n if (samples <= 1 || msaaSamples === null) {\n return res;\n }\n for (let i = 0; i < msaaSamples.length; i++) {\n if (msaaSamples[i] <= samples) {\n res = msaaSamples[i];\n break;\n }\n }\n if (res === 1) {\n res = MSAA_QUALITY.NONE;\n }\n return res;\n }\n blit(framebuffer, sourcePixels, destPixels) {\n const { current, renderer, gl, CONTEXT_UID } = this;\n if (renderer.context.webGLVersion !== 2) {\n return;\n }\n if (!current) {\n return;\n }\n const fbo = current.glFramebuffers[CONTEXT_UID];\n if (!fbo) {\n return;\n }\n if (!framebuffer) {\n if (!fbo.msaaBuffer) {\n return;\n }\n const colorTexture = current.colorTextures[0];\n if (!colorTexture) {\n return;\n }\n if (!fbo.blitFramebuffer) {\n fbo.blitFramebuffer = new Framebuffer(current.width, current.height);\n fbo.blitFramebuffer.addColorTexture(0, colorTexture);\n }\n framebuffer = fbo.blitFramebuffer;\n if (framebuffer.colorTextures[0] !== colorTexture) {\n framebuffer.colorTextures[0] = colorTexture;\n framebuffer.dirtyId++;\n framebuffer.dirtyFormat++;\n }\n if (framebuffer.width !== current.width || framebuffer.height !== current.height) {\n framebuffer.width = current.width;\n framebuffer.height = current.height;\n framebuffer.dirtyId++;\n framebuffer.dirtySize++;\n }\n }\n if (!sourcePixels) {\n sourcePixels = tempRectangle;\n sourcePixels.width = current.width;\n sourcePixels.height = current.height;\n }\n if (!destPixels) {\n destPixels = sourcePixels;\n }\n const sameSize = sourcePixels.width === destPixels.width && sourcePixels.height === destPixels.height;\n this.bind(framebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, fbo.framebuffer);\n gl.blitFramebuffer(sourcePixels.left, sourcePixels.top, sourcePixels.right, sourcePixels.bottom, destPixels.left, destPixels.top, destPixels.right, destPixels.bottom, gl.COLOR_BUFFER_BIT, sameSize ? gl.NEAREST : gl.LINEAR);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, framebuffer.glFramebuffers[this.CONTEXT_UID].framebuffer);\n }\n disposeFramebuffer(framebuffer, contextLost) {\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n const gl = this.gl;\n if (!fbo) {\n return;\n }\n delete framebuffer.glFramebuffers[this.CONTEXT_UID];\n const index = this.managedFramebuffers.indexOf(framebuffer);\n if (index >= 0) {\n this.managedFramebuffers.splice(index, 1);\n }\n framebuffer.disposeRunner.remove(this);\n if (!contextLost) {\n gl.deleteFramebuffer(fbo.framebuffer);\n if (fbo.msaaBuffer) {\n gl.deleteRenderbuffer(fbo.msaaBuffer);\n }\n if (fbo.stencil) {\n gl.deleteRenderbuffer(fbo.stencil);\n }\n }\n if (fbo.blitFramebuffer) {\n this.disposeFramebuffer(fbo.blitFramebuffer, contextLost);\n }\n }\n disposeAll(contextLost) {\n const list = this.managedFramebuffers;\n this.managedFramebuffers = [];\n for (let i = 0; i < list.length; i++) {\n this.disposeFramebuffer(list[i], contextLost);\n }\n }\n forceStencil() {\n const framebuffer = this.current;\n if (!framebuffer) {\n return;\n }\n const fbo = framebuffer.glFramebuffers[this.CONTEXT_UID];\n if (!fbo || fbo.stencil) {\n return;\n }\n framebuffer.stencil = true;\n const w = framebuffer.width;\n const h = framebuffer.height;\n const gl = this.gl;\n const stencil = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, stencil);\n if (fbo.msaaBuffer) {\n gl.renderbufferStorageMultisample(gl.RENDERBUFFER, fbo.multisample, gl.DEPTH24_STENCIL8, w, h);\n } else {\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, w, h);\n }\n fbo.stencil = stencil;\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, stencil);\n }\n reset() {\n this.current = this.unknownFramebuffer;\n this.viewport = new Rectangle();\n }\n destroy() {\n this.renderer = null;\n }\n}\nFramebufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"framebuffer\"\n};\nextensions.add(FramebufferSystem);\n\nexport { FramebufferSystem };\n//# sourceMappingURL=FramebufferSystem.mjs.map\n","import { ENV, BUFFER_TYPE } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\n\nconst byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 };\nclass GeometrySystem {\n constructor(renderer) {\n this.renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this.canUseUInt32ElementIndex = false;\n this.managedGeometries = {};\n }\n contextChange() {\n this.disposeAll(true);\n const gl = this.gl = this.renderer.gl;\n const context = this.renderer.context;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n if (context.webGLVersion !== 2) {\n let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject;\n if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) {\n nativeVaoExtension = null;\n }\n if (nativeVaoExtension) {\n gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES();\n gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao);\n gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao);\n } else {\n this.hasVao = false;\n gl.createVertexArray = () => null;\n gl.bindVertexArray = () => null;\n gl.deleteVertexArray = () => null;\n }\n }\n if (context.webGLVersion !== 2) {\n const instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n if (instanceExt) {\n gl.vertexAttribDivisor = (a, b) => instanceExt.vertexAttribDivisorANGLE(a, b);\n gl.drawElementsInstanced = (a, b, c, d, e) => instanceExt.drawElementsInstancedANGLE(a, b, c, d, e);\n gl.drawArraysInstanced = (a, b, c, d) => instanceExt.drawArraysInstancedANGLE(a, b, c, d);\n } else {\n this.hasInstance = false;\n }\n }\n this.canUseUInt32ElementIndex = context.webGLVersion === 2 || !!context.extensions.uint32ElementIndex;\n }\n bind(geometry, shader) {\n shader = shader || this.renderer.shader.shader;\n const { gl } = this;\n let vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let incRefCount = false;\n if (!vaos) {\n this.managedGeometries[geometry.id] = geometry;\n geometry.disposeRunner.add(this);\n geometry.glVertexArrayObjects[this.CONTEXT_UID] = vaos = {};\n incRefCount = true;\n }\n const vao = vaos[shader.program.id] || this.initGeometryVao(geometry, shader, incRefCount);\n this._activeGeometry = geometry;\n if (this._activeVao !== vao) {\n this._activeVao = vao;\n if (this.hasVao) {\n gl.bindVertexArray(vao);\n } else {\n this.activateVao(geometry, shader.program);\n }\n }\n this.updateBuffers();\n }\n reset() {\n this.unbind();\n }\n updateBuffers() {\n const geometry = this._activeGeometry;\n const bufferSystem = this.renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.update(buffer);\n }\n }\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program.attributeData;\n for (const j in shaderAttributes) {\n if (!geometryAttributes[j]) {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n getSignature(geometry, program) {\n const attribs = geometry.attributes;\n const shaderAttributes = program.attributeData;\n const strings = [\"g\", geometry.id];\n for (const i in attribs) {\n if (shaderAttributes[i]) {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n return strings.join(\"-\");\n }\n initGeometryVao(geometry, shader, incRefCount = true) {\n const gl = this.gl;\n const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this.renderer.buffer;\n const program = shader.program;\n if (!program.glPrograms[CONTEXT_UID]) {\n this.renderer.shader.generateProgram(shader);\n }\n this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program);\n const vaoObjectHash = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n let vao = vaoObjectHash[signature];\n if (vao) {\n vaoObjectHash[program.id] = vao;\n return vao;\n }\n const buffers = geometry.buffers;\n const attributes = geometry.attributes;\n const tempStride = {};\n const tempStart = {};\n for (const j in buffers) {\n tempStride[j] = 0;\n tempStart[j] = 0;\n }\n for (const j in attributes) {\n if (!attributes[j].size && program.attributeData[j]) {\n attributes[j].size = program.attributeData[j].size;\n } else if (!attributes[j].size) {\n console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`);\n }\n tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type];\n }\n for (const j in attributes) {\n const attribute = attributes[j];\n const attribSize = attribute.size;\n if (attribute.stride === void 0) {\n if (tempStride[attribute.buffer] === attribSize * byteSizeMap[attribute.type]) {\n attribute.stride = 0;\n } else {\n attribute.stride = tempStride[attribute.buffer];\n }\n }\n if (attribute.start === void 0) {\n attribute.start = tempStart[attribute.buffer];\n tempStart[attribute.buffer] += attribSize * byteSizeMap[attribute.type];\n }\n }\n vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer);\n if (incRefCount) {\n buffer._glBuffers[CONTEXT_UID].refCount++;\n }\n }\n this.activateVao(geometry, program);\n vaoObjectHash[program.id] = vao;\n vaoObjectHash[signature] = vao;\n gl.bindVertexArray(null);\n bufferSystem.unbind(BUFFER_TYPE.ARRAY_BUFFER);\n return vao;\n }\n disposeGeometry(geometry, contextLost) {\n if (!this.managedGeometries[geometry.id]) {\n return;\n }\n delete this.managedGeometries[geometry.id];\n const vaos = geometry.glVertexArrayObjects[this.CONTEXT_UID];\n const gl = this.gl;\n const buffers = geometry.buffers;\n const bufferSystem = this.renderer?.buffer;\n geometry.disposeRunner.remove(this);\n if (!vaos) {\n return;\n }\n if (bufferSystem) {\n for (let i = 0; i < buffers.length; i++) {\n const buf = buffers[i]._glBuffers[this.CONTEXT_UID];\n if (buf) {\n buf.refCount--;\n if (buf.refCount === 0 && !contextLost) {\n bufferSystem.dispose(buffers[i], contextLost);\n }\n }\n }\n }\n if (!contextLost) {\n for (const vaoId in vaos) {\n if (vaoId[0] === \"g\") {\n const vao = vaos[vaoId];\n if (this._activeVao === vao) {\n this.unbind();\n }\n gl.deleteVertexArray(vao);\n }\n }\n }\n delete geometry.glVertexArrayObjects[this.CONTEXT_UID];\n }\n disposeAll(contextLost) {\n const all = Object.keys(this.managedGeometries);\n for (let i = 0; i < all.length; i++) {\n this.disposeGeometry(this.managedGeometries[all[i]], contextLost);\n }\n }\n activateVao(geometry, program) {\n const gl = this.gl;\n const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this.renderer.buffer;\n const buffers = geometry.buffers;\n const attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n bufferSystem.bind(geometry.indexBuffer);\n }\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j];\n const buffer = buffers[attribute.buffer];\n const glBuffer = buffer._glBuffers[CONTEXT_UID];\n if (program.attributeData[j]) {\n if (lastBuffer !== glBuffer) {\n bufferSystem.bind(buffer);\n lastBuffer = glBuffer;\n }\n const location = program.attributeData[j].location;\n gl.enableVertexAttribArray(location);\n gl.vertexAttribPointer(location, attribute.size, attribute.type || gl.FLOAT, attribute.normalized, attribute.stride, attribute.start);\n if (attribute.instance) {\n if (this.hasInstance) {\n gl.vertexAttribDivisor(location, attribute.divisor);\n } else {\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n }\n }\n draw(type, size, start, instanceCount) {\n const { gl } = this;\n const geometry = this._activeGeometry;\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n if (byteSize === 2 || byteSize === 4 && this.canUseUInt32ElementIndex) {\n if (geometry.instanced) {\n gl.drawElementsInstanced(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount || 1);\n } else {\n gl.drawElements(type, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n }\n } else {\n console.warn(\"unsupported index buffer type: uint32\");\n }\n } else if (geometry.instanced) {\n gl.drawArraysInstanced(type, start, size || geometry.getSize(), instanceCount || 1);\n } else {\n gl.drawArrays(type, start, size || geometry.getSize());\n }\n return this;\n }\n unbind() {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n destroy() {\n this.renderer = null;\n }\n}\nGeometrySystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"geometry\"\n};\nextensions.add(GeometrySystem);\n\nexport { GeometrySystem };\n//# sourceMappingURL=GeometrySystem.mjs.map\n","import { Matrix } from '@pixi/math';\n\nconst tempMat = new Matrix();\nclass TextureMatrix {\n constructor(texture, clampMargin) {\n this._texture = texture;\n this.mapCoord = new Matrix();\n this.uClampFrame = new Float32Array(4);\n this.uClampOffset = new Float32Array(2);\n this._textureID = -1;\n this._updateID = 0;\n this.clampOffset = 0;\n this.clampMargin = typeof clampMargin === \"undefined\" ? 0.5 : clampMargin;\n this.isSimple = false;\n }\n get texture() {\n return this._texture;\n }\n set texture(value) {\n this._texture = value;\n this._textureID = -1;\n }\n multiplyUvs(uvs, out) {\n if (out === void 0) {\n out = uvs;\n }\n const mat = this.mapCoord;\n for (let i = 0; i < uvs.length; i += 2) {\n const x = uvs[i];\n const y = uvs[i + 1];\n out[i] = x * mat.a + y * mat.c + mat.tx;\n out[i + 1] = x * mat.b + y * mat.d + mat.ty;\n }\n return out;\n }\n update(forceUpdate) {\n const tex = this._texture;\n if (!tex || !tex.valid) {\n return false;\n }\n if (!forceUpdate && this._textureID === tex._updateID) {\n return false;\n }\n this._textureID = tex._updateID;\n this._updateID++;\n const uvs = tex._uvs;\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n const orig = tex.orig;\n const trim = tex.trim;\n if (trim) {\n tempMat.set(orig.width / trim.width, 0, 0, orig.height / trim.height, -trim.x / trim.width, -trim.y / trim.height);\n this.mapCoord.append(tempMat);\n }\n const texBase = tex.baseTexture;\n const frame = this.uClampFrame;\n const margin = this.clampMargin / texBase.resolution;\n const offset = this.clampOffset;\n frame[0] = (tex._frame.x + margin + offset) / texBase.width;\n frame[1] = (tex._frame.y + margin + offset) / texBase.height;\n frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width;\n frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height;\n this.uClampOffset[0] = offset / texBase.realWidth;\n this.uClampOffset[1] = offset / texBase.realHeight;\n this.isSimple = tex._frame.width === texBase.width && tex._frame.height === texBase.height && tex.rotate === 0;\n return true;\n }\n}\n\nexport { TextureMatrix };\n//# sourceMappingURL=TextureMatrix.mjs.map\n","import { Matrix } from '@pixi/math';\nimport { TextureMatrix } from '../../textures/TextureMatrix.mjs';\nimport { Filter } from '../Filter.mjs';\nimport fragment from './spriteMaskFilter2.mjs';\nimport vertex from './spriteMaskFilter3.mjs';\n\nclass SpriteMaskFilter extends Filter {\n constructor(vertexSrc, fragmentSrc, uniforms) {\n let sprite = null;\n if (typeof vertexSrc !== \"string\" && fragmentSrc === void 0 && uniforms === void 0) {\n sprite = vertexSrc;\n vertexSrc = void 0;\n fragmentSrc = void 0;\n uniforms = void 0;\n }\n super(vertexSrc || vertex, fragmentSrc || fragment, uniforms);\n this.maskSprite = sprite;\n this.maskMatrix = new Matrix();\n }\n get maskSprite() {\n return this._maskSprite;\n }\n set maskSprite(value) {\n this._maskSprite = value;\n if (this._maskSprite) {\n this._maskSprite.renderable = false;\n }\n }\n apply(filterManager, input, output, clearMode) {\n const maskSprite = this._maskSprite;\n const tex = maskSprite._texture;\n if (!tex.valid) {\n return;\n }\n if (!tex.uvMatrix) {\n tex.uvMatrix = new TextureMatrix(tex, 0);\n }\n tex.uvMatrix.update();\n this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1;\n this.uniforms.mask = tex;\n this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord);\n this.uniforms.alpha = maskSprite.worldAlpha;\n this.uniforms.maskClamp = tex.uvMatrix.uClampFrame;\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n\nexport { SpriteMaskFilter };\n//# sourceMappingURL=SpriteMaskFilter.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 otherMatrix;\\n\\nvarying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=spriteMaskFilter3.mjs.map\n","var fragment = \"varying vec2 vMaskCoord;\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform sampler2D mask;\\nuniform float alpha;\\nuniform float npmAlpha;\\nuniform vec4 maskClamp;\\n\\nvoid main(void)\\n{\\n float clip = step(3.5,\\n step(maskClamp.x, vMaskCoord.x) +\\n step(maskClamp.y, vMaskCoord.y) +\\n step(vMaskCoord.x, maskClamp.z) +\\n step(vMaskCoord.y, maskClamp.w));\\n\\n vec4 original = texture2D(uSampler, vTextureCoord);\\n vec4 masky = texture2D(mask, vMaskCoord);\\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\\n\\n original *= (alphaMul * masky.r * alpha * clip);\\n\\n gl_FragColor = original;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=spriteMaskFilter2.mjs.map\n","import { MASK_TYPES } from '@pixi/constants';\nimport { Filter } from '../filters/Filter.mjs';\n\nclass MaskData {\n constructor(maskObject = null) {\n this.type = MASK_TYPES.NONE;\n this.autoDetect = true;\n this.maskObject = maskObject || null;\n this.pooled = false;\n this.isMaskData = true;\n this.resolution = null;\n this.multisample = Filter.defaultMultisample;\n this.enabled = true;\n this.colorMask = 15;\n this._filters = null;\n this._stencilCounter = 0;\n this._scissorCounter = 0;\n this._scissorRect = null;\n this._scissorRectLocal = null;\n this._colorMask = 15;\n this._target = null;\n }\n get filter() {\n return this._filters ? this._filters[0] : null;\n }\n set filter(value) {\n if (value) {\n if (this._filters) {\n this._filters[0] = value;\n } else {\n this._filters = [value];\n }\n } else {\n this._filters = null;\n }\n }\n reset() {\n if (this.pooled) {\n this.maskObject = null;\n this.type = MASK_TYPES.NONE;\n this.autoDetect = true;\n }\n this._target = null;\n this._scissorRectLocal = null;\n }\n copyCountersOrReset(maskAbove) {\n if (maskAbove) {\n this._stencilCounter = maskAbove._stencilCounter;\n this._scissorCounter = maskAbove._scissorCounter;\n this._scissorRect = maskAbove._scissorRect;\n } else {\n this._stencilCounter = 0;\n this._scissorCounter = 0;\n this._scissorRect = null;\n }\n }\n}\n\nexport { MaskData };\n//# sourceMappingURL=MaskData.mjs.map\n","import { MASK_TYPES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { SpriteMaskFilter } from '../filters/spriteMask/SpriteMaskFilter.mjs';\nimport { MaskData } from './MaskData.mjs';\n\nclass MaskSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.enableScissor = true;\n this.alphaMaskPool = [];\n this.maskDataPool = [];\n this.maskStack = [];\n this.alphaMaskIndex = 0;\n }\n setMaskStack(maskStack) {\n this.maskStack = maskStack;\n this.renderer.scissor.setMaskStack(maskStack);\n this.renderer.stencil.setMaskStack(maskStack);\n }\n push(target, maskDataOrTarget) {\n let maskData = maskDataOrTarget;\n if (!maskData.isMaskData) {\n const d = this.maskDataPool.pop() || new MaskData();\n d.pooled = true;\n d.maskObject = maskDataOrTarget;\n maskData = d;\n }\n const maskAbove = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n maskData.copyCountersOrReset(maskAbove);\n maskData._colorMask = maskAbove ? maskAbove._colorMask : 15;\n if (maskData.autoDetect) {\n this.detect(maskData);\n }\n maskData._target = target;\n if (maskData.type !== MASK_TYPES.SPRITE) {\n this.maskStack.push(maskData);\n }\n if (maskData.enabled) {\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.push(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.push(maskData);\n break;\n case MASK_TYPES.SPRITE:\n maskData.copyCountersOrReset(null);\n this.pushSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.pushColorMask(maskData);\n break;\n default:\n break;\n }\n }\n if (maskData.type === MASK_TYPES.SPRITE) {\n this.maskStack.push(maskData);\n }\n }\n pop(target) {\n const maskData = this.maskStack.pop();\n if (!maskData || maskData._target !== target) {\n return;\n }\n if (maskData.enabled) {\n switch (maskData.type) {\n case MASK_TYPES.SCISSOR:\n this.renderer.scissor.pop(maskData);\n break;\n case MASK_TYPES.STENCIL:\n this.renderer.stencil.pop(maskData.maskObject);\n break;\n case MASK_TYPES.SPRITE:\n this.popSpriteMask(maskData);\n break;\n case MASK_TYPES.COLOR:\n this.popColorMask(maskData);\n break;\n default:\n break;\n }\n }\n maskData.reset();\n if (maskData.pooled) {\n this.maskDataPool.push(maskData);\n }\n if (this.maskStack.length !== 0) {\n const maskCurrent = this.maskStack[this.maskStack.length - 1];\n if (maskCurrent.type === MASK_TYPES.SPRITE && maskCurrent._filters) {\n maskCurrent._filters[0].maskSprite = maskCurrent.maskObject;\n }\n }\n }\n detect(maskData) {\n const maskObject = maskData.maskObject;\n if (!maskObject) {\n maskData.type = MASK_TYPES.COLOR;\n } else if (maskObject.isSprite) {\n maskData.type = MASK_TYPES.SPRITE;\n } else if (this.enableScissor && this.renderer.scissor.testScissor(maskData)) {\n maskData.type = MASK_TYPES.SCISSOR;\n } else {\n maskData.type = MASK_TYPES.STENCIL;\n }\n }\n pushSpriteMask(maskData) {\n const { maskObject } = maskData;\n const target = maskData._target;\n let alphaMaskFilter = maskData._filters;\n if (!alphaMaskFilter) {\n alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];\n if (!alphaMaskFilter) {\n alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new SpriteMaskFilter()];\n }\n }\n const renderer = this.renderer;\n const renderTextureSystem = renderer.renderTexture;\n let resolution;\n let multisample;\n if (renderTextureSystem.current) {\n const renderTexture = renderTextureSystem.current;\n resolution = maskData.resolution || renderTexture.resolution;\n multisample = maskData.multisample ?? renderTexture.multisample;\n } else {\n resolution = maskData.resolution || renderer.resolution;\n multisample = maskData.multisample ?? renderer.multisample;\n }\n alphaMaskFilter[0].resolution = resolution;\n alphaMaskFilter[0].multisample = multisample;\n alphaMaskFilter[0].maskSprite = maskObject;\n const stashFilterArea = target.filterArea;\n target.filterArea = maskObject.getBounds(true);\n renderer.filter.push(target, alphaMaskFilter);\n target.filterArea = stashFilterArea;\n if (!maskData._filters) {\n this.alphaMaskIndex++;\n }\n }\n popSpriteMask(maskData) {\n this.renderer.filter.pop();\n if (maskData._filters) {\n maskData._filters[0].maskSprite = null;\n } else {\n this.alphaMaskIndex--;\n this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null;\n }\n }\n pushColorMask(maskData) {\n const currColorMask = maskData._colorMask;\n const nextColorMask = maskData._colorMask = currColorMask & maskData.colorMask;\n if (nextColorMask !== currColorMask) {\n this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0);\n }\n }\n popColorMask(maskData) {\n const currColorMask = maskData._colorMask;\n const nextColorMask = this.maskStack.length > 0 ? this.maskStack[this.maskStack.length - 1]._colorMask : 15;\n if (nextColorMask !== currColorMask) {\n this.renderer.gl.colorMask((nextColorMask & 1) !== 0, (nextColorMask & 2) !== 0, (nextColorMask & 4) !== 0, (nextColorMask & 8) !== 0);\n }\n }\n destroy() {\n this.renderer = null;\n }\n}\nMaskSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"mask\"\n};\nextensions.add(MaskSystem);\n\nexport { MaskSystem };\n//# sourceMappingURL=MaskSystem.mjs.map\n","class AbstractMaskSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.maskStack = [];\n this.glConst = 0;\n }\n getStackLength() {\n return this.maskStack.length;\n }\n setMaskStack(maskStack) {\n const { gl } = this.renderer;\n const curStackLen = this.getStackLength();\n this.maskStack = maskStack;\n const newStackLen = this.getStackLength();\n if (newStackLen !== curStackLen) {\n if (newStackLen === 0) {\n gl.disable(this.glConst);\n } else {\n gl.enable(this.glConst);\n this._useCurrent();\n }\n }\n }\n _useCurrent() {\n }\n destroy() {\n this.renderer = null;\n this.maskStack = null;\n }\n}\n\nexport { AbstractMaskSystem };\n//# sourceMappingURL=AbstractMaskSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { Matrix, Rectangle } from '@pixi/math';\nimport { settings } from '@pixi/settings';\nimport { AbstractMaskSystem } from './AbstractMaskSystem.mjs';\n\nconst tempMatrix = new Matrix();\nconst rectPool = [];\nconst _ScissorSystem = class extends AbstractMaskSystem {\n constructor(renderer) {\n super(renderer);\n this.glConst = settings.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n if (maskData) {\n return maskData._scissorCounter;\n }\n return 0;\n }\n calcScissorRect(maskData) {\n if (maskData._scissorRectLocal) {\n return;\n }\n const prevData = maskData._scissorRect;\n const { maskObject } = maskData;\n const { renderer } = this;\n const renderTextureSystem = renderer.renderTexture;\n const rect = maskObject.getBounds(true, rectPool.pop() ?? new Rectangle());\n this.roundFrameToPixels(rect, renderTextureSystem.current ? renderTextureSystem.current.resolution : renderer.resolution, renderTextureSystem.sourceFrame, renderTextureSystem.destinationFrame, renderer.projection.transform);\n if (prevData) {\n rect.fit(prevData);\n }\n maskData._scissorRectLocal = rect;\n }\n static isMatrixRotated(matrix) {\n if (!matrix) {\n return false;\n }\n const { a, b, c, d } = matrix;\n return (Math.abs(b) > 1e-4 || Math.abs(c) > 1e-4) && (Math.abs(a) > 1e-4 || Math.abs(d) > 1e-4);\n }\n testScissor(maskData) {\n const { maskObject } = maskData;\n if (!maskObject.isFastRect || !maskObject.isFastRect()) {\n return false;\n }\n if (_ScissorSystem.isMatrixRotated(maskObject.worldTransform)) {\n return false;\n }\n if (_ScissorSystem.isMatrixRotated(this.renderer.projection.transform)) {\n return false;\n }\n this.calcScissorRect(maskData);\n const rect = maskData._scissorRectLocal;\n return rect.width > 0 && rect.height > 0;\n }\n roundFrameToPixels(frame, resolution, bindingSourceFrame, bindingDestinationFrame, transform) {\n if (_ScissorSystem.isMatrixRotated(transform)) {\n return;\n }\n transform = transform ? tempMatrix.copyFrom(transform) : tempMatrix.identity();\n transform.translate(-bindingSourceFrame.x, -bindingSourceFrame.y).scale(bindingDestinationFrame.width / bindingSourceFrame.width, bindingDestinationFrame.height / bindingSourceFrame.height).translate(bindingDestinationFrame.x, bindingDestinationFrame.y);\n this.renderer.filter.transformAABB(transform, frame);\n frame.fit(bindingDestinationFrame);\n frame.x = Math.round(frame.x * resolution);\n frame.y = Math.round(frame.y * resolution);\n frame.width = Math.round(frame.width * resolution);\n frame.height = Math.round(frame.height * resolution);\n }\n push(maskData) {\n if (!maskData._scissorRectLocal) {\n this.calcScissorRect(maskData);\n }\n const { gl } = this.renderer;\n if (!maskData._scissorRect) {\n gl.enable(gl.SCISSOR_TEST);\n }\n maskData._scissorCounter++;\n maskData._scissorRect = maskData._scissorRectLocal;\n this._useCurrent();\n }\n pop(maskData) {\n const { gl } = this.renderer;\n if (maskData) {\n rectPool.push(maskData._scissorRectLocal);\n }\n if (this.getStackLength() > 0) {\n this._useCurrent();\n } else {\n gl.disable(gl.SCISSOR_TEST);\n }\n }\n _useCurrent() {\n const rect = this.maskStack[this.maskStack.length - 1]._scissorRect;\n let y;\n if (this.renderer.renderTexture.current) {\n y = rect.y;\n } else {\n y = this.renderer.height - rect.height - rect.y;\n }\n this.renderer.gl.scissor(rect.x, y, rect.width, rect.height);\n }\n};\nlet ScissorSystem = _ScissorSystem;\nScissorSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"scissor\"\n};\nextensions.add(ScissorSystem);\n\nexport { ScissorSystem };\n//# sourceMappingURL=ScissorSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { settings } from '@pixi/settings';\nimport { AbstractMaskSystem } from './AbstractMaskSystem.mjs';\n\nclass StencilSystem extends AbstractMaskSystem {\n constructor(renderer) {\n super(renderer);\n this.glConst = settings.ADAPTER.getWebGLRenderingContext().STENCIL_TEST;\n }\n getStackLength() {\n const maskData = this.maskStack[this.maskStack.length - 1];\n if (maskData) {\n return maskData._stencilCounter;\n }\n return 0;\n }\n push(maskData) {\n const maskObject = maskData.maskObject;\n const { gl } = this.renderer;\n const prevMaskCount = maskData._stencilCounter;\n if (prevMaskCount === 0) {\n this.renderer.framebuffer.forceStencil();\n gl.clearStencil(0);\n gl.clear(gl.STENCIL_BUFFER_BIT);\n gl.enable(gl.STENCIL_TEST);\n }\n maskData._stencilCounter++;\n const colorMask = maskData._colorMask;\n if (colorMask !== 0) {\n maskData._colorMask = 0;\n gl.colorMask(false, false, false, false);\n }\n gl.stencilFunc(gl.EQUAL, prevMaskCount, 4294967295);\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);\n maskObject.renderable = true;\n maskObject.render(this.renderer);\n this.renderer.batch.flush();\n maskObject.renderable = false;\n if (colorMask !== 0) {\n maskData._colorMask = colorMask;\n gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0);\n }\n this._useCurrent();\n }\n pop(maskObject) {\n const gl = this.renderer.gl;\n if (this.getStackLength() === 0) {\n gl.disable(gl.STENCIL_TEST);\n } else {\n const maskData = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;\n const colorMask = maskData ? maskData._colorMask : 15;\n if (colorMask !== 0) {\n maskData._colorMask = 0;\n gl.colorMask(false, false, false, false);\n }\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);\n maskObject.renderable = true;\n maskObject.render(this.renderer);\n this.renderer.batch.flush();\n maskObject.renderable = false;\n if (colorMask !== 0) {\n maskData._colorMask = colorMask;\n gl.colorMask((colorMask & 1) !== 0, (colorMask & 2) !== 0, (colorMask & 4) !== 0, (colorMask & 8) !== 0);\n }\n this._useCurrent();\n }\n }\n _useCurrent() {\n const gl = this.renderer.gl;\n gl.stencilFunc(gl.EQUAL, this.getStackLength(), 4294967295);\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n }\n}\nStencilSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"stencil\"\n};\nextensions.add(StencilSystem);\n\nexport { StencilSystem };\n//# sourceMappingURL=StencilSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { deprecation } from '@pixi/utils';\n\nclass PluginSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.plugins = {};\n Object.defineProperties(this.plugins, {\n extract: {\n enumerable: false,\n get() {\n deprecation(\"7.0.0\", \"renderer.plugins.extract has moved to renderer.extract\");\n return renderer.extract;\n }\n },\n prepare: {\n enumerable: false,\n get() {\n deprecation(\"7.0.0\", \"renderer.plugins.prepare has moved to renderer.prepare\");\n return renderer.prepare;\n }\n },\n interaction: {\n enumerable: false,\n get() {\n deprecation(\"7.0.0\", \"renderer.plugins.interaction has been deprecated, use renderer.events\");\n return renderer.events;\n }\n }\n });\n }\n init() {\n const staticMap = this.rendererPlugins;\n for (const o in staticMap) {\n this.plugins[o] = new staticMap[o](this.renderer);\n }\n }\n destroy() {\n for (const o in this.plugins) {\n this.plugins[o].destroy();\n this.plugins[o] = null;\n }\n }\n}\nPluginSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_plugin\"\n};\nextensions.add(PluginSystem);\n\nexport { PluginSystem };\n//# sourceMappingURL=PluginSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { Matrix } from '@pixi/math';\n\nclass ProjectionSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.destinationFrame = null;\n this.sourceFrame = null;\n this.defaultFrame = null;\n this.projectionMatrix = new Matrix();\n this.transform = null;\n }\n update(destinationFrame, sourceFrame, resolution, root) {\n this.destinationFrame = destinationFrame || this.destinationFrame || this.defaultFrame;\n this.sourceFrame = sourceFrame || this.sourceFrame || destinationFrame;\n this.calculateProjection(this.destinationFrame, this.sourceFrame, resolution, root);\n if (this.transform) {\n this.projectionMatrix.append(this.transform);\n }\n const renderer = this.renderer;\n renderer.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix;\n renderer.globalUniforms.update();\n if (renderer.shader.shader) {\n renderer.shader.syncUniformGroup(renderer.shader.shader.uniforms.globals);\n }\n }\n calculateProjection(_destinationFrame, sourceFrame, _resolution, root) {\n const pm = this.projectionMatrix;\n const sign = !root ? 1 : -1;\n pm.identity();\n pm.a = 1 / sourceFrame.width * 2;\n pm.d = sign * (1 / sourceFrame.height * 2);\n pm.tx = -1 - sourceFrame.x * pm.a;\n pm.ty = -sign - sourceFrame.y * pm.d;\n }\n setTransform(_matrix) {\n }\n destroy() {\n this.renderer = null;\n }\n}\nProjectionSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"projection\"\n};\nextensions.add(ProjectionSystem);\n\nexport { ProjectionSystem };\n//# sourceMappingURL=ProjectionSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { Transform, Matrix } from '@pixi/math';\nimport { RenderTexture } from './RenderTexture.mjs';\n\nconst tempTransform = new Transform();\nclass GenerateTextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this._tempMatrix = new Matrix();\n }\n generateTexture(displayObject, options) {\n const { region: manualRegion, ...textureOptions } = options || {};\n const region = manualRegion || displayObject.getLocalBounds(null, true);\n if (region.width === 0)\n region.width = 1;\n if (region.height === 0)\n region.height = 1;\n const renderTexture = RenderTexture.create({\n width: region.width,\n height: region.height,\n ...textureOptions\n });\n this._tempMatrix.tx = -region.x;\n this._tempMatrix.ty = -region.y;\n const transform = displayObject.transform;\n displayObject.transform = tempTransform;\n this.renderer.render(displayObject, {\n renderTexture,\n transform: this._tempMatrix,\n skipUpdateTransform: !!displayObject.parent,\n blit: true\n });\n displayObject.transform = transform;\n return renderTexture;\n }\n destroy() {\n }\n}\nGenerateTextureSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"textureGenerator\"\n};\nextensions.add(GenerateTextureSystem);\n\nexport { GenerateTextureSystem };\n//# sourceMappingURL=GenerateTextureSystem.mjs.map\n","import { Color } from '@pixi/color';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { Rectangle } from '@pixi/math';\n\nconst tempRect = new Rectangle();\nconst tempRect2 = new Rectangle();\nclass RenderTextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.defaultMaskStack = [];\n this.current = null;\n this.sourceFrame = new Rectangle();\n this.destinationFrame = new Rectangle();\n this.viewportFrame = new Rectangle();\n }\n contextChange() {\n const attributes = this.renderer?.gl.getContextAttributes();\n this._rendererPremultipliedAlpha = !!(attributes && attributes.alpha && attributes.premultipliedAlpha);\n }\n bind(renderTexture = null, sourceFrame, destinationFrame) {\n const renderer = this.renderer;\n this.current = renderTexture;\n let baseTexture;\n let framebuffer;\n let resolution;\n if (renderTexture) {\n baseTexture = renderTexture.baseTexture;\n resolution = baseTexture.resolution;\n if (!sourceFrame) {\n tempRect.width = renderTexture.frame.width;\n tempRect.height = renderTexture.frame.height;\n sourceFrame = tempRect;\n }\n if (!destinationFrame) {\n tempRect2.x = renderTexture.frame.x;\n tempRect2.y = renderTexture.frame.y;\n tempRect2.width = sourceFrame.width;\n tempRect2.height = sourceFrame.height;\n destinationFrame = tempRect2;\n }\n framebuffer = baseTexture.framebuffer;\n } else {\n resolution = renderer.resolution;\n if (!sourceFrame) {\n tempRect.width = renderer._view.screen.width;\n tempRect.height = renderer._view.screen.height;\n sourceFrame = tempRect;\n }\n if (!destinationFrame) {\n destinationFrame = tempRect;\n destinationFrame.width = sourceFrame.width;\n destinationFrame.height = sourceFrame.height;\n }\n }\n const viewportFrame = this.viewportFrame;\n viewportFrame.x = destinationFrame.x * resolution;\n viewportFrame.y = destinationFrame.y * resolution;\n viewportFrame.width = destinationFrame.width * resolution;\n viewportFrame.height = destinationFrame.height * resolution;\n if (!renderTexture) {\n viewportFrame.y = renderer.view.height - (viewportFrame.y + viewportFrame.height);\n }\n viewportFrame.ceil();\n this.renderer.framebuffer.bind(framebuffer, viewportFrame);\n this.renderer.projection.update(destinationFrame, sourceFrame, resolution, !framebuffer);\n if (renderTexture) {\n this.renderer.mask.setMaskStack(baseTexture.maskStack);\n } else {\n this.renderer.mask.setMaskStack(this.defaultMaskStack);\n }\n this.sourceFrame.copyFrom(sourceFrame);\n this.destinationFrame.copyFrom(destinationFrame);\n }\n clear(clearColor, mask) {\n const fallbackColor = this.current ? this.current.baseTexture.clear : this.renderer.background.backgroundColor;\n const color = Color.shared.setValue(clearColor ? clearColor : fallbackColor);\n if (this.current && this.current.baseTexture.alphaMode > 0 || !this.current && this._rendererPremultipliedAlpha) {\n color.premultiply(color.alpha);\n }\n const destinationFrame = this.destinationFrame;\n const baseFrame = this.current ? this.current.baseTexture : this.renderer._view.screen;\n const clearMask = destinationFrame.width !== baseFrame.width || destinationFrame.height !== baseFrame.height;\n if (clearMask) {\n let { x, y, width, height } = this.viewportFrame;\n x = Math.round(x);\n y = Math.round(y);\n width = Math.round(width);\n height = Math.round(height);\n this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);\n this.renderer.gl.scissor(x, y, width, height);\n }\n this.renderer.framebuffer.clear(color.red, color.green, color.blue, color.alpha, mask);\n if (clearMask) {\n this.renderer.scissor.pop();\n }\n }\n resize() {\n this.bind(null);\n }\n reset() {\n this.bind(null);\n }\n destroy() {\n this.renderer = null;\n }\n}\nRenderTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"renderTexture\"\n};\nextensions.add(RenderTextureSystem);\n\nexport { RenderTextureSystem };\n//# sourceMappingURL=RenderTextureSystem.mjs.map\n","class IGLUniformData {\n}\nclass GLProgram {\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBufferBindings = {};\n }\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBufferBindings = null;\n this.program = null;\n }\n}\n\nexport { GLProgram, IGLUniformData };\n//# sourceMappingURL=GLProgram.mjs.map\n","function compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","function booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { defaultValue };\n//# sourceMappingURL=defaultValue.mjs.map\n","function logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","import { GLProgram } from '../GLProgram.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { getAttributeData } from './getAttributeData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertexSrc);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragmentSrc);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.extra?.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n console.warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n } else {\n gl.transformFeedbackVaryings(webGLProgram, transformFeedbackVaryings.names, transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS);\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program.attributeData = getAttributeData(webGLProgram, gl);\n program.uniformData = getUniformData(webGLProgram, gl);\n if (!/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertexSrc)) {\n const keys = Object.keys(program.attributeData);\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n program.attributeData[keys[i]].location = i;\n gl.bindAttribLocation(webGLProgram, i, keys[i]);\n }\n gl.linkProgram(webGLProgram);\n }\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program.uniformData) {\n const data = program.uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GLProgram(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import { mapSize } from './mapSize.mjs';\nimport { mapType } from './mapType.mjs';\n\nfunction getAttributeData(program, gl) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const type = mapType(gl, attribData.type);\n const data = {\n type,\n name: attribData.name,\n size: mapSize(type),\n location: gl.getAttribLocation(program, attribData.name)\n };\n attributes[attribData.name] = data;\n }\n return attributes;\n}\n\nexport { getAttributeData };\n//# sourceMappingURL=getAttributeData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","import './index.mjs';\nimport { uniformParsers } from './uniformParsers.mjs';\nimport { mapSize } from './mapSize.mjs';\n\nfunction uboUpdate(_ud, _uv, _renderer, _syncData, buffer) {\n _renderer.buffer.update(buffer);\n}\nconst UBO_TO_SINGLE_SETTERS = {\n float: `\n data[offset] = v;\n `,\n vec2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n `,\n vec3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n `,\n vec4: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n data[offset+3] = v[3];\n `,\n mat2: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n\n data[offset+4] = v[2];\n data[offset+5] = v[3];\n `,\n mat3: `\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n `,\n mat4: `\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n `\n};\nconst GLSL_TO_STD40_SIZE = {\n float: 4,\n vec2: 8,\n vec3: 12,\n vec4: 16,\n int: 4,\n ivec2: 8,\n ivec3: 12,\n ivec4: 16,\n uint: 4,\n uvec2: 8,\n uvec3: 12,\n uvec4: 16,\n bool: 4,\n bvec2: 8,\n bvec3: 12,\n bvec4: 16,\n mat2: 16 * 2,\n mat3: 16 * 3,\n mat4: 16 * 4\n};\nfunction createUBOElements(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n dataLen: 0,\n dirty: 0\n }));\n let size = 0;\n let chunkSize = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = GLSL_TO_STD40_SIZE[uboElement.data.type];\n if (uboElement.data.size > 1) {\n size = Math.max(size, 16) * uboElement.data.size;\n }\n uboElement.dataLen = size;\n if (chunkSize % size !== 0 && chunkSize < 16) {\n const lineUpValue = chunkSize % size % 16;\n chunkSize += lineUpValue;\n offset += lineUpValue;\n }\n if (chunkSize + size > 16) {\n offset = Math.ceil(offset / 16) * 16;\n uboElement.offset = offset;\n offset += size;\n chunkSize = size;\n } else {\n uboElement.offset = offset;\n chunkSize += size;\n offset += size;\n }\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\nfunction getUBOData(uniforms, uniformData) {\n const usedUniformDatas = [];\n for (const i in uniforms) {\n if (uniformData[i]) {\n usedUniformDatas.push(uniformData[i]);\n }\n }\n usedUniformDatas.sort((a, b) => a.index - b.index);\n return usedUniformDatas;\n}\nfunction generateUniformBufferSync(group, uniformData) {\n if (!group.autoManage) {\n return { size: 0, syncFunc: uboUpdate };\n }\n const usedUniformDatas = getUBOData(group.uniforms, uniformData);\n const { uboElements, size } = createUBOElements(usedUniformDatas);\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n `];\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n const uniform = group.uniforms[uboElement.data.name];\n const name = uboElement.data.name;\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const uniformParser = uniformParsers[j];\n if (uniformParser.codeUbo && uniformParser.test(uboElement.data, uniform)) {\n funcFragments.push(`offset = ${uboElement.offset / 4};`, uniformParsers[j].codeUbo(uboElement.data.name, uniform));\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n if (uboElement.data.size > 1) {\n const size2 = mapSize(uboElement.data.type);\n const rowSize = Math.max(GLSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = size2 / rowSize;\n const remainder = (4 - elementSize % 4) % 4;\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n data[offset++] = v[t++];\n }\n offset += ${remainder};\n }\n\n `);\n } else {\n const template = UBO_TO_SINGLE_SETTERS[uboElement.data.type];\n funcFragments.push(`\n cv = ud.${name}.value;\n v = uv.${name};\n offset = ${uboElement.offset / 4};\n ${template};\n `);\n }\n }\n }\n funcFragments.push(`\n renderer.buffer.update(buffer);\n `);\n return {\n size,\n syncFunc: new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", \"buffer\", funcFragments.join(\"\\n\"))\n };\n}\n\nexport { createUBOElements, generateUniformBufferSync, getUBOData };\n//# sourceMappingURL=generateUniformBufferSync.mjs.map\n","let unsafeEval;\nfunction unsafeEvalSupported() {\n if (typeof unsafeEval === \"boolean\") {\n return unsafeEval;\n }\n try {\n const func = new Function(\"param1\", \"param2\", \"param3\", \"return param1[param2] === param3;\");\n unsafeEval = func({ a: \"b\" }, \"a\", \"b\") === true;\n } catch (e) {\n unsafeEval = false;\n }\n return unsafeEval;\n}\n\nexport { unsafeEvalSupported };\n//# sourceMappingURL=unsafeEvalSupported.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport './utils/index.mjs';\nimport { generateProgram } from './utils/generateProgram.mjs';\nimport { generateUniformBufferSync } from './utils/generateUniformBufferSync.mjs';\nimport { unsafeEvalSupported } from './utils/unsafeEvalSupported.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\nlet UID = 0;\nconst defaultSyncData = { textureCount: 0, uboCount: 0 };\nclass ShaderSystem {\n constructor(renderer) {\n this.destroyed = false;\n this.renderer = renderer;\n this.systemCheck();\n this.gl = null;\n this.shader = null;\n this.program = null;\n this.cache = {};\n this._uboCache = {};\n this.id = UID++;\n }\n systemCheck() {\n if (!unsafeEvalSupported()) {\n throw new Error(\"Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.\");\n }\n }\n contextChange(gl) {\n this.gl = gl;\n this.reset();\n }\n bind(shader, dontSync) {\n shader.disposeRunner.add(this);\n shader.uniforms.globals = this.renderer.globalUniforms;\n const program = shader.program;\n const glProgram = program.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(shader);\n this.shader = shader;\n if (this.program !== program) {\n this.program = program;\n this.gl.useProgram(glProgram.program);\n }\n if (!dontSync) {\n defaultSyncData.textureCount = 0;\n defaultSyncData.uboCount = 0;\n this.syncUniformGroup(shader.uniformGroup, defaultSyncData);\n }\n return glProgram;\n }\n setUniforms(uniforms) {\n const shader = this.shader.program;\n const glProgram = shader.glPrograms[this.renderer.CONTEXT_UID];\n shader.syncUniforms(glProgram.uniformData, uniforms, this.renderer);\n }\n syncUniformGroup(group, syncData) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== glProgram.uniformDirtyGroups[group.id]) {\n glProgram.uniformDirtyGroups[group.id] = group.dirtyId;\n this.syncUniforms(group, glProgram, syncData);\n }\n }\n syncUniforms(group, glProgram, syncData) {\n const syncFunc = group.syncUniforms[this.shader.program.id] || this.createSyncGroups(group);\n syncFunc(glProgram.uniformData, group.uniforms, this.renderer, syncData);\n }\n createSyncGroups(group) {\n const id = this.getSignature(group, this.shader.program.uniformData, \"u\");\n if (!this.cache[id]) {\n this.cache[id] = generateUniformsSync(group, this.shader.program.uniformData);\n }\n group.syncUniforms[this.shader.program.id] = this.cache[id];\n return group.syncUniforms[this.shader.program.id];\n }\n syncUniformBufferGroup(group, name) {\n const glProgram = this.getGlProgram();\n if (!group.static || group.dirtyId !== 0 || !glProgram.uniformGroups[group.id]) {\n group.dirtyId = 0;\n const syncFunc = glProgram.uniformGroups[group.id] || this.createSyncBufferGroup(group, glProgram, name);\n group.buffer.update();\n syncFunc(glProgram.uniformData, group.uniforms, this.renderer, defaultSyncData, group.buffer);\n }\n this.renderer.buffer.bindBufferBase(group.buffer, glProgram.uniformBufferBindings[name]);\n }\n createSyncBufferGroup(group, glProgram, name) {\n const { gl } = this.renderer;\n this.renderer.buffer.bind(group.buffer);\n const uniformBlockIndex = this.gl.getUniformBlockIndex(glProgram.program, name);\n glProgram.uniformBufferBindings[name] = this.shader.uniformBindCount;\n gl.uniformBlockBinding(glProgram.program, uniformBlockIndex, this.shader.uniformBindCount);\n this.shader.uniformBindCount++;\n const id = this.getSignature(group, this.shader.program.uniformData, \"ubo\");\n let uboData = this._uboCache[id];\n if (!uboData) {\n uboData = this._uboCache[id] = generateUniformBufferSync(group, this.shader.program.uniformData);\n }\n if (group.autoManage) {\n const data = new Float32Array(uboData.size / 4);\n group.buffer.update(data);\n }\n glProgram.uniformGroups[group.id] = uboData.syncFunc;\n return glProgram.uniformGroups[group.id];\n }\n getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n getGlProgram() {\n if (this.shader) {\n return this.shader.program.glPrograms[this.renderer.CONTEXT_UID];\n }\n return null;\n }\n generateProgram(shader) {\n const gl = this.gl;\n const program = shader.program;\n const glProgram = generateProgram(gl, program);\n program.glPrograms[this.renderer.CONTEXT_UID] = glProgram;\n return glProgram;\n }\n reset() {\n this.program = null;\n this.shader = null;\n }\n disposeShader(shader) {\n if (this.shader === shader) {\n this.shader = null;\n }\n }\n destroy() {\n this.renderer = null;\n this.destroyed = true;\n }\n}\nShaderSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"shader\"\n};\nextensions.add(ShaderSystem);\n\nexport { ShaderSystem };\n//# sourceMappingURL=ShaderSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass StartupSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n run(options) {\n const { renderer } = this;\n renderer.runners.init.emit(renderer.options);\n if (options.hello) {\n console.log(`PixiJS ${\"7.2.4\"} - ${renderer.rendererLogId} - https://pixijs.com`);\n }\n renderer.resize(renderer.screen.width, renderer.screen.height);\n }\n destroy() {\n }\n}\nStartupSystem.defaultOptions = {\n hello: false\n};\nStartupSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"startup\"\n};\nextensions.add(StartupSystem);\n\nexport { StartupSystem };\n//# sourceMappingURL=StartupSystem.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { State } from './State.mjs';\nimport { mapWebGLBlendModesToPixi } from './utils/mapWebGLBlendModesToPixi.mjs';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _StateSystem = class {\n constructor() {\n this.gl = null;\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = BLEND_MODES.NONE;\n this._blendEq = false;\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n this.checks = [];\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gl) {\n this.gl = gl;\n this.blendModes = mapWebGLBlendModesToPixi(gl);\n this.set(this.defaultState);\n this.reset();\n }\n set(state) {\n state = state || this.defaultState;\n if (this.stateId !== state.data) {\n let diff = this.stateId ^ state.data;\n let i = 0;\n while (diff) {\n if (diff & 1) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n diff = diff >> 1;\n i++;\n }\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n }\n forceState(state) {\n state = state || this.defaultState;\n for (let i = 0; i < this.map.length; i++) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n this.stateId = state.data;\n }\n setBlend(value) {\n this.updateCheck(_StateSystem.checkBlendMode, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n setOffset(value) {\n this.updateCheck(_StateSystem.checkPolygonOffset, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n setCullFace(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n }\n setFrontFace(value) {\n this.gl.frontFace(this.gl[value ? \"CW\" : \"CCW\"]);\n }\n setBlendMode(value) {\n if (value === this.blendMode) {\n return;\n }\n this.blendMode = value;\n const mode = this.blendModes[value];\n const gl = this.gl;\n if (mode.length === 2) {\n gl.blendFunc(mode[0], mode[1]);\n } else {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n if (mode.length === 6) {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n } else if (this._blendEq) {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n reset() {\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n this.forceState(this.defaultState);\n this._blendEq = true;\n this.blendMode = -1;\n this.setBlendMode(0);\n }\n updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n if (value && index === -1) {\n this.checks.push(func);\n } else if (!value && index !== -1) {\n this.checks.splice(index, 1);\n }\n }\n static checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n static checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n destroy() {\n this.gl = null;\n }\n};\nlet StateSystem = _StateSystem;\nStateSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"state\"\n};\nextensions.add(StateSystem);\n\nexport { StateSystem };\n//# sourceMappingURL=StateSystem.mjs.map\n","import { BLEND_MODES } from '@pixi/constants';\n\nfunction mapWebGLBlendModesToPixi(gl, array = []) {\n array[BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.ADD] = [gl.ONE, gl.ONE];\n array[BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SCREEN] = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.NONE] = [0, 0];\n array[BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n array[BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO];\n array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO];\n array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE];\n array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA];\n array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA];\n array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD];\n return array;\n}\n\nexport { mapWebGLBlendModesToPixi };\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { Runner } from '@pixi/runner';\nimport { EventEmitter } from '@pixi/utils';\n\nclass SystemManager extends EventEmitter {\n constructor() {\n super(...arguments);\n this.runners = {};\n this._systemsHash = {};\n }\n setup(config) {\n this.addRunners(...config.runners);\n const priority = (config.priority ?? []).filter((key) => config.systems[key]);\n const orderByPriority = [\n ...priority,\n ...Object.keys(config.systems).filter((key) => !priority.includes(key))\n ];\n for (const i of orderByPriority) {\n this.addSystem(config.systems[i], i);\n }\n }\n addRunners(...runnerIds) {\n runnerIds.forEach((runnerId) => {\n this.runners[runnerId] = new Runner(runnerId);\n });\n }\n addSystem(ClassRef, name) {\n const system = new ClassRef(this);\n if (this[name]) {\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n }\n this[name] = system;\n this._systemsHash[name] = system;\n for (const i in this.runners) {\n this.runners[i].add(system);\n }\n return this;\n }\n emitWithCustomOptions(runner, options) {\n const systemHashKeys = Object.keys(this._systemsHash);\n runner.items.forEach((system) => {\n const systemName = systemHashKeys.find((systemId) => this._systemsHash[systemId] === system);\n system[runner.name](options[systemName]);\n });\n }\n destroy() {\n Object.values(this.runners).forEach((runner) => {\n runner.destroy();\n });\n this._systemsHash = {};\n }\n}\n\nexport { SystemManager };\n//# sourceMappingURL=SystemManager.mjs.map\n","import { GC_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nconst _TextureGCSystem = class {\n constructor(renderer) {\n this.renderer = renderer;\n this.count = 0;\n this.checkCount = 0;\n this.maxIdle = _TextureGCSystem.defaultMaxIdle;\n this.checkCountMax = _TextureGCSystem.defaultCheckCountMax;\n this.mode = _TextureGCSystem.defaultMode;\n }\n postrender() {\n if (!this.renderer.objectRenderer.renderingToScreen) {\n return;\n }\n this.count++;\n if (this.mode === GC_MODES.MANUAL) {\n return;\n }\n this.checkCount++;\n if (this.checkCount > this.checkCountMax) {\n this.checkCount = 0;\n this.run();\n }\n }\n run() {\n const tm = this.renderer.texture;\n const managedTextures = tm.managedTextures;\n let wasRemoved = false;\n for (let i = 0; i < managedTextures.length; i++) {\n const texture = managedTextures[i];\n if (!texture.framebuffer && this.count - texture.touched > this.maxIdle) {\n tm.destroyTexture(texture, true);\n managedTextures[i] = null;\n wasRemoved = true;\n }\n }\n if (wasRemoved) {\n let j = 0;\n for (let i = 0; i < managedTextures.length; i++) {\n if (managedTextures[i] !== null) {\n managedTextures[j++] = managedTextures[i];\n }\n }\n managedTextures.length = j;\n }\n }\n unload(displayObject) {\n const tm = this.renderer.texture;\n const texture = displayObject._texture;\n if (texture && !texture.framebuffer) {\n tm.destroyTexture(texture);\n }\n for (let i = displayObject.children.length - 1; i >= 0; i--) {\n this.unload(displayObject.children[i]);\n }\n }\n destroy() {\n this.renderer = null;\n }\n};\nlet TextureGCSystem = _TextureGCSystem;\nTextureGCSystem.defaultMode = GC_MODES.AUTO;\nTextureGCSystem.defaultMaxIdle = 60 * 60;\nTextureGCSystem.defaultCheckCountMax = 60 * 10;\nTextureGCSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"textureGC\"\n};\nextensions.add(TextureGCSystem);\n\nexport { TextureGCSystem };\n//# sourceMappingURL=TextureGCSystem.mjs.map\n","import { TYPES, FORMATS } from '@pixi/constants';\n\nclass GLTexture {\n constructor(texture) {\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.dirtyId = -1;\n this.dirtyStyleId = -1;\n this.mipmap = false;\n this.wrapMode = 33071;\n this.type = TYPES.UNSIGNED_BYTE;\n this.internalFormat = FORMATS.RGBA;\n this.samplerType = 0;\n }\n}\n\nexport { GLTexture };\n//# sourceMappingURL=GLTexture.mjs.map\n","import { SAMPLER_TYPES, TYPES, MIPMAP_MODES, WRAP_MODES, SCALE_MODES } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { removeItems } from '@pixi/utils';\nimport { BaseTexture } from './BaseTexture.mjs';\nimport { GLTexture } from './GLTexture.mjs';\nimport { mapTypeAndFormatToInternalFormat } from './utils/mapTypeAndFormatToInternalFormat.mjs';\n\nclass TextureSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.boundTextures = [];\n this.currentLocation = -1;\n this.managedTextures = [];\n this._unknownBoundTextures = false;\n this.unknownTexture = new BaseTexture();\n this.hasIntegerTextures = false;\n }\n contextChange() {\n const gl = this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n this.webGLVersion = this.renderer.context.webGLVersion;\n this.internalFormats = mapTypeAndFormatToInternalFormat(gl);\n const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.boundTextures.length = maxTextures;\n for (let i = 0; i < maxTextures; i++) {\n this.boundTextures[i] = null;\n }\n this.emptyTextures = {};\n const emptyTexture2D = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_2D, emptyTexture2D.texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4));\n this.emptyTextures[gl.TEXTURE_2D] = emptyTexture2D;\n this.emptyTextures[gl.TEXTURE_CUBE_MAP] = new GLTexture(gl.createTexture());\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, this.emptyTextures[gl.TEXTURE_CUBE_MAP].texture);\n for (let i = 0; i < 6; i++) {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n for (let i = 0; i < this.boundTextures.length; i++) {\n this.bind(null, i);\n }\n }\n bind(texture, location = 0) {\n const { gl } = this;\n texture = texture?.castToBaseTexture();\n if (texture?.valid && !texture.parentTextureArray) {\n texture.touched = this.renderer.textureGC.count;\n const glTexture = texture._glTextures[this.CONTEXT_UID] || this.initTexture(texture);\n if (this.boundTextures[location] !== texture) {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n gl.bindTexture(texture.target, glTexture.texture);\n }\n if (glTexture.dirtyId !== texture.dirtyId) {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n this.updateTexture(texture);\n } else if (glTexture.dirtyStyleId !== texture.dirtyStyleId) {\n this.updateTextureStyle(texture);\n }\n this.boundTextures[location] = texture;\n } else {\n if (this.currentLocation !== location) {\n this.currentLocation = location;\n gl.activeTexture(gl.TEXTURE0 + location);\n }\n gl.bindTexture(gl.TEXTURE_2D, this.emptyTextures[gl.TEXTURE_2D].texture);\n this.boundTextures[location] = null;\n }\n }\n reset() {\n this._unknownBoundTextures = true;\n this.hasIntegerTextures = false;\n this.currentLocation = -1;\n for (let i = 0; i < this.boundTextures.length; i++) {\n this.boundTextures[i] = this.unknownTexture;\n }\n }\n unbind(texture) {\n const { gl, boundTextures } = this;\n if (this._unknownBoundTextures) {\n this._unknownBoundTextures = false;\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === this.unknownTexture) {\n this.bind(null, i);\n }\n }\n }\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === texture) {\n if (this.currentLocation !== i) {\n gl.activeTexture(gl.TEXTURE0 + i);\n this.currentLocation = i;\n }\n gl.bindTexture(texture.target, this.emptyTextures[texture.target].texture);\n boundTextures[i] = null;\n }\n }\n }\n ensureSamplerType(maxTextures) {\n const { boundTextures, hasIntegerTextures, CONTEXT_UID } = this;\n if (!hasIntegerTextures) {\n return;\n }\n for (let i = maxTextures - 1; i >= 0; --i) {\n const tex = boundTextures[i];\n if (tex) {\n const glTexture = tex._glTextures[CONTEXT_UID];\n if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) {\n this.renderer.texture.unbind(tex);\n }\n }\n }\n }\n initTexture(texture) {\n const glTexture = new GLTexture(this.gl.createTexture());\n glTexture.dirtyId = -1;\n texture._glTextures[this.CONTEXT_UID] = glTexture;\n this.managedTextures.push(texture);\n texture.on(\"dispose\", this.destroyTexture, this);\n return glTexture;\n }\n initTextureType(texture, glTexture) {\n glTexture.internalFormat = this.internalFormats[texture.type]?.[texture.format] ?? texture.format;\n if (this.webGLVersion === 2 && texture.type === TYPES.HALF_FLOAT) {\n glTexture.type = this.gl.HALF_FLOAT;\n } else {\n glTexture.type = texture.type;\n }\n }\n updateTexture(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture) {\n return;\n }\n const renderer = this.renderer;\n this.initTextureType(texture, glTexture);\n if (texture.resource?.upload(renderer, texture, glTexture)) {\n if (glTexture.samplerType !== SAMPLER_TYPES.FLOAT) {\n this.hasIntegerTextures = true;\n }\n } else {\n const width = texture.realWidth;\n const height = texture.realHeight;\n const gl = renderer.gl;\n if (glTexture.width !== width || glTexture.height !== height || glTexture.dirtyId < 0) {\n glTexture.width = width;\n glTexture.height = height;\n gl.texImage2D(texture.target, 0, glTexture.internalFormat, width, height, 0, texture.format, glTexture.type, null);\n }\n }\n if (texture.dirtyStyleId !== glTexture.dirtyStyleId) {\n this.updateTextureStyle(texture);\n }\n glTexture.dirtyId = texture.dirtyId;\n }\n destroyTexture(texture, skipRemove) {\n const { gl } = this;\n texture = texture.castToBaseTexture();\n if (texture._glTextures[this.CONTEXT_UID]) {\n this.unbind(texture);\n gl.deleteTexture(texture._glTextures[this.CONTEXT_UID].texture);\n texture.off(\"dispose\", this.destroyTexture, this);\n delete texture._glTextures[this.CONTEXT_UID];\n if (!skipRemove) {\n const i = this.managedTextures.indexOf(texture);\n if (i !== -1) {\n removeItems(this.managedTextures, i, 1);\n }\n }\n }\n }\n updateTextureStyle(texture) {\n const glTexture = texture._glTextures[this.CONTEXT_UID];\n if (!glTexture) {\n return;\n }\n if ((texture.mipmap === MIPMAP_MODES.POW2 || this.webGLVersion !== 2) && !texture.isPowerOfTwo) {\n glTexture.mipmap = false;\n } else {\n glTexture.mipmap = texture.mipmap >= 1;\n }\n if (this.webGLVersion !== 2 && !texture.isPowerOfTwo) {\n glTexture.wrapMode = WRAP_MODES.CLAMP;\n } else {\n glTexture.wrapMode = texture.wrapMode;\n }\n if (texture.resource?.style(this.renderer, texture, glTexture)) {\n } else {\n this.setStyle(texture, glTexture);\n }\n glTexture.dirtyStyleId = texture.dirtyStyleId;\n }\n setStyle(texture, glTexture) {\n const gl = this.gl;\n if (glTexture.mipmap && texture.mipmap !== MIPMAP_MODES.ON_MANUAL) {\n gl.generateMipmap(texture.target);\n }\n gl.texParameteri(texture.target, gl.TEXTURE_WRAP_S, glTexture.wrapMode);\n gl.texParameteri(texture.target, gl.TEXTURE_WRAP_T, glTexture.wrapMode);\n if (glTexture.mipmap) {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST);\n const anisotropicExt = this.renderer.context.extensions.anisotropicFiltering;\n if (anisotropicExt && texture.anisotropicLevel > 0 && texture.scaleMode === SCALE_MODES.LINEAR) {\n const level = Math.min(texture.anisotropicLevel, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl.texParameterf(texture.target, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n } else {\n gl.texParameteri(texture.target, gl.TEXTURE_MIN_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n gl.texParameteri(texture.target, gl.TEXTURE_MAG_FILTER, texture.scaleMode === SCALE_MODES.LINEAR ? gl.LINEAR : gl.NEAREST);\n }\n destroy() {\n this.renderer = null;\n }\n}\nTextureSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"texture\"\n};\nextensions.add(TextureSystem);\n\nexport { TextureSystem };\n//# sourceMappingURL=TextureSystem.mjs.map\n","import { TYPES, FORMATS } from '@pixi/constants';\n\nfunction mapTypeAndFormatToInternalFormat(gl) {\n let table;\n if (\"WebGL2RenderingContext\" in globalThis && gl instanceof globalThis.WebGL2RenderingContext) {\n table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8,\n [FORMATS.RGB]: gl.RGB8,\n [FORMATS.RG]: gl.RG8,\n [FORMATS.RED]: gl.R8,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8UI,\n [FORMATS.RGB_INTEGER]: gl.RGB8UI,\n [FORMATS.RG_INTEGER]: gl.RG8UI,\n [FORMATS.RED_INTEGER]: gl.R8UI,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.BYTE]: {\n [FORMATS.RGBA]: gl.RGBA8_SNORM,\n [FORMATS.RGB]: gl.RGB8_SNORM,\n [FORMATS.RG]: gl.RG8_SNORM,\n [FORMATS.RED]: gl.R8_SNORM,\n [FORMATS.RGBA_INTEGER]: gl.RGBA8I,\n [FORMATS.RGB_INTEGER]: gl.RGB8I,\n [FORMATS.RG_INTEGER]: gl.RG8I,\n [FORMATS.RED_INTEGER]: gl.R8I\n },\n [TYPES.UNSIGNED_SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16UI,\n [FORMATS.RGB_INTEGER]: gl.RGB16UI,\n [FORMATS.RG_INTEGER]: gl.RG16UI,\n [FORMATS.RED_INTEGER]: gl.R16UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT16\n },\n [TYPES.SHORT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA16I,\n [FORMATS.RGB_INTEGER]: gl.RGB16I,\n [FORMATS.RG_INTEGER]: gl.RG16I,\n [FORMATS.RED_INTEGER]: gl.R16I\n },\n [TYPES.UNSIGNED_INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32UI,\n [FORMATS.RGB_INTEGER]: gl.RGB32UI,\n [FORMATS.RG_INTEGER]: gl.RG32UI,\n [FORMATS.RED_INTEGER]: gl.R32UI,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT24\n },\n [TYPES.INT]: {\n [FORMATS.RGBA_INTEGER]: gl.RGBA32I,\n [FORMATS.RGB_INTEGER]: gl.RGB32I,\n [FORMATS.RG_INTEGER]: gl.RG32I,\n [FORMATS.RED_INTEGER]: gl.R32I\n },\n [TYPES.FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA32F,\n [FORMATS.RGB]: gl.RGB32F,\n [FORMATS.RG]: gl.RG32F,\n [FORMATS.RED]: gl.R32F,\n [FORMATS.DEPTH_COMPONENT]: gl.DEPTH_COMPONENT32F\n },\n [TYPES.HALF_FLOAT]: {\n [FORMATS.RGBA]: gl.RGBA16F,\n [FORMATS.RGB]: gl.RGB16F,\n [FORMATS.RG]: gl.RG16F,\n [FORMATS.RED]: gl.R16F\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB565\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA4\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGB5_A1\n },\n [TYPES.UNSIGNED_INT_2_10_10_10_REV]: {\n [FORMATS.RGBA]: gl.RGB10_A2,\n [FORMATS.RGBA_INTEGER]: gl.RGB10_A2UI\n },\n [TYPES.UNSIGNED_INT_10F_11F_11F_REV]: {\n [FORMATS.RGB]: gl.R11F_G11F_B10F\n },\n [TYPES.UNSIGNED_INT_5_9_9_9_REV]: {\n [FORMATS.RGB]: gl.RGB9_E5\n },\n [TYPES.UNSIGNED_INT_24_8]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH24_STENCIL8\n },\n [TYPES.FLOAT_32_UNSIGNED_INT_24_8_REV]: {\n [FORMATS.DEPTH_STENCIL]: gl.DEPTH32F_STENCIL8\n }\n };\n } else {\n table = {\n [TYPES.UNSIGNED_BYTE]: {\n [FORMATS.RGBA]: gl.RGBA,\n [FORMATS.RGB]: gl.RGB,\n [FORMATS.ALPHA]: gl.ALPHA,\n [FORMATS.LUMINANCE]: gl.LUMINANCE,\n [FORMATS.LUMINANCE_ALPHA]: gl.LUMINANCE_ALPHA\n },\n [TYPES.UNSIGNED_SHORT_5_6_5]: {\n [FORMATS.RGB]: gl.RGB\n },\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: {\n [FORMATS.RGBA]: gl.RGBA\n },\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: {\n [FORMATS.RGBA]: gl.RGBA\n }\n };\n }\n return table;\n}\n\nexport { mapTypeAndFormatToInternalFormat };\n//# sourceMappingURL=mapTypeAndFormatToInternalFormat.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass TransformFeedbackSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange() {\n this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n bind(transformFeedback) {\n const { gl, CONTEXT_UID } = this;\n const glTransformFeedback = transformFeedback._glTransformFeedbacks[CONTEXT_UID] || this.createGLTransformFeedback(transformFeedback);\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n }\n unbind() {\n const { gl } = this;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n }\n beginTransformFeedback(drawMode, shader) {\n const { gl, renderer } = this;\n if (shader) {\n renderer.shader.bind(shader);\n }\n gl.beginTransformFeedback(drawMode);\n }\n endTransformFeedback() {\n const { gl } = this;\n gl.endTransformFeedback();\n }\n createGLTransformFeedback(tf) {\n const { gl, renderer, CONTEXT_UID } = this;\n const glTransformFeedback = gl.createTransformFeedback();\n tf._glTransformFeedbacks[CONTEXT_UID] = glTransformFeedback;\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, glTransformFeedback);\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n renderer.buffer.update(buffer);\n buffer._glBuffers[CONTEXT_UID].refCount++;\n gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, i, buffer._glBuffers[CONTEXT_UID].buffer || null);\n }\n gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n tf.disposeRunner.add(this);\n return glTransformFeedback;\n }\n disposeTransformFeedback(tf, contextLost) {\n const glTF = tf._glTransformFeedbacks[this.CONTEXT_UID];\n const gl = this.gl;\n tf.disposeRunner.remove(this);\n const bufferSystem = this.renderer.buffer;\n if (bufferSystem) {\n for (let i = 0; i < tf.buffers.length; i++) {\n const buffer = tf.buffers[i];\n if (!buffer)\n continue;\n const buf = buffer._glBuffers[this.CONTEXT_UID];\n if (buf) {\n buf.refCount--;\n if (buf.refCount === 0 && !contextLost) {\n bufferSystem.dispose(buffer, contextLost);\n }\n }\n }\n }\n if (!glTF) {\n return;\n }\n if (!contextLost) {\n gl.deleteTransformFeedback(glTF);\n }\n delete tf._glTransformFeedbacks[this.CONTEXT_UID];\n }\n destroy() {\n this.renderer = null;\n }\n}\nTransformFeedbackSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"transformFeedback\"\n};\nextensions.add(TransformFeedbackSystem);\n\nexport { TransformFeedbackSystem };\n//# sourceMappingURL=TransformFeedbackSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { Rectangle } from '@pixi/math';\nimport { settings } from '@pixi/settings';\n\nclass ViewSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n init(options) {\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.element = options.view || settings.ADAPTER.createCanvas();\n this.resolution = options.resolution || settings.RESOLUTION;\n this.autoDensity = !!options.autoDensity;\n }\n resizeView(desiredScreenWidth, desiredScreenHeight) {\n this.element.width = Math.round(desiredScreenWidth * this.resolution);\n this.element.height = Math.round(desiredScreenHeight * this.resolution);\n const screenWidth = this.element.width / this.resolution;\n const screenHeight = this.element.height / this.resolution;\n this.screen.width = screenWidth;\n this.screen.height = screenHeight;\n if (this.autoDensity) {\n this.element.style.width = `${screenWidth}px`;\n this.element.style.height = `${screenHeight}px`;\n }\n this.renderer.emit(\"resize\", screenWidth, screenHeight);\n this.renderer.runners.resize.emit(this.screen.width, this.screen.height);\n }\n destroy(removeView) {\n if (removeView) {\n this.element.parentNode?.removeChild(this.element);\n }\n this.renderer = null;\n this.element = null;\n this.screen = null;\n }\n}\nViewSystem.defaultOptions = {\n width: 800,\n height: 600,\n resolution: settings.RESOLUTION,\n autoDensity: false\n};\nViewSystem.extension = {\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ],\n name: \"_view\"\n};\nextensions.add(ViewSystem);\n\nexport { ViewSystem };\n//# sourceMappingURL=ViewSystem.mjs.map\n","import { ENV } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { deprecation } from '@pixi/utils';\nimport { BatchRenderer } from './batch/BatchRenderer.mjs';\nimport { Filter } from './filters/Filter.mjs';\nimport { Program } from './shader/Program.mjs';\nimport './systems.mjs';\nimport { BaseTexture } from './textures/BaseTexture.mjs';\nimport { ContextSystem } from './context/ContextSystem.mjs';\nimport { BackgroundSystem } from './background/BackgroundSystem.mjs';\nimport { ViewSystem } from './view/ViewSystem.mjs';\nimport { StartupSystem } from './startup/StartupSystem.mjs';\nimport { TextureGCSystem } from './textures/TextureGCSystem.mjs';\n\nsettings.PREFER_ENV = ENV.WEBGL2;\nsettings.STRICT_TEXTURE_CACHE = false;\nsettings.RENDER_OPTIONS = {\n ...ContextSystem.defaultOptions,\n ...BackgroundSystem.defaultOptions,\n ...ViewSystem.defaultOptions,\n ...StartupSystem.defaultOptions\n};\nObject.defineProperties(settings, {\n WRAP_MODE: {\n get() {\n return BaseTexture.defaultOptions.wrapMode;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode\");\n BaseTexture.defaultOptions.wrapMode = value;\n }\n },\n SCALE_MODE: {\n get() {\n return BaseTexture.defaultOptions.scaleMode;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode\");\n BaseTexture.defaultOptions.scaleMode = value;\n }\n },\n MIPMAP_TEXTURES: {\n get() {\n return BaseTexture.defaultOptions.mipmap;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap\");\n BaseTexture.defaultOptions.mipmap = value;\n }\n },\n ANISOTROPIC_LEVEL: {\n get() {\n return BaseTexture.defaultOptions.anisotropicLevel;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel\");\n BaseTexture.defaultOptions.anisotropicLevel = value;\n }\n },\n FILTER_RESOLUTION: {\n get() {\n deprecation(\"7.1.0\", \"settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution\");\n return Filter.defaultResolution;\n },\n set(value) {\n Filter.defaultResolution = value;\n }\n },\n FILTER_MULTISAMPLE: {\n get() {\n deprecation(\"7.1.0\", \"settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample\");\n return Filter.defaultMultisample;\n },\n set(value) {\n Filter.defaultMultisample = value;\n }\n },\n SPRITE_MAX_TEXTURES: {\n get() {\n return BatchRenderer.defaultMaxTextures;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures\");\n BatchRenderer.defaultMaxTextures = value;\n }\n },\n SPRITE_BATCH_SIZE: {\n get() {\n return BatchRenderer.defaultBatchSize;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize\");\n BatchRenderer.defaultBatchSize = value;\n }\n },\n CAN_UPLOAD_SAME_BUFFER: {\n get() {\n return BatchRenderer.canUploadSameBuffer;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer\");\n BatchRenderer.canUploadSameBuffer = value;\n }\n },\n GC_MODE: {\n get() {\n return TextureGCSystem.defaultMode;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode\");\n TextureGCSystem.defaultMode = value;\n }\n },\n GC_MAX_IDLE: {\n get() {\n return TextureGCSystem.defaultMaxIdle;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle\");\n TextureGCSystem.defaultMaxIdle = value;\n }\n },\n GC_MAX_CHECK_COUNT: {\n get() {\n return TextureGCSystem.defaultCheckCountMax;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax\");\n TextureGCSystem.defaultCheckCountMax = value;\n }\n },\n PRECISION_VERTEX: {\n get() {\n return Program.defaultVertexPrecision;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision\");\n Program.defaultVertexPrecision = value;\n }\n },\n PRECISION_FRAGMENT: {\n get() {\n return Program.defaultFragmentPrecision;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision\");\n Program.defaultFragmentPrecision = value;\n }\n }\n});\n//# sourceMappingURL=settings.mjs.map\n","import { extensions, ExtensionType } from '@pixi/extensions';\n\nconst renderers = [];\nextensions.handleByList(ExtensionType.Renderer, renderers);\nfunction autoDetectRenderer(options) {\n for (const RendererType of renderers) {\n if (RendererType.test(options)) {\n return new RendererType(options);\n }\n }\n throw new Error(\"Unable to auto-detect a suitable renderer.\");\n}\n\nexport { autoDetectRenderer };\n//# sourceMappingURL=autoDetectRenderer.mjs.map\n","import $defaultVertex from './default.mjs';\nimport $defaultFilterVertex from './defaultFilter.mjs';\n\nconst defaultVertex = $defaultVertex;\nconst defaultFilterVertex = $defaultFilterVertex;\n\nexport { defaultFilterVertex, defaultVertex };\n//# sourceMappingURL=index.mjs.map\n","var $defaultVertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n vTextureCoord = aTextureCoord;\\n}\";\n\nexport { $defaultVertex as default };\n//# sourceMappingURL=default.mjs.map\n","var $defaultFilterVertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n gl_Position = filterVertexPosition();\\n vTextureCoord = filterTextureCoord();\\n}\\n\";\n\nexport { $defaultFilterVertex as default };\n//# sourceMappingURL=defaultFilter.mjs.map\n","import { MSAA_QUALITY } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\n\nclass MultisampleSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n contextChange(gl) {\n let samples;\n if (this.renderer.context.webGLVersion === 1) {\n const framebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n samples = gl.getParameter(gl.SAMPLES);\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n } else {\n const framebuffer = gl.getParameter(gl.DRAW_FRAMEBUFFER_BINDING);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n samples = gl.getParameter(gl.SAMPLES);\n gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer);\n }\n if (samples >= MSAA_QUALITY.HIGH) {\n this.multisample = MSAA_QUALITY.HIGH;\n } else if (samples >= MSAA_QUALITY.MEDIUM) {\n this.multisample = MSAA_QUALITY.MEDIUM;\n } else if (samples >= MSAA_QUALITY.LOW) {\n this.multisample = MSAA_QUALITY.LOW;\n } else {\n this.multisample = MSAA_QUALITY.NONE;\n }\n }\n destroy() {\n }\n}\nMultisampleSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"_multisample\"\n};\nextensions.add(MultisampleSystem);\n\nexport { MultisampleSystem };\n//# sourceMappingURL=MultisampleSystem.mjs.map\n","class GLBuffer {\n constructor(buffer) {\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.refCount = 0;\n }\n}\n\nexport { GLBuffer };\n//# sourceMappingURL=GLBuffer.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { GLBuffer } from './GLBuffer.mjs';\n\nclass BufferSystem {\n constructor(renderer) {\n this.renderer = renderer;\n this.managedBuffers = {};\n this.boundBufferBases = {};\n }\n destroy() {\n this.renderer = null;\n }\n contextChange() {\n this.disposeAll(true);\n this.gl = this.renderer.gl;\n this.CONTEXT_UID = this.renderer.CONTEXT_UID;\n }\n bind(buffer) {\n const { gl, CONTEXT_UID } = this;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n }\n unbind(type) {\n const { gl } = this;\n gl.bindBuffer(type, null);\n }\n bindBufferBase(buffer, index) {\n const { gl, CONTEXT_UID } = this;\n if (this.boundBufferBases[index] !== buffer) {\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n this.boundBufferBases[index] = buffer;\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n bindBufferRange(buffer, index, offset) {\n const { gl, CONTEXT_UID } = this;\n offset = offset || 0;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256);\n }\n update(buffer) {\n const { gl, CONTEXT_UID } = this;\n const glBuffer = buffer._glBuffers[CONTEXT_UID] || this.createGLBuffer(buffer);\n if (buffer._updateID === glBuffer.updateID) {\n return;\n }\n glBuffer.updateID = buffer._updateID;\n gl.bindBuffer(buffer.type, glBuffer.buffer);\n if (glBuffer.byteLength >= buffer.data.byteLength) {\n gl.bufferSubData(buffer.type, 0, buffer.data);\n } else {\n const drawType = buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n glBuffer.byteLength = buffer.data.byteLength;\n gl.bufferData(buffer.type, buffer.data, drawType);\n }\n }\n dispose(buffer, contextLost) {\n if (!this.managedBuffers[buffer.id]) {\n return;\n }\n delete this.managedBuffers[buffer.id];\n const glBuffer = buffer._glBuffers[this.CONTEXT_UID];\n const gl = this.gl;\n buffer.disposeRunner.remove(this);\n if (!glBuffer) {\n return;\n }\n if (!contextLost) {\n gl.deleteBuffer(glBuffer.buffer);\n }\n delete buffer._glBuffers[this.CONTEXT_UID];\n }\n disposeAll(contextLost) {\n const all = Object.keys(this.managedBuffers);\n for (let i = 0; i < all.length; i++) {\n this.dispose(this.managedBuffers[all[i]], contextLost);\n }\n }\n createGLBuffer(buffer) {\n const { CONTEXT_UID, gl } = this;\n buffer._glBuffers[CONTEXT_UID] = new GLBuffer(gl.createBuffer());\n this.managedBuffers[buffer.id] = buffer;\n buffer.disposeRunner.add(this);\n return buffer._glBuffers[CONTEXT_UID];\n }\n}\nBufferSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"buffer\"\n};\nextensions.add(BufferSystem);\n\nexport { BufferSystem };\n//# sourceMappingURL=BufferSystem.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\n\nclass ObjectRendererSystem {\n constructor(renderer) {\n this.renderer = renderer;\n }\n render(displayObject, options) {\n const renderer = this.renderer;\n let renderTexture;\n let clear;\n let transform;\n let skipUpdateTransform;\n if (options) {\n renderTexture = options.renderTexture;\n clear = options.clear;\n transform = options.transform;\n skipUpdateTransform = options.skipUpdateTransform;\n }\n this.renderingToScreen = !renderTexture;\n renderer.runners.prerender.emit();\n renderer.emit(\"prerender\");\n renderer.projection.transform = transform;\n if (renderer.context.isLost) {\n return;\n }\n if (!renderTexture) {\n this.lastObjectRendered = displayObject;\n }\n if (!skipUpdateTransform) {\n const cacheParent = displayObject.enableTempParent();\n displayObject.updateTransform();\n displayObject.disableTempParent(cacheParent);\n }\n renderer.renderTexture.bind(renderTexture);\n renderer.batch.currentRenderer.start();\n if (clear ?? renderer.background.clearBeforeRender) {\n renderer.renderTexture.clear();\n }\n displayObject.render(renderer);\n renderer.batch.currentRenderer.flush();\n if (renderTexture) {\n if (options.blit) {\n renderer.framebuffer.blit();\n }\n renderTexture.baseTexture.update();\n }\n renderer.runners.postrender.emit();\n renderer.projection.transform = null;\n renderer.emit(\"postrender\");\n }\n destroy() {\n this.renderer = null;\n this.lastObjectRendered = null;\n }\n}\nObjectRendererSystem.extension = {\n type: ExtensionType.RendererSystem,\n name: \"objectRenderer\"\n};\nextensions.add(ObjectRendererSystem);\n\nexport { ObjectRendererSystem };\n//# sourceMappingURL=ObjectRendererSystem.mjs.map\n","import { RENDERER_TYPE } from '@pixi/constants';\nimport { ExtensionType, extensions } from '@pixi/extensions';\nimport { Matrix } from '@pixi/math';\nimport { settings } from '@pixi/settings';\nimport { deprecation, isWebGLSupported } from '@pixi/utils';\nimport { UniformGroup } from './shader/UniformGroup.mjs';\nimport { SystemManager } from './system/SystemManager.mjs';\n\nconst _Renderer = class extends SystemManager {\n constructor(options) {\n super();\n this.type = RENDERER_TYPE.WEBGL;\n options = Object.assign({}, settings.RENDER_OPTIONS, options);\n this.gl = null;\n this.CONTEXT_UID = 0;\n this.globalUniforms = new UniformGroup({\n projectionMatrix: new Matrix()\n }, true);\n const systemConfig = {\n runners: [\n \"init\",\n \"destroy\",\n \"contextChange\",\n \"resolutionChange\",\n \"reset\",\n \"update\",\n \"postrender\",\n \"prerender\",\n \"resize\"\n ],\n systems: _Renderer.__systems,\n priority: [\n \"_view\",\n \"textureGenerator\",\n \"background\",\n \"_plugin\",\n \"startup\",\n \"context\",\n \"state\",\n \"texture\",\n \"buffer\",\n \"geometry\",\n \"framebuffer\",\n \"transformFeedback\",\n \"mask\",\n \"scissor\",\n \"stencil\",\n \"projection\",\n \"textureGC\",\n \"filter\",\n \"renderTexture\",\n \"batch\",\n \"objectRenderer\",\n \"_multisample\"\n ]\n };\n this.setup(systemConfig);\n if (\"useContextAlpha\" in options) {\n deprecation(\"7.0.0\", \"options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead\");\n options.premultipliedAlpha = options.useContextAlpha && options.useContextAlpha !== \"notMultiplied\";\n options.backgroundAlpha = options.useContextAlpha === false ? 1 : options.backgroundAlpha;\n }\n this._plugin.rendererPlugins = _Renderer.__plugins;\n this.options = options;\n this.startup.run(this.options);\n }\n static test(options) {\n if (options?.forceCanvas) {\n return false;\n }\n return isWebGLSupported();\n }\n render(displayObject, options) {\n this.objectRenderer.render(displayObject, options);\n }\n resize(desiredScreenWidth, desiredScreenHeight) {\n this._view.resizeView(desiredScreenWidth, desiredScreenHeight);\n }\n reset() {\n this.runners.reset.emit();\n return this;\n }\n clear() {\n this.renderTexture.bind();\n this.renderTexture.clear();\n }\n destroy(removeView = false) {\n this.runners.destroy.items.reverse();\n this.emitWithCustomOptions(this.runners.destroy, {\n _view: removeView\n });\n super.destroy();\n }\n get plugins() {\n return this._plugin.plugins;\n }\n get multisample() {\n return this._multisample.multisample;\n }\n get width() {\n return this._view.element.width;\n }\n get height() {\n return this._view.element.height;\n }\n get resolution() {\n return this._view.resolution;\n }\n set resolution(value) {\n this._view.resolution = value;\n this.runners.resolutionChange.emit(value);\n }\n get autoDensity() {\n return this._view.autoDensity;\n }\n get view() {\n return this._view.element;\n }\n get screen() {\n return this._view.screen;\n }\n get lastObjectRendered() {\n return this.objectRenderer.lastObjectRendered;\n }\n get renderingToScreen() {\n return this.objectRenderer.renderingToScreen;\n }\n get rendererLogId() {\n return `WebGL ${this.context.webGLVersion}`;\n }\n get clearBeforeRender() {\n deprecation(\"7.0.0\", \"renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead.\");\n return this.background.clearBeforeRender;\n }\n get useContextAlpha() {\n deprecation(\"7.0.0\", \"renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead.\");\n return this.context.useContextAlpha;\n }\n get preserveDrawingBuffer() {\n deprecation(\"7.0.0\", \"renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context\");\n return this.context.preserveDrawingBuffer;\n }\n get backgroundColor() {\n deprecation(\"7.0.0\", \"renderer.backgroundColor has been deprecated, use renderer.background.color instead.\");\n return this.background.color;\n }\n set backgroundColor(value) {\n deprecation(\"7.0.0\", \"renderer.backgroundColor has been deprecated, use renderer.background.color instead.\");\n this.background.color = value;\n }\n get backgroundAlpha() {\n deprecation(\"7.0.0\", \"renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.\");\n return this.background.alpha;\n }\n set backgroundAlpha(value) {\n deprecation(\"7.0.0\", \"renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.\");\n this.background.alpha = value;\n }\n get powerPreference() {\n deprecation(\"7.0.0\", \"renderer.powerPreference has been deprecated, we can only know this if pixi creates the context\");\n return this.context.powerPreference;\n }\n generateTexture(displayObject, options) {\n return this.textureGenerator.generateTexture(displayObject, options);\n }\n};\nlet Renderer = _Renderer;\nRenderer.extension = {\n type: ExtensionType.Renderer,\n priority: 1\n};\nRenderer.__plugins = {};\nRenderer.__systems = {};\nextensions.handleByMap(ExtensionType.RendererPlugin, Renderer.__plugins);\nextensions.handleByMap(ExtensionType.RendererSystem, Renderer.__systems);\nextensions.add(Renderer);\n\nexport { Renderer };\n//# sourceMappingURL=Renderer.mjs.map\n","import { BaseTexture } from '../BaseTexture.mjs';\nimport { autoDetectResource } from './autoDetectResource.mjs';\nimport { Resource } from './Resource.mjs';\n\nclass AbstractMultiResource extends Resource {\n constructor(length, options) {\n const { width, height } = options || {};\n super(width, height);\n this.items = [];\n this.itemDirtyIds = [];\n for (let i = 0; i < length; i++) {\n const partTexture = new BaseTexture();\n this.items.push(partTexture);\n this.itemDirtyIds.push(-2);\n }\n this.length = length;\n this._load = null;\n this.baseTexture = null;\n }\n initFromArray(resources, options) {\n for (let i = 0; i < this.length; i++) {\n if (!resources[i]) {\n continue;\n }\n if (resources[i].castToBaseTexture) {\n this.addBaseTextureAt(resources[i].castToBaseTexture(), i);\n } else if (resources[i] instanceof Resource) {\n this.addResourceAt(resources[i], i);\n } else {\n this.addResourceAt(autoDetectResource(resources[i], options), i);\n }\n }\n }\n dispose() {\n for (let i = 0, len = this.length; i < len; i++) {\n this.items[i].destroy();\n }\n this.items = null;\n this.itemDirtyIds = null;\n this._load = null;\n }\n addResourceAt(resource, index) {\n if (!this.items[index]) {\n throw new Error(`Index ${index} is out of bounds`);\n }\n if (resource.valid && !this.valid) {\n this.resize(resource.width, resource.height);\n }\n this.items[index].setResource(resource);\n return this;\n }\n bind(baseTexture) {\n if (this.baseTexture !== null) {\n throw new Error(\"Only one base texture per TextureArray is allowed\");\n }\n super.bind(baseTexture);\n for (let i = 0; i < this.length; i++) {\n this.items[i].parentTextureArray = baseTexture;\n this.items[i].on(\"update\", baseTexture.update, baseTexture);\n }\n }\n unbind(baseTexture) {\n super.unbind(baseTexture);\n for (let i = 0; i < this.length; i++) {\n this.items[i].parentTextureArray = null;\n this.items[i].off(\"update\", baseTexture.update, baseTexture);\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n const resources = this.items.map((item) => item.resource).filter((item) => item);\n const promises = resources.map((item) => item.load());\n this._load = Promise.all(promises).then(() => {\n const { realWidth, realHeight } = this.items[0];\n this.resize(realWidth, realHeight);\n return Promise.resolve(this);\n });\n return this._load;\n }\n}\n\nexport { AbstractMultiResource };\n//# sourceMappingURL=AbstractMultiResource.mjs.map\n","import { BaseImageResource } from './BaseImageResource.mjs';\n\nclass CanvasResource extends BaseImageResource {\n constructor(source) {\n super(source);\n }\n static test(source) {\n const { OffscreenCanvas } = globalThis;\n if (OffscreenCanvas && source instanceof OffscreenCanvas) {\n return true;\n }\n return globalThis.HTMLCanvasElement && source instanceof HTMLCanvasElement;\n }\n}\n\nexport { CanvasResource };\n//# sourceMappingURL=CanvasResource.mjs.map\n","import { TARGETS } from '@pixi/constants';\nimport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nconst _CubeResource = class extends AbstractMultiResource {\n constructor(source, options) {\n const { width, height, autoLoad, linkBaseTexture } = options || {};\n if (source && source.length !== _CubeResource.SIDES) {\n throw new Error(`Invalid length. Got ${source.length}, expected 6`);\n }\n super(6, { width, height });\n for (let i = 0; i < _CubeResource.SIDES; i++) {\n this.items[i].target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n }\n this.linkBaseTexture = linkBaseTexture !== false;\n if (source) {\n this.initFromArray(source, options);\n }\n if (autoLoad !== false) {\n this.load();\n }\n }\n bind(baseTexture) {\n super.bind(baseTexture);\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP;\n }\n addBaseTextureAt(baseTexture, index, linkBaseTexture) {\n if (linkBaseTexture === void 0) {\n linkBaseTexture = this.linkBaseTexture;\n }\n if (!this.items[index]) {\n throw new Error(`Index ${index} is out of bounds`);\n }\n if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0) {\n if (baseTexture.resource) {\n this.addResourceAt(baseTexture.resource, index);\n } else {\n throw new Error(`CubeResource does not support copying of renderTexture.`);\n }\n } else {\n baseTexture.target = TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index;\n baseTexture.parentTextureArray = this.baseTexture;\n this.items[index] = baseTexture;\n }\n if (baseTexture.valid && !this.valid) {\n this.resize(baseTexture.realWidth, baseTexture.realHeight);\n }\n this.items[index] = baseTexture;\n return this;\n }\n upload(renderer, _baseTexture, glTexture) {\n const dirty = this.itemDirtyIds;\n for (let i = 0; i < _CubeResource.SIDES; i++) {\n const side = this.items[i];\n if (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) {\n if (side.valid && side.resource) {\n side.resource.upload(renderer, side, glTexture);\n dirty[i] = side.dirtyId;\n } else if (dirty[i] < -1) {\n renderer.gl.texImage2D(side.target, 0, glTexture.internalFormat, _baseTexture.realWidth, _baseTexture.realHeight, 0, _baseTexture.format, glTexture.type, null);\n dirty[i] = -1;\n }\n }\n }\n return true;\n }\n static test(source) {\n return Array.isArray(source) && source.length === _CubeResource.SIDES;\n }\n};\nlet CubeResource = _CubeResource;\nCubeResource.SIDES = 6;\n\nexport { CubeResource };\n//# sourceMappingURL=CubeResource.mjs.map\n","import { ALPHA_MODES } from '@pixi/constants';\nimport { settings } from '@pixi/settings';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nclass ImageBitmapResource extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n let baseSource;\n let url;\n if (typeof source === \"string\") {\n baseSource = ImageBitmapResource.EMPTY;\n url = source;\n } else {\n baseSource = source;\n url = null;\n }\n super(baseSource);\n this.url = url;\n this.crossOrigin = options.crossOrigin ?? true;\n this.alphaMode = typeof options.alphaMode === \"number\" ? options.alphaMode : null;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = new Promise(async (resolve, reject) => {\n if (this.url === null) {\n resolve(this);\n return;\n }\n try {\n const response = await settings.ADAPTER.fetch(this.url, {\n mode: this.crossOrigin ? \"cors\" : \"no-cors\"\n });\n if (this.destroyed)\n return;\n const imageBlob = await response.blob();\n if (this.destroyed)\n return;\n const imageBitmap = await createImageBitmap(imageBlob, {\n premultiplyAlpha: this.alphaMode === null || this.alphaMode === ALPHA_MODES.UNPACK ? \"premultiply\" : \"none\"\n });\n if (this.destroyed)\n return;\n this.source = imageBitmap;\n this.update();\n resolve(this);\n } catch (e) {\n if (this.destroyed)\n return;\n reject(e);\n this.onError.emit(e);\n }\n });\n return this._load;\n }\n upload(renderer, baseTexture, glTexture) {\n if (!(this.source instanceof ImageBitmap)) {\n this.load();\n return false;\n }\n if (typeof this.alphaMode === \"number\") {\n baseTexture.alphaMode = this.alphaMode;\n }\n return super.upload(renderer, baseTexture, glTexture);\n }\n dispose() {\n if (this.source instanceof ImageBitmap) {\n this.source.close();\n }\n super.dispose();\n this._load = null;\n }\n static test(source) {\n return !!globalThis.createImageBitmap && typeof ImageBitmap !== \"undefined\" && (typeof source === \"string\" || source instanceof ImageBitmap);\n }\n static get EMPTY() {\n ImageBitmapResource._EMPTY = ImageBitmapResource._EMPTY ?? settings.ADAPTER.createCanvas(0, 0);\n return ImageBitmapResource._EMPTY;\n }\n}\n\nexport { ImageBitmapResource };\n//# sourceMappingURL=ImageBitmapResource.mjs.map\n","import { settings } from '@pixi/settings';\nimport { uid } from '@pixi/utils';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nconst _SVGResource = class extends BaseImageResource {\n constructor(sourceBase64, options) {\n options = options || {};\n super(settings.ADAPTER.createCanvas());\n this._width = 0;\n this._height = 0;\n this.svg = sourceBase64;\n this.scale = options.scale || 1;\n this._overrideWidth = options.width;\n this._overrideHeight = options.height;\n this._resolve = null;\n this._crossorigin = options.crossorigin;\n this._load = null;\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = new Promise((resolve) => {\n this._resolve = () => {\n this.resize(this.source.width, this.source.height);\n resolve(this);\n };\n if (_SVGResource.SVG_XML.test(this.svg.trim())) {\n if (!btoa) {\n throw new Error(\"Your browser doesn't support base64 conversions.\");\n }\n this.svg = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`;\n }\n this._loadSvg();\n });\n return this._load;\n }\n _loadSvg() {\n const tempImage = new Image();\n BaseImageResource.crossOrigin(tempImage, this.svg, this._crossorigin);\n tempImage.src = this.svg;\n tempImage.onerror = (event) => {\n if (!this._resolve) {\n return;\n }\n tempImage.onerror = null;\n this.onError.emit(event);\n };\n tempImage.onload = () => {\n if (!this._resolve) {\n return;\n }\n const svgWidth = tempImage.width;\n const svgHeight = tempImage.height;\n if (!svgWidth || !svgHeight) {\n throw new Error(\"The SVG image must have width and height defined (in pixels), canvas API needs them.\");\n }\n let width = svgWidth * this.scale;\n let height = svgHeight * this.scale;\n if (this._overrideWidth || this._overrideHeight) {\n width = this._overrideWidth || this._overrideHeight / svgHeight * svgWidth;\n height = this._overrideHeight || this._overrideWidth / svgWidth * svgHeight;\n }\n width = Math.round(width);\n height = Math.round(height);\n const canvas = this.source;\n canvas.width = width;\n canvas.height = height;\n canvas._pixiId = `canvas_${uid()}`;\n canvas.getContext(\"2d\").drawImage(tempImage, 0, 0, svgWidth, svgHeight, 0, 0, width, height);\n this._resolve();\n this._resolve = null;\n };\n }\n static getSize(svgString) {\n const sizeMatch = _SVGResource.SVG_SIZE.exec(svgString);\n const size = {};\n if (sizeMatch) {\n size[sizeMatch[1]] = Math.round(parseFloat(sizeMatch[3]));\n size[sizeMatch[5]] = Math.round(parseFloat(sizeMatch[7]));\n }\n return size;\n }\n dispose() {\n super.dispose();\n this._resolve = null;\n this._crossorigin = null;\n }\n static test(source, extension) {\n return extension === \"svg\" || typeof source === \"string\" && source.startsWith(\"data:image/svg+xml\") || typeof source === \"string\" && _SVGResource.SVG_XML.test(source);\n }\n};\nlet SVGResource = _SVGResource;\nSVGResource.SVG_XML = /^(<\\?xml[^?]+\\?>)?\\s*()]*-->)?\\s*\\]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*(?:\\s(width|height)=('|\")(\\d*(?:\\.\\d+)?)(?:px)?('|\"))[^>]*>/i;\n\nexport { SVGResource };\n//# sourceMappingURL=SVGResource.mjs.map\n","import { Ticker } from '@pixi/ticker';\nimport { BaseImageResource } from './BaseImageResource.mjs';\n\nconst _VideoResource = class extends BaseImageResource {\n constructor(source, options) {\n options = options || {};\n if (!(source instanceof HTMLVideoElement)) {\n const videoElement = document.createElement(\"video\");\n videoElement.setAttribute(\"preload\", \"auto\");\n videoElement.setAttribute(\"webkit-playsinline\", \"\");\n videoElement.setAttribute(\"playsinline\", \"\");\n if (typeof source === \"string\") {\n source = [source];\n }\n const firstSrc = source[0].src || source[0];\n BaseImageResource.crossOrigin(videoElement, firstSrc, options.crossorigin);\n for (let i = 0; i < source.length; ++i) {\n const sourceElement = document.createElement(\"source\");\n let { src, mime } = source[i];\n src = src || source[i];\n const baseSrc = src.split(\"?\").shift().toLowerCase();\n const ext = baseSrc.slice(baseSrc.lastIndexOf(\".\") + 1);\n mime = mime || _VideoResource.MIME_TYPES[ext] || `video/${ext}`;\n sourceElement.src = src;\n sourceElement.type = mime;\n videoElement.appendChild(sourceElement);\n }\n source = videoElement;\n }\n super(source);\n this.noSubImage = true;\n this._autoUpdate = true;\n this._isConnectedToTicker = false;\n this._updateFPS = options.updateFPS || 0;\n this._msToNextUpdate = 0;\n this.autoPlay = options.autoPlay !== false;\n this._load = null;\n this._resolve = null;\n this._onCanPlay = this._onCanPlay.bind(this);\n this._onError = this._onError.bind(this);\n if (options.autoLoad !== false) {\n this.load();\n }\n }\n update(_deltaTime = 0) {\n if (!this.destroyed) {\n const elapsedMS = Ticker.shared.elapsedMS * this.source.playbackRate;\n this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS);\n if (!this._updateFPS || this._msToNextUpdate <= 0) {\n super.update();\n this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0;\n }\n }\n }\n load() {\n if (this._load) {\n return this._load;\n }\n const source = this.source;\n if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height) {\n source.complete = true;\n }\n source.addEventListener(\"play\", this._onPlayStart.bind(this));\n source.addEventListener(\"pause\", this._onPlayStop.bind(this));\n if (!this._isSourceReady()) {\n source.addEventListener(\"canplay\", this._onCanPlay);\n source.addEventListener(\"canplaythrough\", this._onCanPlay);\n source.addEventListener(\"error\", this._onError, true);\n } else {\n this._onCanPlay();\n }\n this._load = new Promise((resolve) => {\n if (this.valid) {\n resolve(this);\n } else {\n this._resolve = resolve;\n source.load();\n }\n });\n return this._load;\n }\n _onError(event) {\n this.source.removeEventListener(\"error\", this._onError, true);\n this.onError.emit(event);\n }\n _isSourcePlaying() {\n const source = this.source;\n return !source.paused && !source.ended && this._isSourceReady();\n }\n _isSourceReady() {\n const source = this.source;\n return source.readyState > 2;\n }\n _onPlayStart() {\n if (!this.valid) {\n this._onCanPlay();\n }\n if (this.autoUpdate && !this._isConnectedToTicker) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n _onPlayStop() {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n _onCanPlay() {\n const source = this.source;\n source.removeEventListener(\"canplay\", this._onCanPlay);\n source.removeEventListener(\"canplaythrough\", this._onCanPlay);\n const valid = this.valid;\n this.resize(source.videoWidth, source.videoHeight);\n if (!valid && this._resolve) {\n this._resolve(this);\n this._resolve = null;\n }\n if (this._isSourcePlaying()) {\n this._onPlayStart();\n } else if (this.autoPlay) {\n source.play();\n }\n }\n dispose() {\n if (this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n const source = this.source;\n if (source) {\n source.removeEventListener(\"error\", this._onError, true);\n source.pause();\n source.src = \"\";\n source.load();\n }\n super.dispose();\n }\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n if (!this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n } else if (this._autoUpdate && !this._isConnectedToTicker && this._isSourcePlaying()) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n get updateFPS() {\n return this._updateFPS;\n }\n set updateFPS(value) {\n if (value !== this._updateFPS) {\n this._updateFPS = value;\n }\n }\n static test(source, extension) {\n return globalThis.HTMLVideoElement && source instanceof HTMLVideoElement || _VideoResource.TYPES.includes(extension);\n }\n};\nlet VideoResource = _VideoResource;\nVideoResource.TYPES = [\"mp4\", \"m4v\", \"webm\", \"ogg\", \"ogv\", \"h264\", \"avi\", \"mov\"];\nVideoResource.MIME_TYPES = {\n ogv: \"video/ogg\",\n mov: \"video/quicktime\",\n m4v: \"video/mp4\"\n};\n\nexport { VideoResource };\n//# sourceMappingURL=VideoResource.mjs.map\n","import { ArrayResource } from './ArrayResource.mjs';\nexport { ArrayResource } from './ArrayResource.mjs';\nimport { INSTALLED } from './autoDetectResource.mjs';\nexport { INSTALLED, autoDetectResource } from './autoDetectResource.mjs';\nimport { BufferResource } from './BufferResource.mjs';\nexport { BufferResource } from './BufferResource.mjs';\nimport { CanvasResource } from './CanvasResource.mjs';\nexport { CanvasResource } from './CanvasResource.mjs';\nimport { CubeResource } from './CubeResource.mjs';\nexport { CubeResource } from './CubeResource.mjs';\nimport { ImageBitmapResource } from './ImageBitmapResource.mjs';\nexport { ImageBitmapResource } from './ImageBitmapResource.mjs';\nimport { ImageResource } from './ImageResource.mjs';\nexport { ImageResource } from './ImageResource.mjs';\nimport { SVGResource } from './SVGResource.mjs';\nexport { SVGResource } from './SVGResource.mjs';\nimport { VideoResource } from './VideoResource.mjs';\nexport { VideoResource } from './VideoResource.mjs';\nexport { BaseImageResource } from './BaseImageResource.mjs';\nexport { Resource } from './Resource.mjs';\nexport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nINSTALLED.push(ImageBitmapResource, ImageResource, CanvasResource, VideoResource, SVGResource, BufferResource, CubeResource, ArrayResource);\n//# sourceMappingURL=index.mjs.map\n","import { TARGETS } from '@pixi/constants';\nimport { AbstractMultiResource } from './AbstractMultiResource.mjs';\n\nclass ArrayResource extends AbstractMultiResource {\n constructor(source, options) {\n const { width, height } = options || {};\n let urls;\n let length;\n if (Array.isArray(source)) {\n urls = source;\n length = source.length;\n } else {\n length = source;\n }\n super(length, { width, height });\n if (urls) {\n this.initFromArray(urls, options);\n }\n }\n addBaseTextureAt(baseTexture, index) {\n if (baseTexture.resource) {\n this.addResourceAt(baseTexture.resource, index);\n } else {\n throw new Error(\"ArrayResource does not support RenderTexture\");\n }\n return this;\n }\n bind(baseTexture) {\n super.bind(baseTexture);\n baseTexture.target = TARGETS.TEXTURE_2D_ARRAY;\n }\n upload(renderer, texture, glTexture) {\n const { length, itemDirtyIds, items } = this;\n const { gl } = renderer;\n if (glTexture.dirtyId < 0) {\n gl.texImage3D(gl.TEXTURE_2D_ARRAY, 0, glTexture.internalFormat, this._width, this._height, length, 0, texture.format, glTexture.type, null);\n }\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (itemDirtyIds[i] < item.dirtyId) {\n itemDirtyIds[i] = item.dirtyId;\n if (item.valid) {\n gl.texSubImage3D(gl.TEXTURE_2D_ARRAY, 0, 0, 0, i, item.resource.width, item.resource.height, 1, texture.format, glTexture.type, item.resource.source);\n }\n }\n }\n return true;\n }\n}\n\nexport { ArrayResource };\n//# sourceMappingURL=ArrayResource.mjs.map\n","import { Rectangle } from '@pixi/core';\n\nclass Bounds {\n constructor() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n this.rect = null;\n this.updateID = -1;\n }\n isEmpty() {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n clear() {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n }\n getRectangle(rect) {\n if (this.minX > this.maxX || this.minY > this.maxY) {\n return Rectangle.EMPTY;\n }\n rect = rect || new Rectangle(0, 0, 1, 1);\n rect.x = this.minX;\n rect.y = this.minY;\n rect.width = this.maxX - this.minX;\n rect.height = this.maxY - this.minY;\n return rect;\n }\n addPoint(point) {\n this.minX = Math.min(this.minX, point.x);\n this.maxX = Math.max(this.maxX, point.x);\n this.minY = Math.min(this.minY, point.y);\n this.maxY = Math.max(this.maxY, point.y);\n }\n addPointMatrix(matrix, point) {\n const { a, b, c, d, tx, ty } = matrix;\n const x = a * point.x + c * point.y + tx;\n const y = b * point.x + d * point.y + ty;\n this.minX = Math.min(this.minX, x);\n this.maxX = Math.max(this.maxX, x);\n this.minY = Math.min(this.minY, y);\n this.maxY = Math.max(this.maxY, y);\n }\n addQuad(vertices) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = vertices[0];\n let y = vertices[1];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[2];\n y = vertices[3];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[4];\n y = vertices[5];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = vertices[6];\n y = vertices[7];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addFrame(transform, x0, y0, x1, y1) {\n this.addFrameMatrix(transform.worldTransform, x0, y0, x1, y1);\n }\n addFrameMatrix(matrix, x0, y0, x1, y1) {\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n let x = a * x0 + c * y0 + tx;\n let y = b * x0 + d * y0 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x1 + c * y0 + tx;\n y = b * x1 + d * y0 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x0 + c * y1 + tx;\n y = b * x0 + d * y1 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n x = a * x1 + c * y1 + tx;\n y = b * x1 + d * y1 + ty;\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addVertexData(vertexData, beginOffset, endOffset) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const x = vertexData[i];\n const y = vertexData[i + 1];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addVertices(transform, vertices, beginOffset, endOffset) {\n this.addVerticesMatrix(transform.worldTransform, vertices, beginOffset, endOffset);\n }\n addVerticesMatrix(matrix, vertices, beginOffset, endOffset, padX = 0, padY = padX) {\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n for (let i = beginOffset; i < endOffset; i += 2) {\n const rawX = vertices[i];\n const rawY = vertices[i + 1];\n const x = a * rawX + c * rawY + tx;\n const y = d * rawY + b * rawX + ty;\n minX = Math.min(minX, x - padX);\n maxX = Math.max(maxX, x + padX);\n minY = Math.min(minY, y - padY);\n maxY = Math.max(maxY, y + padY);\n }\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n addBounds(bounds) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = bounds.minX < minX ? bounds.minX : minX;\n this.minY = bounds.minY < minY ? bounds.minY : minY;\n this.maxX = bounds.maxX > maxX ? bounds.maxX : maxX;\n this.maxY = bounds.maxY > maxY ? bounds.maxY : maxY;\n }\n addBoundsMask(bounds, mask) {\n const _minX = bounds.minX > mask.minX ? bounds.minX : mask.minX;\n const _minY = bounds.minY > mask.minY ? bounds.minY : mask.minY;\n const _maxX = bounds.maxX < mask.maxX ? bounds.maxX : mask.maxX;\n const _maxY = bounds.maxY < mask.maxY ? bounds.maxY : mask.maxY;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX;\n this.minY = _minY < minY ? _minY : minY;\n this.maxX = _maxX > maxX ? _maxX : maxX;\n this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n addBoundsMatrix(bounds, matrix) {\n this.addFrameMatrix(matrix, bounds.minX, bounds.minY, bounds.maxX, bounds.maxY);\n }\n addBoundsArea(bounds, area) {\n const _minX = bounds.minX > area.x ? bounds.minX : area.x;\n const _minY = bounds.minY > area.y ? bounds.minY : area.y;\n const _maxX = bounds.maxX < area.x + area.width ? bounds.maxX : area.x + area.width;\n const _maxY = bounds.maxY < area.y + area.height ? bounds.maxY : area.y + area.height;\n if (_minX <= _maxX && _minY <= _maxY) {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n this.minX = _minX < minX ? _minX : minX;\n this.minY = _minY < minY ? _minY : minY;\n this.maxX = _maxX > maxX ? _maxX : maxX;\n this.maxY = _maxY > maxY ? _maxY : maxY;\n }\n }\n pad(paddingX = 0, paddingY = paddingX) {\n if (!this.isEmpty()) {\n this.minX -= paddingX;\n this.maxX += paddingX;\n this.minY -= paddingY;\n this.maxY += paddingY;\n }\n }\n addFramePad(x0, y0, x1, y1, padX, padY) {\n x0 -= padX;\n y0 -= padY;\n x1 += padX;\n y1 += padY;\n this.minX = this.minX < x0 ? this.minX : x0;\n this.maxX = this.maxX > x1 ? this.maxX : x1;\n this.minY = this.minY < y0 ? this.minY : y0;\n this.maxY = this.maxY > y1 ? this.maxY : y1;\n }\n}\n\nexport { Bounds };\n//# sourceMappingURL=Bounds.mjs.map\n","import { utils, Transform, Rectangle, RAD_TO_DEG, DEG_TO_RAD } from '@pixi/core';\nimport { Bounds } from './Bounds.mjs';\n\nclass DisplayObject extends utils.EventEmitter {\n constructor() {\n super();\n this.tempDisplayObjectParent = null;\n this.transform = new Transform();\n this.alpha = 1;\n this.visible = true;\n this.renderable = true;\n this.cullable = false;\n this.cullArea = null;\n this.parent = null;\n this.worldAlpha = 1;\n this._lastSortedIndex = 0;\n this._zIndex = 0;\n this.filterArea = null;\n this.filters = null;\n this._enabledFilters = null;\n this._bounds = new Bounds();\n this._localBounds = null;\n this._boundsID = 0;\n this._boundsRect = null;\n this._localBoundsRect = null;\n this._mask = null;\n this._maskRefCount = 0;\n this._destroyed = false;\n this.isSprite = false;\n this.isMask = false;\n }\n static mixin(source) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n Object.defineProperty(DisplayObject.prototype, propertyName, Object.getOwnPropertyDescriptor(source, propertyName));\n }\n }\n get destroyed() {\n return this._destroyed;\n }\n _recursivePostUpdateTransform() {\n if (this.parent) {\n this.parent._recursivePostUpdateTransform();\n this.transform.updateTransform(this.parent.transform);\n } else {\n this.transform.updateTransform(this._tempDisplayObjectParent.transform);\n }\n }\n updateTransform() {\n this._boundsID++;\n this.transform.updateTransform(this.parent.transform);\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n }\n getBounds(skipUpdate, rect) {\n if (!skipUpdate) {\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.updateTransform();\n this.parent = null;\n } else {\n this._recursivePostUpdateTransform();\n this.updateTransform();\n }\n }\n if (this._bounds.updateID !== this._boundsID) {\n this.calculateBounds();\n this._bounds.updateID = this._boundsID;\n }\n if (!rect) {\n if (!this._boundsRect) {\n this._boundsRect = new Rectangle();\n }\n rect = this._boundsRect;\n }\n return this._bounds.getRectangle(rect);\n }\n getLocalBounds(rect) {\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n if (!this._localBounds) {\n this._localBounds = new Bounds();\n }\n const transformRef = this.transform;\n const parentRef = this.parent;\n this.parent = null;\n this.transform = this._tempDisplayObjectParent.transform;\n const worldBounds = this._bounds;\n const worldBoundsID = this._boundsID;\n this._bounds = this._localBounds;\n const bounds = this.getBounds(false, rect);\n this.parent = parentRef;\n this.transform = transformRef;\n this._bounds = worldBounds;\n this._bounds.updateID += this._boundsID - worldBoundsID;\n return bounds;\n }\n toGlobal(position, point, skipUpdate = false) {\n if (!skipUpdate) {\n this._recursivePostUpdateTransform();\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.displayObjectUpdateTransform();\n this.parent = null;\n } else {\n this.displayObjectUpdateTransform();\n }\n }\n return this.worldTransform.apply(position, point);\n }\n toLocal(position, from, point, skipUpdate) {\n if (from) {\n position = from.toGlobal(position, point, skipUpdate);\n }\n if (!skipUpdate) {\n this._recursivePostUpdateTransform();\n if (!this.parent) {\n this.parent = this._tempDisplayObjectParent;\n this.displayObjectUpdateTransform();\n this.parent = null;\n } else {\n this.displayObjectUpdateTransform();\n }\n }\n return this.worldTransform.applyInverse(position, point);\n }\n setParent(container) {\n if (!container || !container.addChild) {\n throw new Error(\"setParent: Argument must be a Container\");\n }\n container.addChild(this);\n return container;\n }\n removeFromParent() {\n this.parent?.removeChild(this);\n }\n setTransform(x = 0, y = 0, scaleX = 1, scaleY = 1, rotation = 0, skewX = 0, skewY = 0, pivotX = 0, pivotY = 0) {\n this.position.x = x;\n this.position.y = y;\n this.scale.x = !scaleX ? 1 : scaleX;\n this.scale.y = !scaleY ? 1 : scaleY;\n this.rotation = rotation;\n this.skew.x = skewX;\n this.skew.y = skewY;\n this.pivot.x = pivotX;\n this.pivot.y = pivotY;\n return this;\n }\n destroy(_options) {\n this.removeFromParent();\n this._destroyed = true;\n this.transform = null;\n this.parent = null;\n this._bounds = null;\n this.mask = null;\n this.cullArea = null;\n this.filters = null;\n this.filterArea = null;\n this.hitArea = null;\n this.eventMode = \"auto\";\n this.interactiveChildren = false;\n this.emit(\"destroyed\");\n this.removeAllListeners();\n }\n get _tempDisplayObjectParent() {\n if (this.tempDisplayObjectParent === null) {\n this.tempDisplayObjectParent = new TemporaryDisplayObject();\n }\n return this.tempDisplayObjectParent;\n }\n enableTempParent() {\n const myParent = this.parent;\n this.parent = this._tempDisplayObjectParent;\n return myParent;\n }\n disableTempParent(cacheParent) {\n this.parent = cacheParent;\n }\n get x() {\n return this.position.x;\n }\n set x(value) {\n this.transform.position.x = value;\n }\n get y() {\n return this.position.y;\n }\n set y(value) {\n this.transform.position.y = value;\n }\n get worldTransform() {\n return this.transform.worldTransform;\n }\n get localTransform() {\n return this.transform.localTransform;\n }\n get position() {\n return this.transform.position;\n }\n set position(value) {\n this.transform.position.copyFrom(value);\n }\n get scale() {\n return this.transform.scale;\n }\n set scale(value) {\n this.transform.scale.copyFrom(value);\n }\n get pivot() {\n return this.transform.pivot;\n }\n set pivot(value) {\n this.transform.pivot.copyFrom(value);\n }\n get skew() {\n return this.transform.skew;\n }\n set skew(value) {\n this.transform.skew.copyFrom(value);\n }\n get rotation() {\n return this.transform.rotation;\n }\n set rotation(value) {\n this.transform.rotation = value;\n }\n get angle() {\n return this.transform.rotation * RAD_TO_DEG;\n }\n set angle(value) {\n this.transform.rotation = value * DEG_TO_RAD;\n }\n get zIndex() {\n return this._zIndex;\n }\n set zIndex(value) {\n this._zIndex = value;\n if (this.parent) {\n this.parent.sortDirty = true;\n }\n }\n get worldVisible() {\n let item = this;\n do {\n if (!item.visible) {\n return false;\n }\n item = item.parent;\n } while (item);\n return true;\n }\n get mask() {\n return this._mask;\n }\n set mask(value) {\n if (this._mask === value) {\n return;\n }\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n if (maskObject) {\n maskObject._maskRefCount--;\n if (maskObject._maskRefCount === 0) {\n maskObject.renderable = true;\n maskObject.isMask = false;\n }\n }\n }\n this._mask = value;\n if (this._mask) {\n const maskObject = this._mask.isMaskData ? this._mask.maskObject : this._mask;\n if (maskObject) {\n if (maskObject._maskRefCount === 0) {\n maskObject.renderable = false;\n maskObject.isMask = true;\n }\n maskObject._maskRefCount++;\n }\n }\n }\n}\nclass TemporaryDisplayObject extends DisplayObject {\n constructor() {\n super(...arguments);\n this.sortDirty = null;\n }\n}\nDisplayObject.prototype.displayObjectUpdateTransform = DisplayObject.prototype.updateTransform;\n\nexport { DisplayObject, TemporaryDisplayObject };\n//# sourceMappingURL=DisplayObject.mjs.map\n","import { Matrix, utils, MASK_TYPES } from '@pixi/core';\nimport { DisplayObject } from './DisplayObject.mjs';\n\nconst tempMatrix = new Matrix();\nfunction sortChildren(a, b) {\n if (a.zIndex === b.zIndex) {\n return a._lastSortedIndex - b._lastSortedIndex;\n }\n return a.zIndex - b.zIndex;\n}\nconst _Container = class extends DisplayObject {\n constructor() {\n super();\n this.children = [];\n this.sortableChildren = _Container.defaultSortableChildren;\n this.sortDirty = false;\n }\n onChildrenChange(_length) {\n }\n addChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.addChild(children[i]);\n }\n } else {\n const child = children[0];\n if (child.parent) {\n child.parent.removeChild(child);\n }\n child.parent = this;\n this.sortDirty = true;\n child.transform._parentID = -1;\n this.children.push(child);\n this._boundsID++;\n this.onChildrenChange(this.children.length - 1);\n this.emit(\"childAdded\", child, this, this.children.length - 1);\n child.emit(\"added\", this);\n }\n return children[0];\n }\n addChildAt(child, index) {\n if (index < 0 || index > this.children.length) {\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n if (child.parent) {\n child.parent.removeChild(child);\n }\n child.parent = this;\n this.sortDirty = true;\n child.transform._parentID = -1;\n this.children.splice(index, 0, child);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"added\", this);\n this.emit(\"childAdded\", child, this, index);\n return child;\n }\n swapChildren(child, child2) {\n if (child === child2) {\n return;\n }\n const index1 = this.getChildIndex(child);\n const index2 = this.getChildIndex(child2);\n this.children[index1] = child2;\n this.children[index2] = child;\n this.onChildrenChange(index1 < index2 ? index1 : index2);\n }\n getChildIndex(child) {\n const index = this.children.indexOf(child);\n if (index === -1) {\n throw new Error(\"The supplied DisplayObject must be a child of the caller\");\n }\n return index;\n }\n setChildIndex(child, index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n const currentIndex = this.getChildIndex(child);\n utils.removeItems(this.children, currentIndex, 1);\n this.children.splice(index, 0, child);\n this.onChildrenChange(index);\n }\n getChildAt(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n }\n return this.children[index];\n }\n removeChild(...children) {\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.removeChild(children[i]);\n }\n } else {\n const child = children[0];\n const index = this.children.indexOf(child);\n if (index === -1)\n return null;\n child.parent = null;\n child.transform._parentID = -1;\n utils.removeItems(this.children, index, 1);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"removed\", this);\n this.emit(\"childRemoved\", child, this, index);\n }\n return children[0];\n }\n removeChildAt(index) {\n const child = this.getChildAt(index);\n child.parent = null;\n child.transform._parentID = -1;\n utils.removeItems(this.children, index, 1);\n this._boundsID++;\n this.onChildrenChange(index);\n child.emit(\"removed\", this);\n this.emit(\"childRemoved\", child, this, index);\n return child;\n }\n removeChildren(beginIndex = 0, endIndex = this.children.length) {\n const begin = beginIndex;\n const end = endIndex;\n const range = end - begin;\n let removed;\n if (range > 0 && range <= end) {\n removed = this.children.splice(begin, range);\n for (let i = 0; i < removed.length; ++i) {\n removed[i].parent = null;\n if (removed[i].transform) {\n removed[i].transform._parentID = -1;\n }\n }\n this._boundsID++;\n this.onChildrenChange(beginIndex);\n for (let i = 0; i < removed.length; ++i) {\n removed[i].emit(\"removed\", this);\n this.emit(\"childRemoved\", removed[i], this, i);\n }\n return removed;\n } else if (range === 0 && this.children.length === 0) {\n return [];\n }\n throw new RangeError(\"removeChildren: numeric values are outside the acceptable range.\");\n }\n sortChildren() {\n let sortRequired = false;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n child._lastSortedIndex = i;\n if (!sortRequired && child.zIndex !== 0) {\n sortRequired = true;\n }\n }\n if (sortRequired && this.children.length > 1) {\n this.children.sort(sortChildren);\n }\n this.sortDirty = false;\n }\n updateTransform() {\n if (this.sortableChildren && this.sortDirty) {\n this.sortChildren();\n }\n this._boundsID++;\n this.transform.updateTransform(this.parent.transform);\n this.worldAlpha = this.alpha * this.parent.worldAlpha;\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n if (child.visible) {\n child.updateTransform();\n }\n }\n }\n calculateBounds() {\n this._bounds.clear();\n this._calculateBounds();\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (!child.visible || !child.renderable) {\n continue;\n }\n child.calculateBounds();\n if (child._mask) {\n const maskObject = child._mask.isMaskData ? child._mask.maskObject : child._mask;\n if (maskObject) {\n maskObject.calculateBounds();\n this._bounds.addBoundsMask(child._bounds, maskObject._bounds);\n } else {\n this._bounds.addBounds(child._bounds);\n }\n } else if (child.filterArea) {\n this._bounds.addBoundsArea(child._bounds, child.filterArea);\n } else {\n this._bounds.addBounds(child._bounds);\n }\n }\n this._bounds.updateID = this._boundsID;\n }\n getLocalBounds(rect, skipChildrenUpdate = false) {\n const result = super.getLocalBounds(rect);\n if (!skipChildrenUpdate) {\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n if (child.visible) {\n child.updateTransform();\n }\n }\n }\n return result;\n }\n _calculateBounds() {\n }\n _renderWithCulling(renderer) {\n const sourceFrame = renderer.renderTexture.sourceFrame;\n if (!(sourceFrame.width > 0 && sourceFrame.height > 0)) {\n return;\n }\n let bounds;\n let transform;\n if (this.cullArea) {\n bounds = this.cullArea;\n transform = this.worldTransform;\n } else if (this._render !== _Container.prototype._render) {\n bounds = this.getBounds(true);\n }\n const projectionTransform = renderer.projection.transform;\n if (projectionTransform) {\n if (transform) {\n transform = tempMatrix.copyFrom(transform);\n transform.prepend(projectionTransform);\n } else {\n transform = projectionTransform;\n }\n }\n if (bounds && sourceFrame.intersects(bounds, transform)) {\n this._render(renderer);\n } else if (this.cullArea) {\n return;\n }\n for (let i = 0, j = this.children.length; i < j; ++i) {\n const child = this.children[i];\n const childCullable = child.cullable;\n child.cullable = childCullable || !this.cullArea;\n child.render(renderer);\n child.cullable = childCullable;\n }\n }\n render(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n if (this._mask || this.filters?.length) {\n this.renderAdvanced(renderer);\n } else if (this.cullable) {\n this._renderWithCulling(renderer);\n } else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i) {\n this.children[i].render(renderer);\n }\n }\n }\n renderAdvanced(renderer) {\n const filters = this.filters;\n const mask = this._mask;\n if (filters) {\n if (!this._enabledFilters) {\n this._enabledFilters = [];\n }\n this._enabledFilters.length = 0;\n for (let i = 0; i < filters.length; i++) {\n if (filters[i].enabled) {\n this._enabledFilters.push(filters[i]);\n }\n }\n }\n const flush = filters && this._enabledFilters?.length || mask && (!mask.isMaskData || mask.enabled && (mask.autoDetect || mask.type !== MASK_TYPES.NONE));\n if (flush) {\n renderer.batch.flush();\n }\n if (filters && this._enabledFilters?.length) {\n renderer.filter.push(this, this._enabledFilters);\n }\n if (mask) {\n renderer.mask.push(this, this._mask);\n }\n if (this.cullable) {\n this._renderWithCulling(renderer);\n } else {\n this._render(renderer);\n for (let i = 0, j = this.children.length; i < j; ++i) {\n this.children[i].render(renderer);\n }\n }\n if (flush) {\n renderer.batch.flush();\n }\n if (mask) {\n renderer.mask.pop(this);\n }\n if (filters && this._enabledFilters?.length) {\n renderer.filter.pop();\n }\n }\n _render(_renderer) {\n }\n destroy(options) {\n super.destroy();\n this.sortDirty = false;\n const destroyChildren = typeof options === \"boolean\" ? options : options?.children;\n const oldChildren = this.removeChildren(0, this.children.length);\n if (destroyChildren) {\n for (let i = 0; i < oldChildren.length; ++i) {\n oldChildren[i].destroy(options);\n }\n }\n }\n get width() {\n return this.scale.x * this.getLocalBounds().width;\n }\n set width(value) {\n const width = this.getLocalBounds().width;\n if (width !== 0) {\n this.scale.x = value / width;\n } else {\n this.scale.x = 1;\n }\n this._width = value;\n }\n get height() {\n return this.scale.y * this.getLocalBounds().height;\n }\n set height(value) {\n const height = this.getLocalBounds().height;\n if (height !== 0) {\n this.scale.y = value / height;\n } else {\n this.scale.y = 1;\n }\n this._height = value;\n }\n};\nlet Container = _Container;\nContainer.defaultSortableChildren = false;\nContainer.prototype.containerUpdateTransform = Container.prototype.updateTransform;\n\nexport { Container };\n//# sourceMappingURL=Container.mjs.map\n","import { settings, utils } from '@pixi/core';\nexport { settings } from '@pixi/core';\nimport { Container } from './Container.mjs';\n\nObject.defineProperties(settings, {\n SORTABLE_CHILDREN: {\n get() {\n return Container.defaultSortableChildren;\n },\n set(value) {\n utils.deprecation(\"7.1.0\", \"settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren\");\n Container.defaultSortableChildren = value;\n }\n }\n});\n//# sourceMappingURL=settings.mjs.map\n","var ExtensionType = /* @__PURE__ */ ((ExtensionType2) => {\n ExtensionType2[\"Renderer\"] = \"renderer\";\n ExtensionType2[\"Application\"] = \"application\";\n ExtensionType2[\"RendererSystem\"] = \"renderer-webgl-system\";\n ExtensionType2[\"RendererPlugin\"] = \"renderer-webgl-plugin\";\n ExtensionType2[\"CanvasRendererSystem\"] = \"renderer-canvas-system\";\n ExtensionType2[\"CanvasRendererPlugin\"] = \"renderer-canvas-plugin\";\n ExtensionType2[\"Asset\"] = \"asset\";\n ExtensionType2[\"LoadParser\"] = \"load-parser\";\n ExtensionType2[\"ResolveParser\"] = \"resolve-parser\";\n ExtensionType2[\"CacheParser\"] = \"cache-parser\";\n ExtensionType2[\"DetectionParser\"] = \"detection-parser\";\n return ExtensionType2;\n})(ExtensionType || {});\nconst normalizeExtension = (ext) => {\n if (typeof ext === \"function\" || typeof ext === \"object\" && ext.extension) {\n if (!ext.extension) {\n throw new Error(\"Extension class must have an extension object\");\n }\n const metadata = typeof ext.extension !== \"object\" ? { type: ext.extension } : ext.extension;\n ext = { ...metadata, ref: ext };\n }\n if (typeof ext === \"object\") {\n ext = { ...ext };\n } else {\n throw new Error(\"Invalid extension type\");\n }\n if (typeof ext.type === \"string\") {\n ext.type = [ext.type];\n }\n return ext;\n};\nconst normalizePriority = (ext, defaultPriority) => normalizeExtension(ext).priority ?? defaultPriority;\nconst extensions = {\n _addHandlers: {},\n _removeHandlers: {},\n _queue: {},\n remove(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => this._removeHandlers[type]?.(ext));\n });\n return this;\n },\n add(...extensions2) {\n extensions2.map(normalizeExtension).forEach((ext) => {\n ext.type.forEach((type) => {\n const handlers = this._addHandlers;\n const queue = this._queue;\n if (!handlers[type]) {\n queue[type] = queue[type] || [];\n queue[type].push(ext);\n } else {\n handlers[type](ext);\n }\n });\n });\n return this;\n },\n handle(type, onAdd, onRemove) {\n const addHandlers = this._addHandlers;\n const removeHandlers = this._removeHandlers;\n if (addHandlers[type] || removeHandlers[type]) {\n throw new Error(`Extension type ${type} already has a handler`);\n }\n addHandlers[type] = onAdd;\n removeHandlers[type] = onRemove;\n const queue = this._queue;\n if (queue[type]) {\n queue[type].forEach((ext) => onAdd(ext));\n delete queue[type];\n }\n return this;\n },\n handleByMap(type, map) {\n return this.handle(type, (extension) => {\n map[extension.name] = extension.ref;\n }, (extension) => {\n delete map[extension.name];\n });\n },\n handleByList(type, list, defaultPriority = -1) {\n return this.handle(type, (extension) => {\n if (list.includes(extension.ref)) {\n return;\n }\n list.push(extension.ref);\n list.sort((a, b) => normalizePriority(b, defaultPriority) - normalizePriority(a, defaultPriority));\n }, (extension) => {\n const index = list.indexOf(extension.ref);\n if (index !== -1) {\n list.splice(index, 1);\n }\n });\n }\n};\n\nexport { ExtensionType, extensions };\n//# sourceMappingURL=index.mjs.map\n","import { SHAPES } from '@pixi/core';\n\nconst buildCircle = {\n build(graphicsData) {\n const points = graphicsData.points;\n let x;\n let y;\n let dx;\n let dy;\n let rx;\n let ry;\n if (graphicsData.type === SHAPES.CIRC) {\n const circle = graphicsData.shape;\n x = circle.x;\n y = circle.y;\n rx = ry = circle.radius;\n dx = dy = 0;\n } else if (graphicsData.type === SHAPES.ELIP) {\n const ellipse = graphicsData.shape;\n x = ellipse.x;\n y = ellipse.y;\n rx = ellipse.width;\n ry = ellipse.height;\n dx = dy = 0;\n } else {\n const roundedRect = graphicsData.shape;\n const halfWidth = roundedRect.width / 2;\n const halfHeight = roundedRect.height / 2;\n x = roundedRect.x + halfWidth;\n y = roundedRect.y + halfHeight;\n rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight)));\n dx = halfWidth - rx;\n dy = halfHeight - ry;\n }\n if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n points.length = 0;\n return;\n }\n const n = Math.ceil(2.3 * Math.sqrt(rx + ry));\n const m = n * 8 + (dx ? 4 : 0) + (dy ? 4 : 0);\n points.length = m;\n if (m === 0) {\n return;\n }\n if (n === 0) {\n points.length = 8;\n points[0] = points[6] = x + dx;\n points[1] = points[3] = y + dy;\n points[2] = points[4] = x - dx;\n points[5] = points[7] = y - dy;\n return;\n }\n let j1 = 0;\n let j2 = n * 4 + (dx ? 2 : 0) + 2;\n let j3 = j2;\n let j4 = m;\n {\n const x0 = dx + rx;\n const y0 = dy;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n if (dy) {\n const y2 = y - y0;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n }\n for (let i = 1; i < n; i++) {\n const a = Math.PI / 2 * (i / n);\n const x0 = dx + Math.cos(a) * rx;\n const y0 = dy + Math.sin(a) * ry;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n {\n const x0 = dx;\n const y0 = dy + ry;\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x1;\n if (dx) {\n points[j1++] = x2;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x2;\n }\n }\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n if (points.length === 0) {\n return;\n }\n let vertPos = verts.length / 2;\n const center = vertPos;\n let x;\n let y;\n if (graphicsData.type !== SHAPES.RREC) {\n const circle = graphicsData.shape;\n x = circle.x;\n y = circle.y;\n } else {\n const roundedRect = graphicsData.shape;\n x = roundedRect.x + roundedRect.width / 2;\n y = roundedRect.y + roundedRect.height / 2;\n }\n const matrix = graphicsData.matrix;\n verts.push(graphicsData.matrix ? matrix.a * x + matrix.c * y + matrix.tx : x, graphicsData.matrix ? matrix.b * x + matrix.d * y + matrix.ty : y);\n vertPos++;\n verts.push(points[0], points[1]);\n for (let i = 2; i < points.length; i += 2) {\n verts.push(points[i], points[i + 1]);\n indices.push(vertPos++, center, vertPos);\n }\n indices.push(center + 1, center, vertPos);\n }\n};\n\nexport { buildCircle };\n//# sourceMappingURL=buildCircle.mjs.map\n","import { utils } from '@pixi/core';\n\nfunction fixOrientation(points, hole = false) {\n const m = points.length;\n if (m < 6) {\n return;\n }\n let area = 0;\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n const x2 = points[i];\n const y2 = points[i + 1];\n area += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n if (!hole && area > 0 || hole && area <= 0) {\n const n = m / 2;\n for (let i = n + n % 2; i < m; i += 2) {\n const i1 = m - i - 2;\n const i2 = m - i - 1;\n const i3 = i;\n const i4 = i + 1;\n [points[i1], points[i3]] = [points[i3], points[i1]];\n [points[i2], points[i4]] = [points[i4], points[i2]];\n }\n }\n}\nconst buildPoly = {\n build(graphicsData) {\n graphicsData.points = graphicsData.shape.points.slice();\n },\n triangulate(graphicsData, graphicsGeometry) {\n let points = graphicsData.points;\n const holes = graphicsData.holes;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n if (points.length >= 6) {\n fixOrientation(points, false);\n const holeArray = [];\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n fixOrientation(hole.points, true);\n holeArray.push(points.length / 2);\n points = points.concat(hole.points);\n }\n const triangles = utils.earcut(points, holeArray, 2);\n if (!triangles) {\n return;\n }\n const vertPos = verts.length / 2;\n for (let i = 0; i < triangles.length; i += 3) {\n indices.push(triangles[i] + vertPos);\n indices.push(triangles[i + 1] + vertPos);\n indices.push(triangles[i + 2] + vertPos);\n }\n for (let i = 0; i < points.length; i++) {\n verts.push(points[i]);\n }\n }\n }\n};\n\nexport { buildPoly };\n//# sourceMappingURL=buildPoly.mjs.map\n","const buildRectangle = {\n build(graphicsData) {\n const rectData = graphicsData.shape;\n const x = rectData.x;\n const y = rectData.y;\n const width = rectData.width;\n const height = rectData.height;\n const points = graphicsData.points;\n points.length = 0;\n if (!(width >= 0 && height >= 0)) {\n return;\n }\n points.push(x, y, x + width, y, x + width, y + height, x, y + height);\n },\n triangulate(graphicsData, graphicsGeometry) {\n const points = graphicsData.points;\n const verts = graphicsGeometry.points;\n if (points.length === 0) {\n return;\n }\n const vertPos = verts.length / 2;\n verts.push(points[0], points[1], points[2], points[3], points[6], points[7], points[4], points[5]);\n graphicsGeometry.indices.push(vertPos, vertPos + 1, vertPos + 2, vertPos + 1, vertPos + 2, vertPos + 3);\n }\n};\n\nexport { buildRectangle };\n//# sourceMappingURL=buildRectangle.mjs.map\n","import { buildCircle } from './buildCircle.mjs';\n\nconst buildRoundedRectangle = {\n build(graphicsData) {\n buildCircle.build(graphicsData);\n },\n triangulate(graphicsData, graphicsGeometry) {\n buildCircle.triangulate(graphicsData, graphicsGeometry);\n }\n};\n\nexport { buildRoundedRectangle };\n//# sourceMappingURL=buildRoundedRectangle.mjs.map\n","var LINE_JOIN = /* @__PURE__ */ ((LINE_JOIN2) => {\n LINE_JOIN2[\"MITER\"] = \"miter\";\n LINE_JOIN2[\"BEVEL\"] = \"bevel\";\n LINE_JOIN2[\"ROUND\"] = \"round\";\n return LINE_JOIN2;\n})(LINE_JOIN || {});\nvar LINE_CAP = /* @__PURE__ */ ((LINE_CAP2) => {\n LINE_CAP2[\"BUTT\"] = \"butt\";\n LINE_CAP2[\"ROUND\"] = \"round\";\n LINE_CAP2[\"SQUARE\"] = \"square\";\n return LINE_CAP2;\n})(LINE_CAP || {});\nconst curves = {\n adaptive: true,\n maxLength: 10,\n minSegments: 8,\n maxSegments: 2048,\n epsilon: 1e-4,\n _segmentsCount(length, defaultSegments = 20) {\n if (!this.adaptive || !length || isNaN(length)) {\n return defaultSegments;\n }\n let result = Math.ceil(length / this.maxLength);\n if (result < this.minSegments) {\n result = this.minSegments;\n } else if (result > this.maxSegments) {\n result = this.maxSegments;\n }\n return result;\n }\n};\nconst GRAPHICS_CURVES = curves;\n\nexport { GRAPHICS_CURVES, LINE_CAP, LINE_JOIN, curves };\n//# sourceMappingURL=const.mjs.map\n","import { PI_2 } from '@pixi/core';\nimport { curves } from '../const.mjs';\n\nclass ArcUtils {\n static curveTo(x1, y1, x2, y2, radius, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const a1 = fromY - y1;\n const b1 = fromX - x1;\n const a2 = y2 - y1;\n const b2 = x2 - x1;\n const mm = Math.abs(a1 * b2 - b1 * a2);\n if (mm < 1e-8 || radius === 0) {\n if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1) {\n points.push(x1, y1);\n }\n return null;\n }\n const dd = a1 * a1 + b1 * b1;\n const cc = a2 * a2 + b2 * b2;\n const tt = a1 * a2 + b1 * b2;\n const k1 = radius * Math.sqrt(dd) / mm;\n const k2 = radius * Math.sqrt(cc) / mm;\n const j1 = k1 * tt / dd;\n const j2 = k2 * tt / cc;\n const cx = k1 * b2 + k2 * b1;\n const cy = k1 * a2 + k2 * a1;\n const px = b1 * (k2 + j1);\n const py = a1 * (k2 + j1);\n const qx = b2 * (k1 + j2);\n const qy = a2 * (k1 + j2);\n const startAngle = Math.atan2(py - cy, px - cx);\n const endAngle = Math.atan2(qy - cy, qx - cx);\n return {\n cx: cx + x1,\n cy: cy + y1,\n radius,\n startAngle,\n endAngle,\n anticlockwise: b1 * a2 > b2 * a1\n };\n }\n static arc(_startX, _startY, cx, cy, radius, startAngle, endAngle, _anticlockwise, points) {\n const sweep = endAngle - startAngle;\n const n = curves._segmentsCount(Math.abs(sweep) * radius, Math.ceil(Math.abs(sweep) / PI_2) * 40);\n const theta = sweep / (n * 2);\n const theta2 = theta * 2;\n const cTheta = Math.cos(theta);\n const sTheta = Math.sin(theta);\n const segMinus = n - 1;\n const remainder = segMinus % 1 / segMinus;\n for (let i = 0; i <= segMinus; ++i) {\n const real = i + remainder * i;\n const angle = theta + startAngle + theta2 * real;\n const c = Math.cos(angle);\n const s = -Math.sin(angle);\n points.push((cTheta * c + sTheta * s) * radius + cx, (cTheta * -s + sTheta * c) * radius + cy);\n }\n }\n}\n\nexport { ArcUtils };\n//# sourceMappingURL=ArcUtils.mjs.map\n","import { curves } from '../const.mjs';\n\nclass BezierUtils {\n static curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY) {\n const n = 10;\n let result = 0;\n let t = 0;\n let t2 = 0;\n let t3 = 0;\n let nt = 0;\n let nt2 = 0;\n let nt3 = 0;\n let x = 0;\n let y = 0;\n let dx = 0;\n let dy = 0;\n let prevX = fromX;\n let prevY = fromY;\n for (let i = 1; i <= n; ++i) {\n t = i / n;\n t2 = t * t;\n t3 = t2 * t;\n nt = 1 - t;\n nt2 = nt * nt;\n nt3 = nt2 * nt;\n x = nt3 * fromX + 3 * nt2 * t * cpX + 3 * nt * t2 * cpX2 + t3 * toX;\n y = nt3 * fromY + 3 * nt2 * t * cpY + 3 * nt * t2 * cpY2 + t3 * toY;\n dx = prevX - x;\n dy = prevY - y;\n prevX = x;\n prevY = y;\n result += Math.sqrt(dx * dx + dy * dy);\n }\n return result;\n }\n static curveTo(cpX, cpY, cpX2, cpY2, toX, toY, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n points.length -= 2;\n const n = curves._segmentsCount(BezierUtils.curveLength(fromX, fromY, cpX, cpY, cpX2, cpY2, toX, toY));\n let dt = 0;\n let dt2 = 0;\n let dt3 = 0;\n let t2 = 0;\n let t3 = 0;\n points.push(fromX, fromY);\n for (let i = 1, j = 0; i <= n; ++i) {\n j = i / n;\n dt = 1 - j;\n dt2 = dt * dt;\n dt3 = dt2 * dt;\n t2 = j * j;\n t3 = t2 * j;\n points.push(dt3 * fromX + 3 * dt2 * j * cpX + 3 * dt * t2 * cpX2 + t3 * toX, dt3 * fromY + 3 * dt2 * j * cpY + 3 * dt * t2 * cpY2 + t3 * toY);\n }\n }\n}\n\nexport { BezierUtils };\n//# sourceMappingURL=BezierUtils.mjs.map\n","import { Point, SHAPES } from '@pixi/core';\nimport { LINE_CAP, LINE_JOIN, curves } from '../const.mjs';\n\nfunction square(x, y, nx, ny, innerWeight, outerWeight, clockwise, verts) {\n const ix = x - nx * innerWeight;\n const iy = y - ny * innerWeight;\n const ox = x + nx * outerWeight;\n const oy = y + ny * outerWeight;\n let exx;\n let eyy;\n if (clockwise) {\n exx = ny;\n eyy = -nx;\n } else {\n exx = -ny;\n eyy = nx;\n }\n const eix = ix + exx;\n const eiy = iy + eyy;\n const eox = ox + exx;\n const eoy = oy + eyy;\n verts.push(eix, eiy, eox, eoy);\n return 2;\n}\nfunction round(cx, cy, sx, sy, ex, ey, verts, clockwise) {\n const cx2p0x = sx - cx;\n const cy2p0y = sy - cy;\n let angle0 = Math.atan2(cx2p0x, cy2p0y);\n let angle1 = Math.atan2(ex - cx, ey - cy);\n if (clockwise && angle0 < angle1) {\n angle0 += Math.PI * 2;\n } else if (!clockwise && angle0 > angle1) {\n angle1 += Math.PI * 2;\n }\n let startAngle = angle0;\n const angleDiff = angle1 - angle0;\n const absAngleDiff = Math.abs(angleDiff);\n const radius = Math.sqrt(cx2p0x * cx2p0x + cy2p0y * cy2p0y);\n const segCount = (15 * absAngleDiff * Math.sqrt(radius) / Math.PI >> 0) + 1;\n const angleInc = angleDiff / segCount;\n startAngle += angleInc;\n if (clockwise) {\n verts.push(cx, cy, sx, sy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx, cy, cx + Math.sin(angle) * radius, cy + Math.cos(angle) * radius);\n }\n verts.push(cx, cy, ex, ey);\n } else {\n verts.push(sx, sy, cx, cy);\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n verts.push(cx + Math.sin(angle) * radius, cy + Math.cos(angle) * radius, cx, cy);\n }\n verts.push(ex, ey, cx, cy);\n }\n return segCount * 2;\n}\nfunction buildNonNativeLine(graphicsData, graphicsGeometry) {\n const shape = graphicsData.shape;\n let points = graphicsData.points || shape.points.slice();\n const eps = graphicsGeometry.closePointEps;\n if (points.length === 0) {\n return;\n }\n const style = graphicsData.lineStyle;\n const firstPoint = new Point(points[0], points[1]);\n const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps && Math.abs(firstPoint.y - lastPoint.y) < eps;\n if (closedShape) {\n points = points.slice();\n if (closedPath) {\n points.pop();\n points.pop();\n lastPoint.set(points[points.length - 2], points[points.length - 1]);\n }\n const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n points.unshift(midPointX, midPointY);\n points.push(midPointX, midPointY);\n }\n const verts = graphicsGeometry.points;\n const length = points.length / 2;\n let indexCount = points.length;\n const indexStart = verts.length / 2;\n const width = style.width / 2;\n const widthSquared = width * width;\n const miterLimitSquared = style.miterLimit * style.miterLimit;\n let x0 = points[0];\n let y0 = points[1];\n let x1 = points[2];\n let y1 = points[3];\n let x2 = 0;\n let y2 = 0;\n let perpx = -(y0 - y1);\n let perpy = x0 - x1;\n let perp1x = 0;\n let perp1y = 0;\n let dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n const ratio = style.alignment;\n const innerWeight = (1 - ratio) * 2;\n const outerWeight = ratio * 2;\n if (!closedShape) {\n if (style.cap === LINE_CAP.ROUND) {\n indexCount += round(x0 - perpx * (innerWeight - outerWeight) * 0.5, y0 - perpy * (innerWeight - outerWeight) * 0.5, x0 - perpx * innerWeight, y0 - perpy * innerWeight, x0 + perpx * outerWeight, y0 + perpy * outerWeight, verts, true) + 2;\n } else if (style.cap === LINE_CAP.SQUARE) {\n indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, true, verts);\n }\n }\n verts.push(x0 - perpx * innerWeight, y0 - perpy * innerWeight, x0 + perpx * outerWeight, y0 + perpy * outerWeight);\n for (let i = 1; i < length - 1; ++i) {\n x0 = points[(i - 1) * 2];\n y0 = points[(i - 1) * 2 + 1];\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n perpx = -(y0 - y1);\n perpy = x0 - x1;\n dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n perp1x = -(y1 - y2);\n perp1y = x1 - x2;\n dist = Math.sqrt(perp1x * perp1x + perp1y * perp1y);\n perp1x /= dist;\n perp1y /= dist;\n perp1x *= width;\n perp1y *= width;\n const dx0 = x1 - x0;\n const dy0 = y0 - y1;\n const dx1 = x1 - x2;\n const dy1 = y2 - y1;\n const dot = dx0 * dx1 + dy0 * dy1;\n const cross = dy0 * dx1 - dy1 * dx0;\n const clockwise = cross < 0;\n if (Math.abs(cross) < 1e-3 * Math.abs(dot)) {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (dot >= 0) {\n if (style.join === LINE_JOIN.ROUND) {\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4;\n } else {\n indexCount += 2;\n }\n verts.push(x1 - perp1x * outerWeight, y1 - perp1y * outerWeight, x1 + perp1x * innerWeight, y1 + perp1y * innerWeight);\n }\n continue;\n }\n const c1 = (-perpx + x0) * (-perpy + y1) - (-perpx + x1) * (-perpy + y0);\n const c2 = (-perp1x + x2) * (-perp1y + y1) - (-perp1x + x1) * (-perp1y + y2);\n const px = (dx0 * c2 - dx1 * c1) / cross;\n const py = (dy1 * c1 - dy0 * c2) / cross;\n const pdist = (px - x1) * (px - x1) + (py - y1) * (py - y1);\n const imx = x1 + (px - x1) * innerWeight;\n const imy = y1 + (py - y1) * innerWeight;\n const omx = x1 - (px - x1) * outerWeight;\n const omy = y1 - (py - y1) * outerWeight;\n const smallerInsideSegmentSq = Math.min(dx0 * dx0 + dy0 * dy0, dx1 * dx1 + dy1 * dy1);\n const insideWeight = clockwise ? innerWeight : outerWeight;\n const smallerInsideDiagonalSq = smallerInsideSegmentSq + insideWeight * insideWeight * widthSquared;\n const insideMiterOk = pdist <= smallerInsideDiagonalSq;\n let join = style.join;\n if (join === LINE_JOIN.MITER && pdist / widthSquared > miterLimitSquared) {\n join = LINE_JOIN.BEVEL;\n }\n if (insideMiterOk) {\n switch (join) {\n case LINE_JOIN.MITER: {\n verts.push(imx, imy, omx, omy);\n break;\n }\n case LINE_JOIN.BEVEL: {\n if (clockwise) {\n verts.push(imx, imy, x1 + perpx * outerWeight, y1 + perpy * outerWeight, imx, imy, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight, omx, omy, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, omx, omy);\n }\n indexCount += 2;\n break;\n }\n case LINE_JOIN.ROUND: {\n if (clockwise) {\n verts.push(imx, imy, x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 4;\n verts.push(imx, imy, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight, omx, omy);\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 4;\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, omx, omy);\n }\n break;\n }\n }\n } else {\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n switch (join) {\n case LINE_JOIN.MITER: {\n if (clockwise) {\n verts.push(omx, omy, omx, omy);\n } else {\n verts.push(imx, imy, imx, imy);\n }\n indexCount += 2;\n break;\n }\n case LINE_JOIN.ROUND: {\n if (clockwise) {\n indexCount += round(x1, y1, x1 + perpx * outerWeight, y1 + perpy * outerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight, verts, true) + 2;\n } else {\n indexCount += round(x1, y1, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, verts, false) + 2;\n }\n break;\n }\n }\n verts.push(x1 - perp1x * innerWeight, y1 - perp1y * innerWeight, x1 + perp1x * outerWeight, y1 + perp1y * outerWeight);\n indexCount += 2;\n }\n }\n x0 = points[(length - 2) * 2];\n y0 = points[(length - 2) * 2 + 1];\n x1 = points[(length - 1) * 2];\n y1 = points[(length - 1) * 2 + 1];\n perpx = -(y0 - y1);\n perpy = x0 - x1;\n dist = Math.sqrt(perpx * perpx + perpy * perpy);\n perpx /= dist;\n perpy /= dist;\n perpx *= width;\n perpy *= width;\n verts.push(x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight);\n if (!closedShape) {\n if (style.cap === LINE_CAP.ROUND) {\n indexCount += round(x1 - perpx * (innerWeight - outerWeight) * 0.5, y1 - perpy * (innerWeight - outerWeight) * 0.5, x1 - perpx * innerWeight, y1 - perpy * innerWeight, x1 + perpx * outerWeight, y1 + perpy * outerWeight, verts, false) + 2;\n } else if (style.cap === LINE_CAP.SQUARE) {\n indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, false, verts);\n }\n }\n const indices = graphicsGeometry.indices;\n const eps2 = curves.epsilon * curves.epsilon;\n for (let i = indexStart; i < indexCount + indexStart - 2; ++i) {\n x0 = verts[i * 2];\n y0 = verts[i * 2 + 1];\n x1 = verts[(i + 1) * 2];\n y1 = verts[(i + 1) * 2 + 1];\n x2 = verts[(i + 2) * 2];\n y2 = verts[(i + 2) * 2 + 1];\n if (Math.abs(x0 * (y1 - y2) + x1 * (y2 - y0) + x2 * (y0 - y1)) < eps2) {\n continue;\n }\n indices.push(i, i + 1, i + 2);\n }\n}\nfunction buildNativeLine(graphicsData, graphicsGeometry) {\n let i = 0;\n const shape = graphicsData.shape;\n const points = graphicsData.points || shape.points;\n const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke;\n if (points.length === 0)\n return;\n const verts = graphicsGeometry.points;\n const indices = graphicsGeometry.indices;\n const length = points.length / 2;\n const startIndex = verts.length / 2;\n let currentIndex = startIndex;\n verts.push(points[0], points[1]);\n for (i = 1; i < length; i++) {\n verts.push(points[i * 2], points[i * 2 + 1]);\n indices.push(currentIndex, currentIndex + 1);\n currentIndex++;\n }\n if (closedShape) {\n indices.push(currentIndex, startIndex);\n }\n}\nfunction buildLine(graphicsData, graphicsGeometry) {\n if (graphicsData.lineStyle.native) {\n buildNativeLine(graphicsData, graphicsGeometry);\n } else {\n buildNonNativeLine(graphicsData, graphicsGeometry);\n }\n}\n\nexport { buildLine };\n//# sourceMappingURL=buildLine.mjs.map\n","import { curves } from '../const.mjs';\n\nclass QuadraticUtils {\n static curveLength(fromX, fromY, cpX, cpY, toX, toY) {\n const ax = fromX - 2 * cpX + toX;\n const ay = fromY - 2 * cpY + toY;\n const bx = 2 * cpX - 2 * fromX;\n const by = 2 * cpY - 2 * fromY;\n const a = 4 * (ax * ax + ay * ay);\n const b = 4 * (ax * bx + ay * by);\n const c = bx * bx + by * by;\n const s = 2 * Math.sqrt(a + b + c);\n const a2 = Math.sqrt(a);\n const a32 = 2 * a * a2;\n const c2 = 2 * Math.sqrt(c);\n const ba = b / a2;\n return (a32 * s + a2 * b * (s - c2) + (4 * c * a - b * b) * Math.log((2 * a2 + ba + s) / (ba + c2))) / (4 * a32);\n }\n static curveTo(cpX, cpY, toX, toY, points) {\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n const n = curves._segmentsCount(QuadraticUtils.curveLength(fromX, fromY, cpX, cpY, toX, toY));\n let xa = 0;\n let ya = 0;\n for (let i = 1; i <= n; ++i) {\n const j = i / n;\n xa = fromX + (cpX - fromX) * j;\n ya = fromY + (cpY - fromY) * j;\n points.push(xa + (cpX + (toX - cpX) * j - xa) * j, ya + (cpY + (toY - cpY) * j - ya) * j);\n }\n }\n}\n\nexport { QuadraticUtils };\n//# sourceMappingURL=QuadraticUtils.mjs.map\n","import { SHAPES } from '@pixi/core';\nimport { buildCircle } from './buildCircle.mjs';\nexport { buildCircle } from './buildCircle.mjs';\nimport { buildPoly } from './buildPoly.mjs';\nexport { buildPoly } from './buildPoly.mjs';\nimport { buildRectangle } from './buildRectangle.mjs';\nexport { buildRectangle } from './buildRectangle.mjs';\nimport { buildRoundedRectangle } from './buildRoundedRectangle.mjs';\nexport { buildRoundedRectangle } from './buildRoundedRectangle.mjs';\nexport { ArcUtils } from './ArcUtils.mjs';\nexport { BatchPart } from './BatchPart.mjs';\nexport { BezierUtils } from './BezierUtils.mjs';\nexport { buildLine } from './buildLine.mjs';\nexport { QuadraticUtils } from './QuadraticUtils.mjs';\n\nconst FILL_COMMANDS = {\n [SHAPES.POLY]: buildPoly,\n [SHAPES.CIRC]: buildCircle,\n [SHAPES.ELIP]: buildCircle,\n [SHAPES.RECT]: buildRectangle,\n [SHAPES.RREC]: buildRoundedRectangle\n};\nconst BATCH_POOL = [];\nconst DRAW_CALL_POOL = [];\n\nexport { BATCH_POOL, DRAW_CALL_POOL, FILL_COMMANDS };\n//# sourceMappingURL=index.mjs.map\n","class GraphicsData {\n constructor(shape, fillStyle = null, lineStyle = null, matrix = null) {\n this.points = [];\n this.holes = [];\n this.shape = shape;\n this.lineStyle = lineStyle;\n this.fillStyle = fillStyle;\n this.matrix = matrix;\n this.type = shape.type;\n }\n clone() {\n return new GraphicsData(this.shape, this.fillStyle, this.lineStyle, this.matrix);\n }\n destroy() {\n this.shape = null;\n this.holes.length = 0;\n this.holes = null;\n this.points.length = 0;\n this.points = null;\n this.lineStyle = null;\n this.fillStyle = null;\n }\n}\n\nexport { GraphicsData };\n//# sourceMappingURL=GraphicsData.mjs.map\n","class BatchPart {\n constructor() {\n this.reset();\n }\n begin(style, startIndex, attribStart) {\n this.reset();\n this.style = style;\n this.start = startIndex;\n this.attribStart = attribStart;\n }\n end(endIndex, endAttrib) {\n this.attribSize = endAttrib - this.attribStart;\n this.size = endIndex - this.start;\n }\n reset() {\n this.style = null;\n this.size = 0;\n this.start = 0;\n this.attribStart = 0;\n this.attribSize = 0;\n }\n}\n\nexport { BatchPart };\n//# sourceMappingURL=BatchPart.mjs.map\n","import { Point, BatchGeometry, WRAP_MODES, BaseTexture, BatchDrawCall, BatchTextureArray, DRAW_MODES, Color } from '@pixi/core';\nimport { Bounds } from '@pixi/display';\nimport { GraphicsData } from './GraphicsData.mjs';\nimport { DRAW_CALL_POOL, BATCH_POOL, FILL_COMMANDS } from './utils/index.mjs';\nimport { BatchPart } from './utils/BatchPart.mjs';\nimport { buildPoly } from './utils/buildPoly.mjs';\nimport { buildLine } from './utils/buildLine.mjs';\n\nconst tmpPoint = new Point();\nconst _GraphicsGeometry = class extends BatchGeometry {\n constructor() {\n super();\n this.closePointEps = 1e-4;\n this.boundsPadding = 0;\n this.uvsFloat32 = null;\n this.indicesUint16 = null;\n this.batchable = false;\n this.points = [];\n this.colors = [];\n this.uvs = [];\n this.indices = [];\n this.textureIds = [];\n this.graphicsData = [];\n this.drawCalls = [];\n this.batchDirty = -1;\n this.batches = [];\n this.dirty = 0;\n this.cacheDirty = -1;\n this.clearDirty = 0;\n this.shapeIndex = 0;\n this._bounds = new Bounds();\n this.boundsDirty = -1;\n }\n get bounds() {\n this.updateBatches();\n if (this.boundsDirty !== this.dirty) {\n this.boundsDirty = this.dirty;\n this.calculateBounds();\n }\n return this._bounds;\n }\n invalidate() {\n this.boundsDirty = -1;\n this.dirty++;\n this.batchDirty++;\n this.shapeIndex = 0;\n this.points.length = 0;\n this.colors.length = 0;\n this.uvs.length = 0;\n this.indices.length = 0;\n this.textureIds.length = 0;\n for (let i = 0; i < this.drawCalls.length; i++) {\n this.drawCalls[i].texArray.clear();\n DRAW_CALL_POOL.push(this.drawCalls[i]);\n }\n this.drawCalls.length = 0;\n for (let i = 0; i < this.batches.length; i++) {\n const batchPart = this.batches[i];\n batchPart.reset();\n BATCH_POOL.push(batchPart);\n }\n this.batches.length = 0;\n }\n clear() {\n if (this.graphicsData.length > 0) {\n this.invalidate();\n this.clearDirty++;\n this.graphicsData.length = 0;\n }\n return this;\n }\n drawShape(shape, fillStyle = null, lineStyle = null, matrix = null) {\n const data = new GraphicsData(shape, fillStyle, lineStyle, matrix);\n this.graphicsData.push(data);\n this.dirty++;\n return this;\n }\n drawHole(shape, matrix = null) {\n if (!this.graphicsData.length) {\n return null;\n }\n const data = new GraphicsData(shape, null, null, matrix);\n const lastShape = this.graphicsData[this.graphicsData.length - 1];\n data.lineStyle = lastShape.lineStyle;\n lastShape.holes.push(data);\n this.dirty++;\n return this;\n }\n destroy() {\n super.destroy();\n for (let i = 0; i < this.graphicsData.length; ++i) {\n this.graphicsData[i].destroy();\n }\n this.points.length = 0;\n this.points = null;\n this.colors.length = 0;\n this.colors = null;\n this.uvs.length = 0;\n this.uvs = null;\n this.indices.length = 0;\n this.indices = null;\n this.indexBuffer.destroy();\n this.indexBuffer = null;\n this.graphicsData.length = 0;\n this.graphicsData = null;\n this.drawCalls.length = 0;\n this.drawCalls = null;\n this.batches.length = 0;\n this.batches = null;\n this._bounds = null;\n }\n containsPoint(point) {\n const graphicsData = this.graphicsData;\n for (let i = 0; i < graphicsData.length; ++i) {\n const data = graphicsData[i];\n if (!data.fillStyle.visible) {\n continue;\n }\n if (data.shape) {\n if (data.matrix) {\n data.matrix.applyInverse(point, tmpPoint);\n } else {\n tmpPoint.copyFrom(point);\n }\n if (data.shape.contains(tmpPoint.x, tmpPoint.y)) {\n let hitHole = false;\n if (data.holes) {\n for (let i2 = 0; i2 < data.holes.length; i2++) {\n const hole = data.holes[i2];\n if (hole.shape.contains(tmpPoint.x, tmpPoint.y)) {\n hitHole = true;\n break;\n }\n }\n }\n if (!hitHole) {\n return true;\n }\n }\n }\n }\n return false;\n }\n updateBatches() {\n if (!this.graphicsData.length) {\n this.batchable = true;\n return;\n }\n if (!this.validateBatching()) {\n return;\n }\n this.cacheDirty = this.dirty;\n const uvs = this.uvs;\n const graphicsData = this.graphicsData;\n let batchPart = null;\n let currentStyle = null;\n if (this.batches.length > 0) {\n batchPart = this.batches[this.batches.length - 1];\n currentStyle = batchPart.style;\n }\n for (let i = this.shapeIndex; i < graphicsData.length; i++) {\n this.shapeIndex++;\n const data = graphicsData[i];\n const fillStyle = data.fillStyle;\n const lineStyle = data.lineStyle;\n const command = FILL_COMMANDS[data.type];\n command.build(data);\n if (data.matrix) {\n this.transformPoints(data.points, data.matrix);\n }\n if (fillStyle.visible || lineStyle.visible) {\n this.processHoles(data.holes);\n }\n for (let j = 0; j < 2; j++) {\n const style = j === 0 ? fillStyle : lineStyle;\n if (!style.visible)\n continue;\n const nextTexture = style.texture.baseTexture;\n const index2 = this.indices.length;\n const attribIndex = this.points.length / 2;\n nextTexture.wrapMode = WRAP_MODES.REPEAT;\n if (j === 0) {\n this.processFill(data);\n } else {\n this.processLine(data);\n }\n const size = this.points.length / 2 - attribIndex;\n if (size === 0)\n continue;\n if (batchPart && !this._compareStyles(currentStyle, style)) {\n batchPart.end(index2, attribIndex);\n batchPart = null;\n }\n if (!batchPart) {\n batchPart = BATCH_POOL.pop() || new BatchPart();\n batchPart.begin(style, index2, attribIndex);\n this.batches.push(batchPart);\n currentStyle = style;\n }\n this.addUvs(this.points, uvs, style.texture, attribIndex, size, style.matrix);\n }\n }\n const index = this.indices.length;\n const attrib = this.points.length / 2;\n if (batchPart) {\n batchPart.end(index, attrib);\n }\n if (this.batches.length === 0) {\n this.batchable = true;\n return;\n }\n const need32 = attrib > 65535;\n if (this.indicesUint16 && this.indices.length === this.indicesUint16.length && need32 === this.indicesUint16.BYTES_PER_ELEMENT > 2) {\n this.indicesUint16.set(this.indices);\n } else {\n this.indicesUint16 = need32 ? new Uint32Array(this.indices) : new Uint16Array(this.indices);\n }\n this.batchable = this.isBatchable();\n if (this.batchable) {\n this.packBatches();\n } else {\n this.buildDrawCalls();\n }\n }\n _compareStyles(styleA, styleB) {\n if (!styleA || !styleB) {\n return false;\n }\n if (styleA.texture.baseTexture !== styleB.texture.baseTexture) {\n return false;\n }\n if (styleA.color + styleA.alpha !== styleB.color + styleB.alpha) {\n return false;\n }\n if (!!styleA.native !== !!styleB.native) {\n return false;\n }\n return true;\n }\n validateBatching() {\n if (this.dirty === this.cacheDirty || !this.graphicsData.length) {\n return false;\n }\n for (let i = 0, l = this.graphicsData.length; i < l; i++) {\n const data = this.graphicsData[i];\n const fill = data.fillStyle;\n const line = data.lineStyle;\n if (fill && !fill.texture.baseTexture.valid)\n return false;\n if (line && !line.texture.baseTexture.valid)\n return false;\n }\n return true;\n }\n packBatches() {\n this.batchDirty++;\n this.uvsFloat32 = new Float32Array(this.uvs);\n const batches = this.batches;\n for (let i = 0, l = batches.length; i < l; i++) {\n const batch = batches[i];\n for (let j = 0; j < batch.size; j++) {\n const index = batch.start + j;\n this.indicesUint16[index] = this.indicesUint16[index] - batch.attribStart;\n }\n }\n }\n isBatchable() {\n if (this.points.length > 65535 * 2) {\n return false;\n }\n const batches = this.batches;\n for (let i = 0; i < batches.length; i++) {\n if (batches[i].style.native) {\n return false;\n }\n }\n return this.points.length < _GraphicsGeometry.BATCHABLE_SIZE * 2;\n }\n buildDrawCalls() {\n let TICK = ++BaseTexture._globalBatch;\n for (let i = 0; i < this.drawCalls.length; i++) {\n this.drawCalls[i].texArray.clear();\n DRAW_CALL_POOL.push(this.drawCalls[i]);\n }\n this.drawCalls.length = 0;\n const colors = this.colors;\n const textureIds = this.textureIds;\n let currentGroup = DRAW_CALL_POOL.pop();\n if (!currentGroup) {\n currentGroup = new BatchDrawCall();\n currentGroup.texArray = new BatchTextureArray();\n }\n currentGroup.texArray.count = 0;\n currentGroup.start = 0;\n currentGroup.size = 0;\n currentGroup.type = DRAW_MODES.TRIANGLES;\n let textureCount = 0;\n let currentTexture = null;\n let textureId = 0;\n let native = false;\n let drawMode = DRAW_MODES.TRIANGLES;\n let index = 0;\n this.drawCalls.push(currentGroup);\n for (let i = 0; i < this.batches.length; i++) {\n const data = this.batches[i];\n const maxTextures = 8;\n const style = data.style;\n const nextTexture = style.texture.baseTexture;\n if (native !== !!style.native) {\n native = !!style.native;\n drawMode = native ? DRAW_MODES.LINES : DRAW_MODES.TRIANGLES;\n currentTexture = null;\n textureCount = maxTextures;\n TICK++;\n }\n if (currentTexture !== nextTexture) {\n currentTexture = nextTexture;\n if (nextTexture._batchEnabled !== TICK) {\n if (textureCount === maxTextures) {\n TICK++;\n textureCount = 0;\n if (currentGroup.size > 0) {\n currentGroup = DRAW_CALL_POOL.pop();\n if (!currentGroup) {\n currentGroup = new BatchDrawCall();\n currentGroup.texArray = new BatchTextureArray();\n }\n this.drawCalls.push(currentGroup);\n }\n currentGroup.start = index;\n currentGroup.size = 0;\n currentGroup.texArray.count = 0;\n currentGroup.type = drawMode;\n }\n nextTexture.touched = 1;\n nextTexture._batchEnabled = TICK;\n nextTexture._batchLocation = textureCount;\n nextTexture.wrapMode = WRAP_MODES.REPEAT;\n currentGroup.texArray.elements[currentGroup.texArray.count++] = nextTexture;\n textureCount++;\n }\n }\n currentGroup.size += data.size;\n index += data.size;\n textureId = nextTexture._batchLocation;\n this.addColors(colors, style.color, style.alpha, data.attribSize, data.attribStart);\n this.addTextureIds(textureIds, textureId, data.attribSize, data.attribStart);\n }\n BaseTexture._globalBatch = TICK;\n this.packAttributes();\n }\n packAttributes() {\n const verts = this.points;\n const uvs = this.uvs;\n const colors = this.colors;\n const textureIds = this.textureIds;\n const glPoints = new ArrayBuffer(verts.length * 3 * 4);\n const f32 = new Float32Array(glPoints);\n const u32 = new Uint32Array(glPoints);\n let p = 0;\n for (let i = 0; i < verts.length / 2; i++) {\n f32[p++] = verts[i * 2];\n f32[p++] = verts[i * 2 + 1];\n f32[p++] = uvs[i * 2];\n f32[p++] = uvs[i * 2 + 1];\n u32[p++] = colors[i];\n f32[p++] = textureIds[i];\n }\n this._buffer.update(glPoints);\n this._indexBuffer.update(this.indicesUint16);\n }\n processFill(data) {\n if (data.holes.length) {\n buildPoly.triangulate(data, this);\n } else {\n const command = FILL_COMMANDS[data.type];\n command.triangulate(data, this);\n }\n }\n processLine(data) {\n buildLine(data, this);\n for (let i = 0; i < data.holes.length; i++) {\n buildLine(data.holes[i], this);\n }\n }\n processHoles(holes) {\n for (let i = 0; i < holes.length; i++) {\n const hole = holes[i];\n const command = FILL_COMMANDS[hole.type];\n command.build(hole);\n if (hole.matrix) {\n this.transformPoints(hole.points, hole.matrix);\n }\n }\n }\n calculateBounds() {\n const bounds = this._bounds;\n bounds.clear();\n bounds.addVertexData(this.points, 0, this.points.length);\n bounds.pad(this.boundsPadding, this.boundsPadding);\n }\n transformPoints(points, matrix) {\n for (let i = 0; i < points.length / 2; i++) {\n const x = points[i * 2];\n const y = points[i * 2 + 1];\n points[i * 2] = matrix.a * x + matrix.c * y + matrix.tx;\n points[i * 2 + 1] = matrix.b * x + matrix.d * y + matrix.ty;\n }\n }\n addColors(colors, color, alpha, size, offset = 0) {\n const bgr = Color.shared.setValue(color).toLittleEndianNumber();\n const result = Color.shared.setValue(bgr).toPremultiplied(alpha);\n colors.length = Math.max(colors.length, offset + size);\n for (let i = 0; i < size; i++) {\n colors[offset + i] = result;\n }\n }\n addTextureIds(textureIds, id, size, offset = 0) {\n textureIds.length = Math.max(textureIds.length, offset + size);\n for (let i = 0; i < size; i++) {\n textureIds[offset + i] = id;\n }\n }\n addUvs(verts, uvs, texture, start, size, matrix = null) {\n let index = 0;\n const uvsStart = uvs.length;\n const frame = texture.frame;\n while (index < size) {\n let x = verts[(start + index) * 2];\n let y = verts[(start + index) * 2 + 1];\n if (matrix) {\n const nx = matrix.a * x + matrix.c * y + matrix.tx;\n y = matrix.b * x + matrix.d * y + matrix.ty;\n x = nx;\n }\n index++;\n uvs.push(x / frame.width, y / frame.height);\n }\n const baseTexture = texture.baseTexture;\n if (frame.width < baseTexture.width || frame.height < baseTexture.height) {\n this.adjustUvs(uvs, texture, uvsStart, size);\n }\n }\n adjustUvs(uvs, texture, start, size) {\n const baseTexture = texture.baseTexture;\n const eps = 1e-6;\n const finish = start + size * 2;\n const frame = texture.frame;\n const scaleX = frame.width / baseTexture.width;\n const scaleY = frame.height / baseTexture.height;\n let offsetX = frame.x / frame.width;\n let offsetY = frame.y / frame.height;\n let minX = Math.floor(uvs[start] + eps);\n let minY = Math.floor(uvs[start + 1] + eps);\n for (let i = start + 2; i < finish; i += 2) {\n minX = Math.min(minX, Math.floor(uvs[i] + eps));\n minY = Math.min(minY, Math.floor(uvs[i + 1] + eps));\n }\n offsetX -= minX;\n offsetY -= minY;\n for (let i = start; i < finish; i += 2) {\n uvs[i] = (uvs[i] + offsetX) * scaleX;\n uvs[i + 1] = (uvs[i + 1] + offsetY) * scaleY;\n }\n }\n};\nlet GraphicsGeometry = _GraphicsGeometry;\nGraphicsGeometry.BATCHABLE_SIZE = 100;\n\nexport { GraphicsGeometry };\n//# sourceMappingURL=GraphicsGeometry.mjs.map\n","import { Texture } from '@pixi/core';\n\nclass FillStyle {\n constructor() {\n this.color = 16777215;\n this.alpha = 1;\n this.texture = Texture.WHITE;\n this.matrix = null;\n this.visible = false;\n this.reset();\n }\n clone() {\n const obj = new FillStyle();\n obj.color = this.color;\n obj.alpha = this.alpha;\n obj.texture = this.texture;\n obj.matrix = this.matrix;\n obj.visible = this.visible;\n return obj;\n }\n reset() {\n this.color = 16777215;\n this.alpha = 1;\n this.texture = Texture.WHITE;\n this.matrix = null;\n this.visible = false;\n }\n destroy() {\n this.texture = null;\n this.matrix = null;\n }\n}\n\nexport { FillStyle };\n//# sourceMappingURL=FillStyle.mjs.map\n","import { LINE_CAP, LINE_JOIN } from '../const.mjs';\nimport { FillStyle } from './FillStyle.mjs';\n\nclass LineStyle extends FillStyle {\n constructor() {\n super(...arguments);\n this.width = 0;\n this.alignment = 0.5;\n this.native = false;\n this.cap = LINE_CAP.BUTT;\n this.join = LINE_JOIN.MITER;\n this.miterLimit = 10;\n }\n clone() {\n const obj = new LineStyle();\n obj.color = this.color;\n obj.alpha = this.alpha;\n obj.texture = this.texture;\n obj.matrix = this.matrix;\n obj.visible = this.visible;\n obj.width = this.width;\n obj.alignment = this.alignment;\n obj.native = this.native;\n obj.cap = this.cap;\n obj.join = this.join;\n obj.miterLimit = this.miterLimit;\n return obj;\n }\n reset() {\n super.reset();\n this.color = 0;\n this.alignment = 0.5;\n this.width = 0;\n this.native = false;\n }\n}\n\nexport { LineStyle };\n//# sourceMappingURL=LineStyle.mjs.map\n","import { State, Color, BLEND_MODES, Texture, Polygon, PI_2, Rectangle, RoundedRectangle, Circle, Ellipse, SHAPES, Matrix, UniformGroup, Shader, Point } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { LINE_CAP, LINE_JOIN, curves } from './const.mjs';\nimport { GraphicsGeometry } from './GraphicsGeometry.mjs';\nimport { FillStyle } from './styles/FillStyle.mjs';\nimport { LineStyle } from './styles/LineStyle.mjs';\nimport './utils/index.mjs';\nimport { QuadraticUtils } from './utils/QuadraticUtils.mjs';\nimport { BezierUtils } from './utils/BezierUtils.mjs';\nimport { ArcUtils } from './utils/ArcUtils.mjs';\n\nconst DEFAULT_SHADERS = {};\nconst _Graphics = class extends Container {\n constructor(geometry = null) {\n super();\n this.shader = null;\n this.pluginName = \"batch\";\n this.currentPath = null;\n this.batches = [];\n this.batchTint = -1;\n this.batchDirty = -1;\n this.vertexData = null;\n this._fillStyle = new FillStyle();\n this._lineStyle = new LineStyle();\n this._matrix = null;\n this._holeMode = false;\n this.state = State.for2d();\n this._geometry = geometry || new GraphicsGeometry();\n this._geometry.refCount++;\n this._transformID = -1;\n this._tintColor = new Color(16777215);\n this.blendMode = BLEND_MODES.NORMAL;\n }\n get geometry() {\n return this._geometry;\n }\n clone() {\n this.finishPoly();\n return new _Graphics(this._geometry);\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n this._tintColor.setValue(value);\n }\n get fill() {\n return this._fillStyle;\n }\n get line() {\n return this._lineStyle;\n }\n lineStyle(options = null, color = 0, alpha, alignment = 0.5, native = false) {\n if (typeof options === \"number\") {\n options = { width: options, color, alpha, alignment, native };\n }\n return this.lineTextureStyle(options);\n }\n lineTextureStyle(options) {\n const defaultLineStyleOptions = {\n width: 0,\n texture: Texture.WHITE,\n color: options?.texture ? 16777215 : 0,\n matrix: null,\n alignment: 0.5,\n native: false,\n cap: LINE_CAP.BUTT,\n join: LINE_JOIN.MITER,\n miterLimit: 10\n };\n options = Object.assign(defaultLineStyleOptions, options);\n this.normalizeColor(options);\n if (this.currentPath) {\n this.startPoly();\n }\n const visible = options.width > 0 && options.alpha > 0;\n if (!visible) {\n this._lineStyle.reset();\n } else {\n if (options.matrix) {\n options.matrix = options.matrix.clone();\n options.matrix.invert();\n }\n Object.assign(this._lineStyle, { visible }, options);\n }\n return this;\n }\n startPoly() {\n if (this.currentPath) {\n const points = this.currentPath.points;\n const len = this.currentPath.points.length;\n if (len > 2) {\n this.drawShape(this.currentPath);\n this.currentPath = new Polygon();\n this.currentPath.closeStroke = false;\n this.currentPath.points.push(points[len - 2], points[len - 1]);\n }\n } else {\n this.currentPath = new Polygon();\n this.currentPath.closeStroke = false;\n }\n }\n finishPoly() {\n if (this.currentPath) {\n if (this.currentPath.points.length > 2) {\n this.drawShape(this.currentPath);\n this.currentPath = null;\n } else {\n this.currentPath.points.length = 0;\n }\n }\n }\n moveTo(x, y) {\n this.startPoly();\n this.currentPath.points[0] = x;\n this.currentPath.points[1] = y;\n return this;\n }\n lineTo(x, y) {\n if (!this.currentPath) {\n this.moveTo(0, 0);\n }\n const points = this.currentPath.points;\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n if (fromX !== x || fromY !== y) {\n points.push(x, y);\n }\n return this;\n }\n _initCurve(x = 0, y = 0) {\n if (this.currentPath) {\n if (this.currentPath.points.length === 0) {\n this.currentPath.points = [x, y];\n }\n } else {\n this.moveTo(x, y);\n }\n }\n quadraticCurveTo(cpX, cpY, toX, toY) {\n this._initCurve();\n const points = this.currentPath.points;\n if (points.length === 0) {\n this.moveTo(0, 0);\n }\n QuadraticUtils.curveTo(cpX, cpY, toX, toY, points);\n return this;\n }\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\n this._initCurve();\n BezierUtils.curveTo(cpX, cpY, cpX2, cpY2, toX, toY, this.currentPath.points);\n return this;\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._initCurve(x1, y1);\n const points = this.currentPath.points;\n const result = ArcUtils.curveTo(x1, y1, x2, y2, radius, points);\n if (result) {\n const { cx, cy, radius: radius2, startAngle, endAngle, anticlockwise } = result;\n this.arc(cx, cy, radius2, startAngle, endAngle, anticlockwise);\n }\n return this;\n }\n arc(cx, cy, radius, startAngle, endAngle, anticlockwise = false) {\n if (startAngle === endAngle) {\n return this;\n }\n if (!anticlockwise && endAngle <= startAngle) {\n endAngle += PI_2;\n } else if (anticlockwise && startAngle <= endAngle) {\n startAngle += PI_2;\n }\n const sweep = endAngle - startAngle;\n if (sweep === 0) {\n return this;\n }\n const startX = cx + Math.cos(startAngle) * radius;\n const startY = cy + Math.sin(startAngle) * radius;\n const eps = this._geometry.closePointEps;\n let points = this.currentPath ? this.currentPath.points : null;\n if (points) {\n const xDiff = Math.abs(points[points.length - 2] - startX);\n const yDiff = Math.abs(points[points.length - 1] - startY);\n if (xDiff < eps && yDiff < eps) {\n } else {\n points.push(startX, startY);\n }\n } else {\n this.moveTo(startX, startY);\n points = this.currentPath.points;\n }\n ArcUtils.arc(startX, startY, cx, cy, radius, startAngle, endAngle, anticlockwise, points);\n return this;\n }\n beginFill(color = 0, alpha) {\n return this.beginTextureFill({ texture: Texture.WHITE, color, alpha });\n }\n normalizeColor(options) {\n const temp = Color.shared.setValue(options.color ?? 0);\n options.color = temp.toNumber();\n options.alpha ?? (options.alpha = temp.alpha);\n }\n beginTextureFill(options) {\n const defaultOptions = {\n texture: Texture.WHITE,\n color: 16777215,\n matrix: null\n };\n options = Object.assign(defaultOptions, options);\n this.normalizeColor(options);\n if (this.currentPath) {\n this.startPoly();\n }\n const visible = options.alpha > 0;\n if (!visible) {\n this._fillStyle.reset();\n } else {\n if (options.matrix) {\n options.matrix = options.matrix.clone();\n options.matrix.invert();\n }\n Object.assign(this._fillStyle, { visible }, options);\n }\n return this;\n }\n endFill() {\n this.finishPoly();\n this._fillStyle.reset();\n return this;\n }\n drawRect(x, y, width, height) {\n return this.drawShape(new Rectangle(x, y, width, height));\n }\n drawRoundedRect(x, y, width, height, radius) {\n return this.drawShape(new RoundedRectangle(x, y, width, height, radius));\n }\n drawCircle(x, y, radius) {\n return this.drawShape(new Circle(x, y, radius));\n }\n drawEllipse(x, y, width, height) {\n return this.drawShape(new Ellipse(x, y, width, height));\n }\n drawPolygon(...path) {\n let points;\n let closeStroke = true;\n const poly = path[0];\n if (poly.points) {\n closeStroke = poly.closeStroke;\n points = poly.points;\n } else if (Array.isArray(path[0])) {\n points = path[0];\n } else {\n points = path;\n }\n const shape = new Polygon(points);\n shape.closeStroke = closeStroke;\n this.drawShape(shape);\n return this;\n }\n drawShape(shape) {\n if (!this._holeMode) {\n this._geometry.drawShape(shape, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix);\n } else {\n this._geometry.drawHole(shape, this._matrix);\n }\n return this;\n }\n clear() {\n this._geometry.clear();\n this._lineStyle.reset();\n this._fillStyle.reset();\n this._boundsID++;\n this._matrix = null;\n this._holeMode = false;\n this.currentPath = null;\n return this;\n }\n isFastRect() {\n const data = this._geometry.graphicsData;\n return data.length === 1 && data[0].shape.type === SHAPES.RECT && !data[0].matrix && !data[0].holes.length && !(data[0].lineStyle.visible && data[0].lineStyle.width);\n }\n _render(renderer) {\n this.finishPoly();\n const geometry = this._geometry;\n geometry.updateBatches();\n if (geometry.batchable) {\n if (this.batchDirty !== geometry.batchDirty) {\n this._populateBatches();\n }\n this._renderBatched(renderer);\n } else {\n renderer.batch.flush();\n this._renderDirect(renderer);\n }\n }\n _populateBatches() {\n const geometry = this._geometry;\n const blendMode = this.blendMode;\n const len = geometry.batches.length;\n this.batchTint = -1;\n this._transformID = -1;\n this.batchDirty = geometry.batchDirty;\n this.batches.length = len;\n this.vertexData = new Float32Array(geometry.points);\n for (let i = 0; i < len; i++) {\n const gI = geometry.batches[i];\n const color = gI.style.color;\n const vertexData = new Float32Array(this.vertexData.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2);\n const uvs = new Float32Array(geometry.uvsFloat32.buffer, gI.attribStart * 4 * 2, gI.attribSize * 2);\n const indices = new Uint16Array(geometry.indicesUint16.buffer, gI.start * 2, gI.size);\n const batch = {\n vertexData,\n blendMode,\n indices,\n uvs,\n _batchRGB: Color.shared.setValue(color).toRgbArray(),\n _tintRGB: color,\n _texture: gI.style.texture,\n alpha: gI.style.alpha,\n worldAlpha: 1\n };\n this.batches[i] = batch;\n }\n }\n _renderBatched(renderer) {\n if (!this.batches.length) {\n return;\n }\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n this.calculateVertices();\n this.calculateTints();\n for (let i = 0, l = this.batches.length; i < l; i++) {\n const batch = this.batches[i];\n batch.worldAlpha = this.worldAlpha * batch.alpha;\n renderer.plugins[this.pluginName].render(batch);\n }\n }\n _renderDirect(renderer) {\n const shader = this._resolveDirectShader(renderer);\n const geometry = this._geometry;\n const worldAlpha = this.worldAlpha;\n const uniforms = shader.uniforms;\n const drawCalls = geometry.drawCalls;\n uniforms.translationMatrix = this.transform.worldTransform;\n Color.shared.setValue(this._tintColor).premultiply(worldAlpha).toArray(uniforms.tint);\n renderer.shader.bind(shader);\n renderer.geometry.bind(geometry, shader);\n renderer.state.set(this.state);\n for (let i = 0, l = drawCalls.length; i < l; i++) {\n this._renderDrawCallDirect(renderer, geometry.drawCalls[i]);\n }\n }\n _renderDrawCallDirect(renderer, drawCall) {\n const { texArray, type, size, start } = drawCall;\n const groupTextureCount = texArray.count;\n for (let j = 0; j < groupTextureCount; j++) {\n renderer.texture.bind(texArray.elements[j], j);\n }\n renderer.geometry.draw(type, size, start);\n }\n _resolveDirectShader(renderer) {\n let shader = this.shader;\n const pluginName = this.pluginName;\n if (!shader) {\n if (!DEFAULT_SHADERS[pluginName]) {\n const { maxTextures } = renderer.plugins[pluginName];\n const sampleValues = new Int32Array(maxTextures);\n for (let i = 0; i < maxTextures; i++) {\n sampleValues[i] = i;\n }\n const uniforms = {\n tint: new Float32Array([1, 1, 1, 1]),\n translationMatrix: new Matrix(),\n default: UniformGroup.from({ uSamplers: sampleValues }, true)\n };\n const program = renderer.plugins[pluginName]._shader.program;\n DEFAULT_SHADERS[pluginName] = new Shader(program, uniforms);\n }\n shader = DEFAULT_SHADERS[pluginName];\n }\n return shader;\n }\n _calculateBounds() {\n this.finishPoly();\n const geometry = this._geometry;\n if (!geometry.graphicsData.length) {\n return;\n }\n const { minX, minY, maxX, maxY } = geometry.bounds;\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, _Graphics._TEMP_POINT);\n return this._geometry.containsPoint(_Graphics._TEMP_POINT);\n }\n calculateTints() {\n if (this.batchTint !== this.tint) {\n this.batchTint = this._tintColor.toNumber();\n for (let i = 0; i < this.batches.length; i++) {\n const batch = this.batches[i];\n batch._tintRGB = Color.shared.setValue(this._tintColor).multiply(batch._batchRGB).toLittleEndianNumber();\n }\n }\n }\n calculateVertices() {\n const wtID = this.transform._worldID;\n if (this._transformID === wtID) {\n return;\n }\n this._transformID = wtID;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const data = this._geometry.points;\n const vertexData = this.vertexData;\n let count = 0;\n for (let i = 0; i < data.length; i += 2) {\n const x = data[i];\n const y = data[i + 1];\n vertexData[count++] = a * x + c * y + tx;\n vertexData[count++] = d * y + b * x + ty;\n }\n }\n closePath() {\n const currentPath = this.currentPath;\n if (currentPath) {\n currentPath.closeStroke = true;\n this.finishPoly();\n }\n return this;\n }\n setMatrix(matrix) {\n this._matrix = matrix;\n return this;\n }\n beginHole() {\n this.finishPoly();\n this._holeMode = true;\n return this;\n }\n endHole() {\n this.finishPoly();\n this._holeMode = false;\n return this;\n }\n destroy(options) {\n this._geometry.refCount--;\n if (this._geometry.refCount === 0) {\n this._geometry.dispose();\n }\n this._matrix = null;\n this.currentPath = null;\n this._lineStyle.destroy();\n this._lineStyle = null;\n this._fillStyle.destroy();\n this._fillStyle = null;\n this._geometry = null;\n this.shader = null;\n this.vertexData = null;\n this.batches.length = 0;\n this.batches = null;\n super.destroy(options);\n }\n};\nlet Graphics = _Graphics;\nGraphics.curves = curves;\nGraphics._TEMP_POINT = new Point();\n\nexport { Graphics };\n//# sourceMappingURL=Graphics.mjs.map\n","const PI_2 = Math.PI * 2;\nconst RAD_TO_DEG = 180 / Math.PI;\nconst DEG_TO_RAD = Math.PI / 180;\nvar SHAPES = /* @__PURE__ */ ((SHAPES2) => {\n SHAPES2[SHAPES2[\"POLY\"] = 0] = \"POLY\";\n SHAPES2[SHAPES2[\"RECT\"] = 1] = \"RECT\";\n SHAPES2[SHAPES2[\"CIRC\"] = 2] = \"CIRC\";\n SHAPES2[SHAPES2[\"ELIP\"] = 3] = \"ELIP\";\n SHAPES2[SHAPES2[\"RREC\"] = 4] = \"RREC\";\n return SHAPES2;\n})(SHAPES || {});\n\nexport { DEG_TO_RAD, PI_2, RAD_TO_DEG, SHAPES };\n//# sourceMappingURL=const.mjs.map\n","class Point {\n constructor(x = 0, y = 0) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n clone() {\n return new Point(this.x, this.y);\n }\n copyFrom(p) {\n this.set(p.x, p.y);\n return this;\n }\n copyTo(p) {\n p.set(this.x, this.y);\n return p;\n }\n equals(p) {\n return p.x === this.x && p.y === this.y;\n }\n set(x = 0, y = x) {\n this.x = x;\n this.y = y;\n return this;\n }\n toString() {\n return `[@pixi/math:Point x=${this.x} y=${this.y}]`;\n }\n}\n\nexport { Point };\n//# sourceMappingURL=Point.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Point } from '../Point.mjs';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\nclass Rectangle {\n constructor(x = 0, y = 0, width = 0, height = 0) {\n this.x = Number(x);\n this.y = Number(y);\n this.width = Number(width);\n this.height = Number(height);\n this.type = SHAPES.RECT;\n }\n get left() {\n return this.x;\n }\n get right() {\n return this.x + this.width;\n }\n get top() {\n return this.y;\n }\n get bottom() {\n return this.y + this.height;\n }\n static get EMPTY() {\n return new Rectangle(0, 0, 0, 0);\n }\n clone() {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n copyFrom(rectangle) {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n return this;\n }\n copyTo(rectangle) {\n rectangle.x = this.x;\n rectangle.y = this.y;\n rectangle.width = this.width;\n rectangle.height = this.height;\n return rectangle;\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x < this.x + this.width) {\n if (y >= this.y && y < this.y + this.height) {\n return true;\n }\n }\n return false;\n }\n intersects(other, transform) {\n if (!transform) {\n const x02 = this.x < other.x ? other.x : this.x;\n const x12 = this.right > other.right ? other.right : this.right;\n if (x12 <= x02) {\n return false;\n }\n const y02 = this.y < other.y ? other.y : this.y;\n const y12 = this.bottom > other.bottom ? other.bottom : this.bottom;\n return y12 > y02;\n }\n const x0 = this.left;\n const x1 = this.right;\n const y0 = this.top;\n const y1 = this.bottom;\n if (x1 <= x0 || y1 <= y0) {\n return false;\n }\n const lt = tempPoints[0].set(other.left, other.top);\n const lb = tempPoints[1].set(other.left, other.bottom);\n const rt = tempPoints[2].set(other.right, other.top);\n const rb = tempPoints[3].set(other.right, other.bottom);\n if (rt.x <= lt.x || lb.y <= lt.y) {\n return false;\n }\n const s = Math.sign(transform.a * transform.d - transform.b * transform.c);\n if (s === 0) {\n return false;\n }\n transform.apply(lt, lt);\n transform.apply(lb, lb);\n transform.apply(rt, rt);\n transform.apply(rb, rb);\n if (Math.max(lt.x, lb.x, rt.x, rb.x) <= x0 || Math.min(lt.x, lb.x, rt.x, rb.x) >= x1 || Math.max(lt.y, lb.y, rt.y, rb.y) <= y0 || Math.min(lt.y, lb.y, rt.y, rb.y) >= y1) {\n return false;\n }\n const nx = s * (lb.y - lt.y);\n const ny = s * (lt.x - lb.x);\n const n00 = nx * x0 + ny * y0;\n const n10 = nx * x1 + ny * y0;\n const n01 = nx * x0 + ny * y1;\n const n11 = nx * x1 + ny * y1;\n if (Math.max(n00, n10, n01, n11) <= nx * lt.x + ny * lt.y || Math.min(n00, n10, n01, n11) >= nx * rb.x + ny * rb.y) {\n return false;\n }\n const mx = s * (lt.y - rt.y);\n const my = s * (rt.x - lt.x);\n const m00 = mx * x0 + my * y0;\n const m10 = mx * x1 + my * y0;\n const m01 = mx * x0 + my * y1;\n const m11 = mx * x1 + my * y1;\n if (Math.max(m00, m10, m01, m11) <= mx * lt.x + my * lt.y || Math.min(m00, m10, m01, m11) >= mx * rb.x + my * rb.y) {\n return false;\n }\n return true;\n }\n pad(paddingX = 0, paddingY = paddingX) {\n this.x -= paddingX;\n this.y -= paddingY;\n this.width += paddingX * 2;\n this.height += paddingY * 2;\n return this;\n }\n fit(rectangle) {\n const x1 = Math.max(this.x, rectangle.x);\n const x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.max(this.y, rectangle.y);\n const y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = Math.max(x2 - x1, 0);\n this.y = y1;\n this.height = Math.max(y2 - y1, 0);\n return this;\n }\n ceil(resolution = 1, eps = 1e-3) {\n const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution;\n const y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution;\n this.x = Math.floor((this.x + eps) * resolution) / resolution;\n this.y = Math.floor((this.y + eps) * resolution) / resolution;\n this.width = x2 - this.x;\n this.height = y2 - this.y;\n return this;\n }\n enlarge(rectangle) {\n const x1 = Math.min(this.x, rectangle.x);\n const x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.min(this.y, rectangle.y);\n const y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height);\n this.x = x1;\n this.width = x2 - x1;\n this.y = y1;\n this.height = y2 - y1;\n return this;\n }\n toString() {\n return `[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`;\n }\n}\n\nexport { Rectangle };\n//# sourceMappingURL=Rectangle.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Rectangle } from './Rectangle.mjs';\n\nclass Circle {\n constructor(x = 0, y = 0, radius = 0) {\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.type = SHAPES.CIRC;\n }\n clone() {\n return new Circle(this.x, this.y, this.radius);\n }\n contains(x, y) {\n if (this.radius <= 0) {\n return false;\n }\n const r2 = this.radius * this.radius;\n let dx = this.x - x;\n let dy = this.y - y;\n dx *= dx;\n dy *= dy;\n return dx + dy <= r2;\n }\n getBounds() {\n return new Rectangle(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2);\n }\n toString() {\n return `[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`;\n }\n}\n\nexport { Circle };\n//# sourceMappingURL=Circle.mjs.map\n","import { SHAPES } from '../const.mjs';\nimport { Rectangle } from './Rectangle.mjs';\n\nclass Ellipse {\n constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n this.x = x;\n this.y = y;\n this.width = halfWidth;\n this.height = halfHeight;\n this.type = SHAPES.ELIP;\n }\n clone() {\n return new Ellipse(this.x, this.y, this.width, this.height);\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n let normx = (x - this.x) / this.width;\n let normy = (y - this.y) / this.height;\n normx *= normx;\n normy *= normy;\n return normx + normy <= 1;\n }\n getBounds() {\n return new Rectangle(this.x - this.width, this.y - this.height, this.width, this.height);\n }\n toString() {\n return `[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`;\n }\n}\n\nexport { Ellipse };\n//# sourceMappingURL=Ellipse.mjs.map\n","import { SHAPES } from '../const.mjs';\n\nclass Polygon {\n constructor(...points) {\n let flat = Array.isArray(points[0]) ? points[0] : points;\n if (typeof flat[0] !== \"number\") {\n const p = [];\n for (let i = 0, il = flat.length; i < il; i++) {\n p.push(flat[i].x, flat[i].y);\n }\n flat = p;\n }\n this.points = flat;\n this.type = SHAPES.POLY;\n this.closeStroke = true;\n }\n clone() {\n const points = this.points.slice();\n const polygon = new Polygon(points);\n polygon.closeStroke = this.closeStroke;\n return polygon;\n }\n contains(x, y) {\n let inside = false;\n const length = this.points.length / 2;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const xi = this.points[i * 2];\n const yi = this.points[i * 2 + 1];\n const xj = this.points[j * 2];\n const yj = this.points[j * 2 + 1];\n const intersect = yi > y !== yj > y && x < (xj - xi) * ((y - yi) / (yj - yi)) + xi;\n if (intersect) {\n inside = !inside;\n }\n }\n return inside;\n }\n toString() {\n return `[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((pointsDesc, currentPoint) => `${pointsDesc}, ${currentPoint}`, \"\")}]`;\n }\n}\n\nexport { Polygon };\n//# sourceMappingURL=Polygon.mjs.map\n","import { SHAPES } from '../const.mjs';\n\nclass RoundedRectangle {\n constructor(x = 0, y = 0, width = 0, height = 0, radius = 20) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.radius = radius;\n this.type = SHAPES.RREC;\n }\n clone() {\n return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n }\n contains(x, y) {\n if (this.width <= 0 || this.height <= 0) {\n return false;\n }\n if (x >= this.x && x <= this.x + this.width) {\n if (y >= this.y && y <= this.y + this.height) {\n const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n if (y >= this.y + radius && y <= this.y + this.height - radius || x >= this.x + radius && x <= this.x + this.width - radius) {\n return true;\n }\n let dx = x - (this.x + radius);\n let dy = y - (this.y + radius);\n const radius2 = radius * radius;\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + this.width - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dy = y - (this.y + this.height - radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n dx = x - (this.x + radius);\n if (dx * dx + dy * dy <= radius2) {\n return true;\n }\n }\n }\n return false;\n }\n toString() {\n return `[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`;\n }\n}\n\nexport { RoundedRectangle };\n//# sourceMappingURL=RoundedRectangle.mjs.map\n","import { PI_2 } from './const.mjs';\nimport { Point } from './Point.mjs';\n\nclass Matrix {\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0) {\n this.array = null;\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n }\n fromArray(array) {\n this.a = array[0];\n this.b = array[1];\n this.c = array[3];\n this.d = array[4];\n this.tx = array[2];\n this.ty = array[5];\n }\n set(a, b, c, d, tx, ty) {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n return this;\n }\n toArray(transpose, out) {\n if (!this.array) {\n this.array = new Float32Array(9);\n }\n const array = out || this.array;\n if (transpose) {\n array[0] = this.a;\n array[1] = this.b;\n array[2] = 0;\n array[3] = this.c;\n array[4] = this.d;\n array[5] = 0;\n array[6] = this.tx;\n array[7] = this.ty;\n array[8] = 1;\n } else {\n array[0] = this.a;\n array[1] = this.c;\n array[2] = this.tx;\n array[3] = this.b;\n array[4] = this.d;\n array[5] = this.ty;\n array[6] = 0;\n array[7] = 0;\n array[8] = 1;\n }\n return array;\n }\n apply(pos, newPos) {\n newPos = newPos || new Point();\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.a * x + this.c * y + this.tx;\n newPos.y = this.b * x + this.d * y + this.ty;\n return newPos;\n }\n applyInverse(pos, newPos) {\n newPos = newPos || new Point();\n const id = 1 / (this.a * this.d + this.c * -this.b);\n const x = pos.x;\n const y = pos.y;\n newPos.x = this.d * id * x + -this.c * id * y + (this.ty * this.c - this.tx * this.d) * id;\n newPos.y = this.a * id * y + -this.b * id * x + (-this.ty * this.a + this.tx * this.b) * id;\n return newPos;\n }\n translate(x, y) {\n this.tx += x;\n this.ty += y;\n return this;\n }\n scale(x, y) {\n this.a *= x;\n this.d *= y;\n this.c *= x;\n this.b *= y;\n this.tx *= x;\n this.ty *= y;\n return this;\n }\n rotate(angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const a1 = this.a;\n const c1 = this.c;\n const tx1 = this.tx;\n this.a = a1 * cos - this.b * sin;\n this.b = a1 * sin + this.b * cos;\n this.c = c1 * cos - this.d * sin;\n this.d = c1 * sin + this.d * cos;\n this.tx = tx1 * cos - this.ty * sin;\n this.ty = tx1 * sin + this.ty * cos;\n return this;\n }\n append(matrix) {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n this.a = matrix.a * a1 + matrix.b * c1;\n this.b = matrix.a * b1 + matrix.b * d1;\n this.c = matrix.c * a1 + matrix.d * c1;\n this.d = matrix.c * b1 + matrix.d * d1;\n this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx;\n this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty;\n return this;\n }\n setTransform(x, y, pivotX, pivotY, scaleX, scaleY, rotation, skewX, skewY) {\n this.a = Math.cos(rotation + skewY) * scaleX;\n this.b = Math.sin(rotation + skewY) * scaleX;\n this.c = -Math.sin(rotation - skewX) * scaleY;\n this.d = Math.cos(rotation - skewX) * scaleY;\n this.tx = x - (pivotX * this.a + pivotY * this.c);\n this.ty = y - (pivotX * this.b + pivotY * this.d);\n return this;\n }\n prepend(matrix) {\n const tx1 = this.tx;\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\n const a1 = this.a;\n const c1 = this.c;\n this.a = a1 * matrix.a + this.b * matrix.c;\n this.b = a1 * matrix.b + this.b * matrix.d;\n this.c = c1 * matrix.a + this.d * matrix.c;\n this.d = c1 * matrix.b + this.d * matrix.d;\n }\n this.tx = tx1 * matrix.a + this.ty * matrix.c + matrix.tx;\n this.ty = tx1 * matrix.b + this.ty * matrix.d + matrix.ty;\n return this;\n }\n decompose(transform) {\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const pivot = transform.pivot;\n const skewX = -Math.atan2(-c, d);\n const skewY = Math.atan2(b, a);\n const delta = Math.abs(skewX + skewY);\n if (delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5) {\n transform.rotation = skewY;\n transform.skew.x = transform.skew.y = 0;\n } else {\n transform.rotation = 0;\n transform.skew.x = skewX;\n transform.skew.y = skewY;\n }\n transform.scale.x = Math.sqrt(a * a + b * b);\n transform.scale.y = Math.sqrt(c * c + d * d);\n transform.position.x = this.tx + (pivot.x * a + pivot.y * c);\n transform.position.y = this.ty + (pivot.x * b + pivot.y * d);\n return transform;\n }\n invert() {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n const tx1 = this.tx;\n const n = a1 * d1 - b1 * c1;\n this.a = d1 / n;\n this.b = -b1 / n;\n this.c = -c1 / n;\n this.d = a1 / n;\n this.tx = (c1 * this.ty - d1 * tx1) / n;\n this.ty = -(a1 * this.ty - b1 * tx1) / n;\n return this;\n }\n identity() {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.tx = 0;\n this.ty = 0;\n return this;\n }\n clone() {\n const matrix = new Matrix();\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n copyTo(matrix) {\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n return matrix;\n }\n copyFrom(matrix) {\n this.a = matrix.a;\n this.b = matrix.b;\n this.c = matrix.c;\n this.d = matrix.d;\n this.tx = matrix.tx;\n this.ty = matrix.ty;\n return this;\n }\n toString() {\n return `[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`;\n }\n static get IDENTITY() {\n return new Matrix();\n }\n static get TEMP_MATRIX() {\n return new Matrix();\n }\n}\n\nexport { Matrix };\n//# sourceMappingURL=Matrix.mjs.map\n","import { Matrix } from './Matrix.mjs';\n\nconst ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1];\nconst uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1];\nconst rotationCayley = [];\nconst rotationMatrices = [];\nconst signum = Math.sign;\nfunction init() {\n for (let i = 0; i < 16; i++) {\n const row = [];\n rotationCayley.push(row);\n for (let j = 0; j < 16; j++) {\n const _ux = signum(ux[i] * ux[j] + vx[i] * uy[j]);\n const _uy = signum(uy[i] * ux[j] + vy[i] * uy[j]);\n const _vx = signum(ux[i] * vx[j] + vx[i] * vy[j]);\n const _vy = signum(uy[i] * vx[j] + vy[i] * vy[j]);\n for (let k = 0; k < 16; k++) {\n if (ux[k] === _ux && uy[k] === _uy && vx[k] === _vx && vy[k] === _vy) {\n row.push(k);\n break;\n }\n }\n }\n }\n for (let i = 0; i < 16; i++) {\n const mat = new Matrix();\n mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0);\n rotationMatrices.push(mat);\n }\n}\ninit();\nconst groupD8 = {\n E: 0,\n SE: 1,\n S: 2,\n SW: 3,\n W: 4,\n NW: 5,\n N: 6,\n NE: 7,\n MIRROR_VERTICAL: 8,\n MAIN_DIAGONAL: 10,\n MIRROR_HORIZONTAL: 12,\n REVERSE_DIAGONAL: 14,\n uX: (ind) => ux[ind],\n uY: (ind) => uy[ind],\n vX: (ind) => vx[ind],\n vY: (ind) => vy[ind],\n inv: (rotation) => {\n if (rotation & 8) {\n return rotation & 15;\n }\n return -rotation & 7;\n },\n add: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][rotationFirst],\n sub: (rotationSecond, rotationFirst) => rotationCayley[rotationSecond][groupD8.inv(rotationFirst)],\n rotate180: (rotation) => rotation ^ 4,\n isVertical: (rotation) => (rotation & 3) === 2,\n byDirection: (dx, dy) => {\n if (Math.abs(dx) * 2 <= Math.abs(dy)) {\n if (dy >= 0) {\n return groupD8.S;\n }\n return groupD8.N;\n } else if (Math.abs(dy) * 2 <= Math.abs(dx)) {\n if (dx > 0) {\n return groupD8.E;\n }\n return groupD8.W;\n } else if (dy > 0) {\n if (dx > 0) {\n return groupD8.SE;\n }\n return groupD8.SW;\n } else if (dx > 0) {\n return groupD8.NE;\n }\n return groupD8.NW;\n },\n matrixAppendRotationInv: (matrix, rotation, tx = 0, ty = 0) => {\n const mat = rotationMatrices[groupD8.inv(rotation)];\n mat.tx = tx;\n mat.ty = ty;\n matrix.append(mat);\n }\n};\n\nexport { groupD8 };\n//# sourceMappingURL=groupD8.mjs.map\n","class ObservablePoint {\n constructor(cb, scope, x = 0, y = 0) {\n this._x = x;\n this._y = y;\n this.cb = cb;\n this.scope = scope;\n }\n clone(cb = this.cb, scope = this.scope) {\n return new ObservablePoint(cb, scope, this._x, this._y);\n }\n set(x = 0, y = x) {\n if (this._x !== x || this._y !== y) {\n this._x = x;\n this._y = y;\n this.cb.call(this.scope);\n }\n return this;\n }\n copyFrom(p) {\n if (this._x !== p.x || this._y !== p.y) {\n this._x = p.x;\n this._y = p.y;\n this.cb.call(this.scope);\n }\n return this;\n }\n copyTo(p) {\n p.set(this._x, this._y);\n return p;\n }\n equals(p) {\n return p.x === this._x && p.y === this._y;\n }\n toString() {\n return `[@pixi/math:ObservablePoint x=${0} y=${0} scope=${this.scope}]`;\n }\n get x() {\n return this._x;\n }\n set x(value) {\n if (this._x !== value) {\n this._x = value;\n this.cb.call(this.scope);\n }\n }\n get y() {\n return this._y;\n }\n set y(value) {\n if (this._y !== value) {\n this._y = value;\n this.cb.call(this.scope);\n }\n }\n}\n\nexport { ObservablePoint };\n//# sourceMappingURL=ObservablePoint.mjs.map\n","import { Matrix } from './Matrix.mjs';\nimport { ObservablePoint } from './ObservablePoint.mjs';\n\nconst _Transform = class {\n constructor() {\n this.worldTransform = new Matrix();\n this.localTransform = new Matrix();\n this.position = new ObservablePoint(this.onChange, this, 0, 0);\n this.scale = new ObservablePoint(this.onChange, this, 1, 1);\n this.pivot = new ObservablePoint(this.onChange, this, 0, 0);\n this.skew = new ObservablePoint(this.updateSkew, this, 0, 0);\n this._rotation = 0;\n this._cx = 1;\n this._sx = 0;\n this._cy = 0;\n this._sy = 1;\n this._localID = 0;\n this._currentLocalID = 0;\n this._worldID = 0;\n this._parentID = 0;\n }\n onChange() {\n this._localID++;\n }\n updateSkew() {\n this._cx = Math.cos(this._rotation + this.skew.y);\n this._sx = Math.sin(this._rotation + this.skew.y);\n this._cy = -Math.sin(this._rotation - this.skew.x);\n this._sy = Math.cos(this._rotation - this.skew.x);\n this._localID++;\n }\n toString() {\n return `[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`;\n }\n updateLocalTransform() {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID) {\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c);\n lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d);\n this._currentLocalID = this._localID;\n this._parentID = -1;\n }\n }\n updateTransform(parentTransform) {\n const lt = this.localTransform;\n if (this._localID !== this._currentLocalID) {\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n lt.tx = this.position.x - (this.pivot.x * lt.a + this.pivot.y * lt.c);\n lt.ty = this.position.y - (this.pivot.x * lt.b + this.pivot.y * lt.d);\n this._currentLocalID = this._localID;\n this._parentID = -1;\n }\n if (this._parentID !== parentTransform._worldID) {\n const pt = parentTransform.worldTransform;\n const wt = this.worldTransform;\n wt.a = lt.a * pt.a + lt.b * pt.c;\n wt.b = lt.a * pt.b + lt.b * pt.d;\n wt.c = lt.c * pt.a + lt.d * pt.c;\n wt.d = lt.c * pt.b + lt.d * pt.d;\n wt.tx = lt.tx * pt.a + lt.ty * pt.c + pt.tx;\n wt.ty = lt.tx * pt.b + lt.ty * pt.d + pt.ty;\n this._parentID = parentTransform._worldID;\n this._worldID++;\n }\n }\n setFromMatrix(matrix) {\n matrix.decompose(this);\n this._localID++;\n }\n get rotation() {\n return this._rotation;\n }\n set rotation(value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.updateSkew();\n }\n }\n};\nlet Transform = _Transform;\nTransform.IDENTITY = new _Transform();\n\nexport { Transform };\n//# sourceMappingURL=Transform.mjs.map\n","import { MeshGeometry } from '@pixi/mesh';\n\nclass PlaneGeometry extends MeshGeometry {\n constructor(width = 100, height = 100, segWidth = 10, segHeight = 10) {\n super();\n this.segWidth = segWidth;\n this.segHeight = segHeight;\n this.width = width;\n this.height = height;\n this.build();\n }\n build() {\n const total = this.segWidth * this.segHeight;\n const verts = [];\n const uvs = [];\n const indices = [];\n const segmentsX = this.segWidth - 1;\n const segmentsY = this.segHeight - 1;\n const sizeX = this.width / segmentsX;\n const sizeY = this.height / segmentsY;\n for (let i = 0; i < total; i++) {\n const x = i % this.segWidth;\n const y = i / this.segWidth | 0;\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / segmentsX, y / segmentsY);\n }\n const totalSub = segmentsX * segmentsY;\n for (let i = 0; i < totalSub; i++) {\n const xpos = i % segmentsX;\n const ypos = i / segmentsX | 0;\n const value = ypos * this.segWidth + xpos;\n const value2 = ypos * this.segWidth + xpos + 1;\n const value3 = (ypos + 1) * this.segWidth + xpos;\n const value4 = (ypos + 1) * this.segWidth + xpos + 1;\n indices.push(value, value2, value3, value2, value4, value3);\n }\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint16Array(indices);\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n}\n\nexport { PlaneGeometry };\n//# sourceMappingURL=PlaneGeometry.mjs.map\n","import { MeshGeometry } from '@pixi/mesh';\n\nclass RopeGeometry extends MeshGeometry {\n constructor(width = 200, points, textureScale = 0) {\n super(new Float32Array(points.length * 4), new Float32Array(points.length * 4), new Uint16Array((points.length - 1) * 6));\n this.points = points;\n this._width = width;\n this.textureScale = textureScale;\n this.build();\n }\n get width() {\n return this._width;\n }\n build() {\n const points = this.points;\n if (!points)\n return;\n const vertexBuffer = this.getBuffer(\"aVertexPosition\");\n const uvBuffer = this.getBuffer(\"aTextureCoord\");\n const indexBuffer = this.getIndex();\n if (points.length < 1) {\n return;\n }\n if (vertexBuffer.data.length / 4 !== points.length) {\n vertexBuffer.data = new Float32Array(points.length * 4);\n uvBuffer.data = new Float32Array(points.length * 4);\n indexBuffer.data = new Uint16Array((points.length - 1) * 6);\n }\n const uvs = uvBuffer.data;\n const indices = indexBuffer.data;\n uvs[0] = 0;\n uvs[1] = 0;\n uvs[2] = 0;\n uvs[3] = 1;\n let amount = 0;\n let prev = points[0];\n const textureWidth = this._width * this.textureScale;\n const total = points.length;\n for (let i = 0; i < total; i++) {\n const index = i * 4;\n if (this.textureScale > 0) {\n const dx = prev.x - points[i].x;\n const dy = prev.y - points[i].y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n prev = points[i];\n amount += distance / textureWidth;\n } else {\n amount = i / (total - 1);\n }\n uvs[index] = amount;\n uvs[index + 1] = 0;\n uvs[index + 2] = amount;\n uvs[index + 3] = 1;\n }\n let indexCount = 0;\n for (let i = 0; i < total - 1; i++) {\n const index = i * 2;\n indices[indexCount++] = index;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 3;\n }\n uvBuffer.update();\n indexBuffer.update();\n this.updateVertices();\n }\n updateVertices() {\n const points = this.points;\n if (points.length < 1) {\n return;\n }\n let lastPoint = points[0];\n let nextPoint;\n let perpX = 0;\n let perpY = 0;\n const vertices = this.buffers[0].data;\n const total = points.length;\n const halfWidth = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2;\n for (let i = 0; i < total; i++) {\n const point = points[i];\n const index = i * 4;\n if (i < points.length - 1) {\n nextPoint = points[i + 1];\n } else {\n nextPoint = point;\n }\n perpY = -(nextPoint.x - lastPoint.x);\n perpX = nextPoint.y - lastPoint.y;\n let ratio = (1 - i / (total - 1)) * 10;\n if (ratio > 1) {\n ratio = 1;\n }\n const perpLength = Math.sqrt(perpX * perpX + perpY * perpY);\n if (perpLength < 1e-6) {\n perpX = 0;\n perpY = 0;\n } else {\n perpX /= perpLength;\n perpY /= perpLength;\n perpX *= halfWidth;\n perpY *= halfWidth;\n }\n vertices[index] = point.x + perpX;\n vertices[index + 1] = point.y + perpY;\n vertices[index + 2] = point.x - perpX;\n vertices[index + 3] = point.y - perpY;\n lastPoint = point;\n }\n this.buffers[0].update();\n }\n update() {\n if (this.textureScale > 0) {\n this.build();\n } else {\n this.updateVertices();\n }\n }\n}\n\nexport { RopeGeometry };\n//# sourceMappingURL=RopeGeometry.mjs.map\n","import { Texture } from '@pixi/core';\nimport { Mesh, MeshMaterial } from '@pixi/mesh';\nimport { PlaneGeometry } from './geometry/PlaneGeometry.mjs';\n\nclass SimplePlane extends Mesh {\n constructor(texture, verticesX, verticesY) {\n const planeGeometry = new PlaneGeometry(texture.width, texture.height, verticesX, verticesY);\n const meshMaterial = new MeshMaterial(Texture.WHITE);\n super(planeGeometry, meshMaterial);\n this.texture = texture;\n this.autoResize = true;\n }\n textureUpdated() {\n this._textureID = this.shader.texture._updateID;\n const geometry = this.geometry;\n const { width, height } = this.shader.texture;\n if (this.autoResize && (geometry.width !== width || geometry.height !== height)) {\n geometry.width = this.shader.texture.width;\n geometry.height = this.shader.texture.height;\n geometry.build();\n }\n }\n set texture(value) {\n if (this.shader.texture === value) {\n return;\n }\n this.shader.texture = value;\n this._textureID = -1;\n if (value.baseTexture.valid) {\n this.textureUpdated();\n } else {\n value.once(\"update\", this.textureUpdated, this);\n }\n }\n get texture() {\n return this.shader.texture;\n }\n _render(renderer) {\n if (this._textureID !== this.shader.texture._updateID) {\n this.textureUpdated();\n }\n super._render(renderer);\n }\n destroy(options) {\n this.shader.texture.off(\"update\", this.textureUpdated, this);\n super.destroy(options);\n }\n}\n\nexport { SimplePlane };\n//# sourceMappingURL=SimplePlane.mjs.map\n","import { Texture } from '@pixi/core';\nimport { SimplePlane } from './SimplePlane.mjs';\n\nconst DEFAULT_BORDER_SIZE = 10;\nclass NineSlicePlane extends SimplePlane {\n constructor(texture, leftWidth, topHeight, rightWidth, bottomHeight) {\n super(Texture.WHITE, 4, 4);\n this._origWidth = texture.orig.width;\n this._origHeight = texture.orig.height;\n this._width = this._origWidth;\n this._height = this._origHeight;\n this._leftWidth = leftWidth ?? texture.defaultBorders?.left ?? DEFAULT_BORDER_SIZE;\n this._rightWidth = rightWidth ?? texture.defaultBorders?.right ?? DEFAULT_BORDER_SIZE;\n this._topHeight = topHeight ?? texture.defaultBorders?.top ?? DEFAULT_BORDER_SIZE;\n this._bottomHeight = bottomHeight ?? texture.defaultBorders?.bottom ?? DEFAULT_BORDER_SIZE;\n this.texture = texture;\n }\n textureUpdated() {\n this._textureID = this.shader.texture._updateID;\n this._refresh();\n }\n get vertices() {\n return this.geometry.getBuffer(\"aVertexPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aVertexPosition\").data = value;\n }\n updateHorizontalVertices() {\n const vertices = this.vertices;\n const scale = this._getMinScale();\n vertices[9] = vertices[11] = vertices[13] = vertices[15] = this._topHeight * scale;\n vertices[17] = vertices[19] = vertices[21] = vertices[23] = this._height - this._bottomHeight * scale;\n vertices[25] = vertices[27] = vertices[29] = vertices[31] = this._height;\n }\n updateVerticalVertices() {\n const vertices = this.vertices;\n const scale = this._getMinScale();\n vertices[2] = vertices[10] = vertices[18] = vertices[26] = this._leftWidth * scale;\n vertices[4] = vertices[12] = vertices[20] = vertices[28] = this._width - this._rightWidth * scale;\n vertices[6] = vertices[14] = vertices[22] = vertices[30] = this._width;\n }\n _getMinScale() {\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this._width > w ? 1 : this._width / w;\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this._height > h ? 1 : this._height / h;\n const scale = Math.min(scaleW, scaleH);\n return scale;\n }\n get width() {\n return this._width;\n }\n set width(value) {\n this._width = value;\n this._refresh();\n }\n get height() {\n return this._height;\n }\n set height(value) {\n this._height = value;\n this._refresh();\n }\n get leftWidth() {\n return this._leftWidth;\n }\n set leftWidth(value) {\n this._leftWidth = value;\n this._refresh();\n }\n get rightWidth() {\n return this._rightWidth;\n }\n set rightWidth(value) {\n this._rightWidth = value;\n this._refresh();\n }\n get topHeight() {\n return this._topHeight;\n }\n set topHeight(value) {\n this._topHeight = value;\n this._refresh();\n }\n get bottomHeight() {\n return this._bottomHeight;\n }\n set bottomHeight(value) {\n this._bottomHeight = value;\n this._refresh();\n }\n _refresh() {\n const texture = this.texture;\n const uvs = this.geometry.buffers[1].data;\n this._origWidth = texture.orig.width;\n this._origHeight = texture.orig.height;\n const _uvw = 1 / this._origWidth;\n const _uvh = 1 / this._origHeight;\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight;\n this.updateHorizontalVertices();\n this.updateVerticalVertices();\n this.geometry.buffers[0].update();\n this.geometry.buffers[1].update();\n }\n}\n\nexport { NineSlicePlane };\n//# sourceMappingURL=NineSlicePlane.mjs.map\n","import { Texture } from '@pixi/core';\nimport { Mesh, MeshGeometry, MeshMaterial } from '@pixi/mesh';\n\nclass SimpleMesh extends Mesh {\n constructor(texture = Texture.EMPTY, vertices, uvs, indices, drawMode) {\n const geometry = new MeshGeometry(vertices, uvs, indices);\n geometry.getBuffer(\"aVertexPosition\").static = false;\n const meshMaterial = new MeshMaterial(texture);\n super(geometry, meshMaterial, null, drawMode);\n this.autoUpdate = true;\n }\n get vertices() {\n return this.geometry.getBuffer(\"aVertexPosition\").data;\n }\n set vertices(value) {\n this.geometry.getBuffer(\"aVertexPosition\").data = value;\n }\n _render(renderer) {\n if (this.autoUpdate) {\n this.geometry.getBuffer(\"aVertexPosition\").update();\n }\n super._render(renderer);\n }\n}\n\nexport { SimpleMesh };\n//# sourceMappingURL=SimpleMesh.mjs.map\n","import { WRAP_MODES } from '@pixi/core';\nimport { Mesh, MeshMaterial } from '@pixi/mesh';\nimport { RopeGeometry } from './geometry/RopeGeometry.mjs';\n\nclass SimpleRope extends Mesh {\n constructor(texture, points, textureScale = 0) {\n const ropeGeometry = new RopeGeometry(texture.height, points, textureScale);\n const meshMaterial = new MeshMaterial(texture);\n if (textureScale > 0) {\n texture.baseTexture.wrapMode = WRAP_MODES.REPEAT;\n }\n super(ropeGeometry, meshMaterial);\n this.autoUpdate = true;\n }\n _render(renderer) {\n const geometry = this.geometry;\n if (this.autoUpdate || geometry._width !== this.shader.texture.height) {\n geometry._width = this.shader.texture.height;\n geometry.update();\n }\n super._render(renderer);\n }\n}\n\nexport { SimpleRope };\n//# sourceMappingURL=SimpleRope.mjs.map\n","class MeshBatchUvs {\n constructor(uvBuffer, uvMatrix) {\n this.uvBuffer = uvBuffer;\n this.uvMatrix = uvMatrix;\n this.data = null;\n this._bufferUpdateId = -1;\n this._textureUpdateId = -1;\n this._updateID = 0;\n }\n update(forceUpdate) {\n if (!forceUpdate && this._bufferUpdateId === this.uvBuffer._updateID && this._textureUpdateId === this.uvMatrix._updateID) {\n return;\n }\n this._bufferUpdateId = this.uvBuffer._updateID;\n this._textureUpdateId = this.uvMatrix._updateID;\n const data = this.uvBuffer.data;\n if (!this.data || this.data.length !== data.length) {\n this.data = new Float32Array(data.length);\n }\n this.uvMatrix.multiplyUvs(data, this.data);\n this._updateID++;\n }\n}\n\nexport { MeshBatchUvs };\n//# sourceMappingURL=MeshBatchUvs.mjs.map\n","import { Point, Polygon, State, settings, DRAW_MODES } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { MeshBatchUvs } from './MeshBatchUvs.mjs';\n\nconst tempPoint = new Point();\nconst tempPolygon = new Polygon();\nconst _Mesh = class extends Container {\n constructor(geometry, shader, state, drawMode = DRAW_MODES.TRIANGLES) {\n super();\n this.geometry = geometry;\n this.shader = shader;\n this.state = state || State.for2d();\n this.drawMode = drawMode;\n this.start = 0;\n this.size = 0;\n this.uvs = null;\n this.indices = null;\n this.vertexData = new Float32Array(1);\n this.vertexDirty = -1;\n this._transformID = -1;\n this._roundPixels = settings.ROUND_PIXELS;\n this.batchUvs = null;\n }\n get geometry() {\n return this._geometry;\n }\n set geometry(value) {\n if (this._geometry === value) {\n return;\n }\n if (this._geometry) {\n this._geometry.refCount--;\n if (this._geometry.refCount === 0) {\n this._geometry.dispose();\n }\n }\n this._geometry = value;\n if (this._geometry) {\n this._geometry.refCount++;\n }\n this.vertexDirty = -1;\n }\n get uvBuffer() {\n return this.geometry.buffers[1];\n }\n get verticesBuffer() {\n return this.geometry.buffers[0];\n }\n set material(value) {\n this.shader = value;\n }\n get material() {\n return this.shader;\n }\n set blendMode(value) {\n this.state.blendMode = value;\n }\n get blendMode() {\n return this.state.blendMode;\n }\n set roundPixels(value) {\n if (this._roundPixels !== value) {\n this._transformID = -1;\n }\n this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n get tint() {\n return \"tint\" in this.shader ? this.shader.tint : null;\n }\n set tint(value) {\n this.shader.tint = value;\n }\n get tintValue() {\n return this.shader.tintValue;\n }\n get texture() {\n return \"texture\" in this.shader ? this.shader.texture : null;\n }\n set texture(value) {\n this.shader.texture = value;\n }\n _render(renderer) {\n const vertices = this.geometry.buffers[0].data;\n const shader = this.shader;\n if (shader.batchable && this.drawMode === DRAW_MODES.TRIANGLES && vertices.length < _Mesh.BATCHABLE_SIZE * 2) {\n this._renderToBatch(renderer);\n } else {\n this._renderDefault(renderer);\n }\n }\n _renderDefault(renderer) {\n const shader = this.shader;\n shader.alpha = this.worldAlpha;\n if (shader.update) {\n shader.update();\n }\n renderer.batch.flush();\n shader.uniforms.translationMatrix = this.transform.worldTransform.toArray(true);\n renderer.shader.bind(shader);\n renderer.state.set(this.state);\n renderer.geometry.bind(this.geometry, shader);\n renderer.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount);\n }\n _renderToBatch(renderer) {\n const geometry = this.geometry;\n const shader = this.shader;\n if (shader.uvMatrix) {\n shader.uvMatrix.update();\n this.calculateUvs();\n }\n this.calculateVertices();\n this.indices = geometry.indexBuffer.data;\n this._tintRGB = shader._tintRGB;\n this._texture = shader.texture;\n const pluginName = this.material.pluginName;\n renderer.batch.setObjectRenderer(renderer.plugins[pluginName]);\n renderer.plugins[pluginName].render(this);\n }\n calculateVertices() {\n const geometry = this.geometry;\n const verticesBuffer = geometry.buffers[0];\n const vertices = verticesBuffer.data;\n const vertexDirtyId = verticesBuffer._updateID;\n if (vertexDirtyId === this.vertexDirty && this._transformID === this.transform._worldID) {\n return;\n }\n this._transformID = this.transform._worldID;\n if (this.vertexData.length !== vertices.length) {\n this.vertexData = new Float32Array(vertices.length);\n }\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const vertexData = this.vertexData;\n for (let i = 0; i < vertexData.length / 2; i++) {\n const x = vertices[i * 2];\n const y = vertices[i * 2 + 1];\n vertexData[i * 2] = a * x + c * y + tx;\n vertexData[i * 2 + 1] = b * x + d * y + ty;\n }\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i) {\n vertexData[i] = Math.round(vertexData[i] * resolution) / resolution;\n }\n }\n this.vertexDirty = vertexDirtyId;\n }\n calculateUvs() {\n const geomUvs = this.geometry.buffers[1];\n const shader = this.shader;\n if (!shader.uvMatrix.isSimple) {\n if (!this.batchUvs) {\n this.batchUvs = new MeshBatchUvs(geomUvs, shader.uvMatrix);\n }\n this.batchUvs.update();\n this.uvs = this.batchUvs.data;\n } else {\n this.uvs = geomUvs.data;\n }\n }\n _calculateBounds() {\n this.calculateVertices();\n this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length);\n }\n containsPoint(point) {\n if (!this.getBounds().contains(point.x, point.y)) {\n return false;\n }\n this.worldTransform.applyInverse(point, tempPoint);\n const vertices = this.geometry.getBuffer(\"aVertexPosition\").data;\n const points = tempPolygon.points;\n const indices = this.geometry.getIndex().data;\n const len = indices.length;\n const step = this.drawMode === 4 ? 3 : 1;\n for (let i = 0; i + 2 < len; i += step) {\n const ind0 = indices[i] * 2;\n const ind1 = indices[i + 1] * 2;\n const ind2 = indices[i + 2] * 2;\n points[0] = vertices[ind0];\n points[1] = vertices[ind0 + 1];\n points[2] = vertices[ind1];\n points[3] = vertices[ind1 + 1];\n points[4] = vertices[ind2];\n points[5] = vertices[ind2 + 1];\n if (tempPolygon.contains(tempPoint.x, tempPoint.y)) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n if (this._cachedTexture) {\n this._cachedTexture.destroy();\n this._cachedTexture = null;\n }\n this.geometry = null;\n this.shader = null;\n this.state = null;\n this.uvs = null;\n this.indices = null;\n this.vertexData = null;\n }\n};\nlet Mesh = _Mesh;\nMesh.BATCHABLE_SIZE = 100;\n\nexport { Mesh };\n//# sourceMappingURL=Mesh.mjs.map\n","import { Geometry, Buffer, TYPES } from '@pixi/core';\n\nclass MeshGeometry extends Geometry {\n constructor(vertices, uvs, index) {\n super();\n const verticesBuffer = new Buffer(vertices);\n const uvsBuffer = new Buffer(uvs, true);\n const indexBuffer = new Buffer(index, true, true);\n this.addAttribute(\"aVertexPosition\", verticesBuffer, 2, false, TYPES.FLOAT).addAttribute(\"aTextureCoord\", uvsBuffer, 2, false, TYPES.FLOAT).addIndex(indexBuffer);\n this._updateId = -1;\n }\n get vertexDirtyId() {\n return this.buffers[0]._updateID;\n }\n}\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","import { Shader, Matrix, Program, TextureMatrix, Color } from '@pixi/core';\nimport fragment from './shader/mesh.mjs';\nimport vertex from './shader/mesh2.mjs';\n\nclass MeshMaterial extends Shader {\n constructor(uSampler, options) {\n const uniforms = {\n uSampler,\n alpha: 1,\n uTextureMatrix: Matrix.IDENTITY,\n uColor: new Float32Array([1, 1, 1, 1])\n };\n options = Object.assign({\n tint: 16777215,\n alpha: 1,\n pluginName: \"batch\"\n }, options);\n if (options.uniforms) {\n Object.assign(uniforms, options.uniforms);\n }\n super(options.program || Program.from(vertex, fragment), uniforms);\n this._colorDirty = false;\n this.uvMatrix = new TextureMatrix(uSampler);\n this.batchable = options.program === void 0;\n this.pluginName = options.pluginName;\n this._tintColor = new Color(options.tint);\n this._tintRGB = this._tintColor.toLittleEndianNumber();\n this._colorDirty = true;\n this.alpha = options.alpha;\n }\n get texture() {\n return this.uniforms.uSampler;\n }\n set texture(value) {\n if (this.uniforms.uSampler !== value) {\n if (!this.uniforms.uSampler.baseTexture.alphaMode !== !value.baseTexture.alphaMode) {\n this._colorDirty = true;\n }\n this.uniforms.uSampler = value;\n this.uvMatrix.texture = value;\n }\n }\n set alpha(value) {\n if (value === this._alpha)\n return;\n this._alpha = value;\n this._colorDirty = true;\n }\n get alpha() {\n return this._alpha;\n }\n set tint(value) {\n if (value === this.tint)\n return;\n this._tintColor.setValue(value);\n this._tintRGB = this._tintColor.toLittleEndianNumber();\n this._colorDirty = true;\n }\n get tint() {\n return this._tintColor.value;\n }\n get tintValue() {\n return this._tintColor.toNumber();\n }\n update() {\n if (this._colorDirty) {\n this._colorDirty = false;\n const baseTexture = this.texture.baseTexture;\n const applyToChannels = baseTexture.alphaMode;\n Color.shared.setValue(this._tintColor).premultiply(this._alpha, applyToChannels).toArray(this.uniforms.uColor);\n }\n if (this.uvMatrix.update()) {\n this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord;\n }\n }\n}\n\nexport { MeshMaterial };\n//# sourceMappingURL=MeshMaterial.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTextureMatrix;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=mesh2.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nuniform vec4 uColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=mesh.mjs.map\n","import { BLEND_MODES, Color } from '@pixi/core';\nimport { Container } from '@pixi/display';\n\nclass ParticleContainer extends Container {\n constructor(maxSize = 1500, properties, batchSize = 16384, autoResize = false) {\n super();\n const maxBatchSize = 16384;\n if (batchSize > maxBatchSize) {\n batchSize = maxBatchSize;\n }\n this._properties = [false, true, false, false, false];\n this._maxSize = maxSize;\n this._batchSize = batchSize;\n this._buffers = null;\n this._bufferUpdateIDs = [];\n this._updateID = 0;\n this.interactiveChildren = false;\n this.blendMode = BLEND_MODES.NORMAL;\n this.autoResize = autoResize;\n this.roundPixels = true;\n this.baseTexture = null;\n this.setProperties(properties);\n this._tintColor = new Color(0);\n this.tintRgb = new Float32Array(3);\n this.tint = 16777215;\n }\n setProperties(properties) {\n if (properties) {\n this._properties[0] = \"vertices\" in properties || \"scale\" in properties ? !!properties.vertices || !!properties.scale : this._properties[0];\n this._properties[1] = \"position\" in properties ? !!properties.position : this._properties[1];\n this._properties[2] = \"rotation\" in properties ? !!properties.rotation : this._properties[2];\n this._properties[3] = \"uvs\" in properties ? !!properties.uvs : this._properties[3];\n this._properties[4] = \"tint\" in properties || \"alpha\" in properties ? !!properties.tint || !!properties.alpha : this._properties[4];\n }\n }\n updateTransform() {\n this.displayObjectUpdateTransform();\n }\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n this._tintColor.setValue(value);\n this._tintColor.toRgbArray(this.tintRgb);\n }\n render(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.children.length || !this.renderable) {\n return;\n }\n if (!this.baseTexture) {\n this.baseTexture = this.children[0]._texture.baseTexture;\n if (!this.baseTexture.valid) {\n this.baseTexture.once(\"update\", () => this.onChildrenChange(0));\n }\n }\n renderer.batch.setObjectRenderer(renderer.plugins.particle);\n renderer.plugins.particle.render(this);\n }\n onChildrenChange(smallestChildIndex) {\n const bufferIndex = Math.floor(smallestChildIndex / this._batchSize);\n while (this._bufferUpdateIDs.length < bufferIndex) {\n this._bufferUpdateIDs.push(0);\n }\n this._bufferUpdateIDs[bufferIndex] = ++this._updateID;\n }\n dispose() {\n if (this._buffers) {\n for (let i = 0; i < this._buffers.length; ++i) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n }\n }\n destroy(options) {\n super.destroy(options);\n this.dispose();\n this._properties = null;\n this._buffers = null;\n this._bufferUpdateIDs = null;\n }\n}\n\nexport { ParticleContainer };\n//# sourceMappingURL=ParticleContainer.mjs.map\n","import { Geometry, TYPES, Buffer, utils } from '@pixi/core';\n\nclass ParticleBuffer {\n constructor(properties, dynamicPropertyFlags, size) {\n this.geometry = new Geometry();\n this.indexBuffer = null;\n this.size = size;\n this.dynamicProperties = [];\n this.staticProperties = [];\n for (let i = 0; i < properties.length; ++i) {\n let property = properties[i];\n property = {\n attributeName: property.attributeName,\n size: property.size,\n uploadFunction: property.uploadFunction,\n type: property.type || TYPES.FLOAT,\n offset: property.offset\n };\n if (dynamicPropertyFlags[i]) {\n this.dynamicProperties.push(property);\n } else {\n this.staticProperties.push(property);\n }\n }\n this.staticStride = 0;\n this.staticBuffer = null;\n this.staticData = null;\n this.staticDataUint32 = null;\n this.dynamicStride = 0;\n this.dynamicBuffer = null;\n this.dynamicData = null;\n this.dynamicDataUint32 = null;\n this._updateID = 0;\n this.initBuffers();\n }\n initBuffers() {\n const geometry = this.geometry;\n let dynamicOffset = 0;\n this.indexBuffer = new Buffer(utils.createIndicesForQuads(this.size), true, true);\n geometry.addIndex(this.indexBuffer);\n this.dynamicStride = 0;\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n property.offset = dynamicOffset;\n dynamicOffset += property.size;\n this.dynamicStride += property.size;\n }\n const dynBuffer = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);\n this.dynamicData = new Float32Array(dynBuffer);\n this.dynamicDataUint32 = new Uint32Array(dynBuffer);\n this.dynamicBuffer = new Buffer(this.dynamicData, false, false);\n let staticOffset = 0;\n this.staticStride = 0;\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n property.offset = staticOffset;\n staticOffset += property.size;\n this.staticStride += property.size;\n }\n const statBuffer = new ArrayBuffer(this.size * this.staticStride * 4 * 4);\n this.staticData = new Float32Array(statBuffer);\n this.staticDataUint32 = new Uint32Array(statBuffer);\n this.staticBuffer = new Buffer(this.staticData, true, false);\n for (let i = 0; i < this.dynamicProperties.length; ++i) {\n const property = this.dynamicProperties[i];\n geometry.addAttribute(property.attributeName, this.dynamicBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.dynamicStride * 4, property.offset * 4);\n }\n for (let i = 0; i < this.staticProperties.length; ++i) {\n const property = this.staticProperties[i];\n geometry.addAttribute(property.attributeName, this.staticBuffer, 0, property.type === TYPES.UNSIGNED_BYTE, property.type, this.staticStride * 4, property.offset * 4);\n }\n }\n uploadDynamic(children, startIndex, amount) {\n for (let i = 0; i < this.dynamicProperties.length; i++) {\n const property = this.dynamicProperties[i];\n property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, property.offset);\n }\n this.dynamicBuffer._updateID++;\n }\n uploadStatic(children, startIndex, amount) {\n for (let i = 0; i < this.staticProperties.length; i++) {\n const property = this.staticProperties[i];\n property.uploadFunction(children, startIndex, amount, property.type === TYPES.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, property.offset);\n }\n this.staticBuffer._updateID++;\n }\n destroy() {\n this.indexBuffer = null;\n this.dynamicProperties = null;\n this.dynamicBuffer = null;\n this.dynamicData = null;\n this.dynamicDataUint32 = null;\n this.staticProperties = null;\n this.staticBuffer = null;\n this.staticData = null;\n this.staticDataUint32 = null;\n this.geometry.destroy();\n }\n}\n\nexport { ParticleBuffer };\n//# sourceMappingURL=ParticleBuffer.mjs.map\n","import { ObjectRenderer, Matrix, TYPES, Shader, State, utils, Color, ExtensionType, extensions } from '@pixi/core';\nimport { ParticleBuffer } from './ParticleBuffer.mjs';\nimport fragment from './particles.mjs';\nimport vertex from './particles2.mjs';\n\nclass ParticleRenderer extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n this.shader = null;\n this.properties = null;\n this.tempMatrix = new Matrix();\n this.properties = [\n {\n attributeName: \"aVertexPosition\",\n size: 2,\n uploadFunction: this.uploadVertices,\n offset: 0\n },\n {\n attributeName: \"aPositionCoord\",\n size: 2,\n uploadFunction: this.uploadPosition,\n offset: 0\n },\n {\n attributeName: \"aRotation\",\n size: 1,\n uploadFunction: this.uploadRotation,\n offset: 0\n },\n {\n attributeName: \"aTextureCoord\",\n size: 2,\n uploadFunction: this.uploadUvs,\n offset: 0\n },\n {\n attributeName: \"aColor\",\n size: 1,\n type: TYPES.UNSIGNED_BYTE,\n uploadFunction: this.uploadTint,\n offset: 0\n }\n ];\n this.shader = Shader.from(vertex, fragment, {});\n this.state = State.for2d();\n }\n render(container) {\n const children = container.children;\n const maxSize = container._maxSize;\n const batchSize = container._batchSize;\n const renderer = this.renderer;\n let totalChildren = children.length;\n if (totalChildren === 0) {\n return;\n } else if (totalChildren > maxSize && !container.autoResize) {\n totalChildren = maxSize;\n }\n let buffers = container._buffers;\n if (!buffers) {\n buffers = container._buffers = this.generateBuffers(container);\n }\n const baseTexture = children[0]._texture.baseTexture;\n const premultiplied = baseTexture.alphaMode > 0;\n this.state.blendMode = utils.correctBlendMode(container.blendMode, premultiplied);\n renderer.state.set(this.state);\n const gl = renderer.gl;\n const m = container.worldTransform.copyTo(this.tempMatrix);\n m.prepend(renderer.globalUniforms.uniforms.projectionMatrix);\n this.shader.uniforms.translationMatrix = m.toArray(true);\n this.shader.uniforms.uColor = Color.shared.setValue(container.tintRgb).premultiply(container.worldAlpha, premultiplied).toArray(this.shader.uniforms.uColor);\n this.shader.uniforms.uSampler = baseTexture;\n this.renderer.shader.bind(this.shader);\n let updateStatic = false;\n for (let i = 0, j = 0; i < totalChildren; i += batchSize, j += 1) {\n let amount = totalChildren - i;\n if (amount > batchSize) {\n amount = batchSize;\n }\n if (j >= buffers.length) {\n buffers.push(this._generateOneMoreBuffer(container));\n }\n const buffer = buffers[j];\n buffer.uploadDynamic(children, i, amount);\n const bid = container._bufferUpdateIDs[j] || 0;\n updateStatic = updateStatic || buffer._updateID < bid;\n if (updateStatic) {\n buffer._updateID = container._updateID;\n buffer.uploadStatic(children, i, amount);\n }\n renderer.geometry.bind(buffer.geometry);\n gl.drawElements(gl.TRIANGLES, amount * 6, gl.UNSIGNED_SHORT, 0);\n }\n }\n generateBuffers(container) {\n const buffers = [];\n const size = container._maxSize;\n const batchSize = container._batchSize;\n const dynamicPropertyFlags = container._properties;\n for (let i = 0; i < size; i += batchSize) {\n buffers.push(new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize));\n }\n return buffers;\n }\n _generateOneMoreBuffer(container) {\n const batchSize = container._batchSize;\n const dynamicPropertyFlags = container._properties;\n return new ParticleBuffer(this.properties, dynamicPropertyFlags, batchSize);\n }\n uploadVertices(children, startIndex, amount, array, stride, offset) {\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i];\n const texture = sprite._texture;\n const sx = sprite.scale.x;\n const sy = sprite.scale.y;\n const trim = texture.trim;\n const orig = texture.orig;\n if (trim) {\n w1 = trim.x - sprite.anchor.x * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - sprite.anchor.y * orig.height;\n h0 = h1 + trim.height;\n } else {\n w0 = orig.width * (1 - sprite.anchor.x);\n w1 = orig.width * -sprite.anchor.x;\n h0 = orig.height * (1 - sprite.anchor.y);\n h1 = orig.height * -sprite.anchor.y;\n }\n array[offset] = w1 * sx;\n array[offset + 1] = h1 * sy;\n array[offset + stride] = w0 * sx;\n array[offset + stride + 1] = h1 * sy;\n array[offset + stride * 2] = w0 * sx;\n array[offset + stride * 2 + 1] = h0 * sy;\n array[offset + stride * 3] = w1 * sx;\n array[offset + stride * 3 + 1] = h0 * sy;\n offset += stride * 4;\n }\n }\n uploadPosition(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spritePosition = children[startIndex + i].position;\n array[offset] = spritePosition.x;\n array[offset + 1] = spritePosition.y;\n array[offset + stride] = spritePosition.x;\n array[offset + stride + 1] = spritePosition.y;\n array[offset + stride * 2] = spritePosition.x;\n array[offset + stride * 2 + 1] = spritePosition.y;\n array[offset + stride * 3] = spritePosition.x;\n array[offset + stride * 3 + 1] = spritePosition.y;\n offset += stride * 4;\n }\n }\n uploadRotation(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; i++) {\n const spriteRotation = children[startIndex + i].rotation;\n array[offset] = spriteRotation;\n array[offset + stride] = spriteRotation;\n array[offset + stride * 2] = spriteRotation;\n array[offset + stride * 3] = spriteRotation;\n offset += stride * 4;\n }\n }\n uploadUvs(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const textureUvs = children[startIndex + i]._texture._uvs;\n if (textureUvs) {\n array[offset] = textureUvs.x0;\n array[offset + 1] = textureUvs.y0;\n array[offset + stride] = textureUvs.x1;\n array[offset + stride + 1] = textureUvs.y1;\n array[offset + stride * 2] = textureUvs.x2;\n array[offset + stride * 2 + 1] = textureUvs.y2;\n array[offset + stride * 3] = textureUvs.x3;\n array[offset + stride * 3 + 1] = textureUvs.y3;\n offset += stride * 4;\n } else {\n array[offset] = 0;\n array[offset + 1] = 0;\n array[offset + stride] = 0;\n array[offset + stride + 1] = 0;\n array[offset + stride * 2] = 0;\n array[offset + stride * 2 + 1] = 0;\n array[offset + stride * 3] = 0;\n array[offset + stride * 3 + 1] = 0;\n offset += stride * 4;\n }\n }\n }\n uploadTint(children, startIndex, amount, array, stride, offset) {\n for (let i = 0; i < amount; ++i) {\n const sprite = children[startIndex + i];\n const result = Color.shared.setValue(sprite._tintRGB).toPremultiplied(sprite.alpha, sprite.texture.baseTexture.alphaMode > 0);\n array[offset] = result;\n array[offset + stride] = result;\n array[offset + stride * 2] = result;\n array[offset + stride * 3] = result;\n offset += stride * 4;\n }\n }\n destroy() {\n super.destroy();\n if (this.shader) {\n this.shader.destroy();\n this.shader = null;\n }\n this.tempMatrix = null;\n }\n}\nParticleRenderer.extension = {\n name: \"particle\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(ParticleRenderer);\n\nexport { ParticleRenderer };\n//# sourceMappingURL=ParticleRenderer.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\nattribute vec4 aColor;\\n\\nattribute vec2 aPositionCoord;\\nattribute float aRotation;\\n\\nuniform mat3 translationMatrix;\\nuniform vec4 uColor;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nvoid main(void){\\n float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\\n float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\\n\\n vec2 v = vec2(x, y);\\n v = v + aPositionCoord;\\n\\n gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = aTextureCoord;\\n vColor = aColor * uColor;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=particles2.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform sampler2D uSampler;\\n\\nvoid main(void){\\n vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\\n gl_FragColor = color;\\n}\";\n\nexport { fragment as default };\n//# sourceMappingURL=particles.mjs.map\n","class CountLimiter {\n constructor(maxItemsPerFrame) {\n this.maxItemsPerFrame = maxItemsPerFrame;\n this.itemsLeft = 0;\n }\n beginFrame() {\n this.itemsLeft = this.maxItemsPerFrame;\n }\n allowedToUpload() {\n return this.itemsLeft-- > 0;\n }\n}\n\nexport { CountLimiter };\n//# sourceMappingURL=CountLimiter.mjs.map\n","import { Texture, BaseTexture, Ticker, UPDATE_PRIORITY } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { Text, TextStyle, TextMetrics } from '@pixi/text';\nimport { CountLimiter } from './CountLimiter.mjs';\n\nfunction findMultipleBaseTextures(item, queue) {\n let result = false;\n if (item?._textures?.length) {\n for (let i = 0; i < item._textures.length; i++) {\n if (item._textures[i] instanceof Texture) {\n const baseTexture = item._textures[i].baseTexture;\n if (!queue.includes(baseTexture)) {\n queue.push(baseTexture);\n result = true;\n }\n }\n }\n }\n return result;\n}\nfunction findBaseTexture(item, queue) {\n if (item.baseTexture instanceof BaseTexture) {\n const texture = item.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction findTexture(item, queue) {\n if (item._texture && item._texture instanceof Texture) {\n const texture = item._texture.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction drawText(_helper, item) {\n if (item instanceof Text) {\n item.updateText(true);\n return true;\n }\n return false;\n}\nfunction calculateTextStyle(_helper, item) {\n if (item instanceof TextStyle) {\n const font = item.toFontString();\n TextMetrics.measureFont(font);\n return true;\n }\n return false;\n}\nfunction findText(item, queue) {\n if (item instanceof Text) {\n if (!queue.includes(item.style)) {\n queue.push(item.style);\n }\n if (!queue.includes(item)) {\n queue.push(item);\n }\n const texture = item._texture.baseTexture;\n if (!queue.includes(texture)) {\n queue.push(texture);\n }\n return true;\n }\n return false;\n}\nfunction findTextStyle(item, queue) {\n if (item instanceof TextStyle) {\n if (!queue.includes(item)) {\n queue.push(item);\n }\n return true;\n }\n return false;\n}\nconst _BasePrepare = class {\n constructor(renderer) {\n this.limiter = new CountLimiter(_BasePrepare.uploadsPerFrame);\n this.renderer = renderer;\n this.uploadHookHelper = null;\n this.queue = [];\n this.addHooks = [];\n this.uploadHooks = [];\n this.completes = [];\n this.ticking = false;\n this.delayedTick = () => {\n if (!this.queue) {\n return;\n }\n this.prepareItems();\n };\n this.registerFindHook(findText);\n this.registerFindHook(findTextStyle);\n this.registerFindHook(findMultipleBaseTextures);\n this.registerFindHook(findBaseTexture);\n this.registerFindHook(findTexture);\n this.registerUploadHook(drawText);\n this.registerUploadHook(calculateTextStyle);\n }\n upload(item) {\n return new Promise((resolve) => {\n if (item) {\n this.add(item);\n }\n if (this.queue.length) {\n this.completes.push(resolve);\n if (!this.ticking) {\n this.ticking = true;\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n }\n } else {\n resolve();\n }\n });\n }\n tick() {\n setTimeout(this.delayedTick, 0);\n }\n prepareItems() {\n this.limiter.beginFrame();\n while (this.queue.length && this.limiter.allowedToUpload()) {\n const item = this.queue[0];\n let uploaded = false;\n if (item && !item._destroyed) {\n for (let i = 0, len = this.uploadHooks.length; i < len; i++) {\n if (this.uploadHooks[i](this.uploadHookHelper, item)) {\n this.queue.shift();\n uploaded = true;\n break;\n }\n }\n }\n if (!uploaded) {\n this.queue.shift();\n }\n }\n if (!this.queue.length) {\n this.ticking = false;\n const completes = this.completes.slice(0);\n this.completes.length = 0;\n for (let i = 0, len = completes.length; i < len; i++) {\n completes[i]();\n }\n } else {\n Ticker.system.addOnce(this.tick, this, UPDATE_PRIORITY.UTILITY);\n }\n }\n registerFindHook(addHook) {\n if (addHook) {\n this.addHooks.push(addHook);\n }\n return this;\n }\n registerUploadHook(uploadHook) {\n if (uploadHook) {\n this.uploadHooks.push(uploadHook);\n }\n return this;\n }\n add(item) {\n for (let i = 0, len = this.addHooks.length; i < len; i++) {\n if (this.addHooks[i](item, this.queue)) {\n break;\n }\n }\n if (item instanceof Container) {\n for (let i = item.children.length - 1; i >= 0; i--) {\n this.add(item.children[i]);\n }\n }\n return this;\n }\n destroy() {\n if (this.ticking) {\n Ticker.system.remove(this.tick, this);\n }\n this.ticking = false;\n this.addHooks = null;\n this.uploadHooks = null;\n this.renderer = null;\n this.completes = null;\n this.queue = null;\n this.limiter = null;\n this.uploadHookHelper = null;\n }\n};\nlet BasePrepare = _BasePrepare;\nBasePrepare.uploadsPerFrame = 4;\n\nexport { BasePrepare };\n//# sourceMappingURL=BasePrepare.mjs.map\n","import { settings, utils } from '@pixi/core';\nexport { settings } from '@pixi/core';\nimport { BasePrepare } from './BasePrepare.mjs';\n\nObject.defineProperties(settings, {\n UPLOADS_PER_FRAME: {\n get() {\n return BasePrepare.uploadsPerFrame;\n },\n set(value) {\n utils.deprecation(\"7.1.0\", \"settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame\");\n BasePrepare.uploadsPerFrame = value;\n }\n }\n});\n//# sourceMappingURL=settings.mjs.map\n","import { BaseTexture, ExtensionType, extensions } from '@pixi/core';\nimport { Graphics } from '@pixi/graphics';\nimport { BasePrepare } from './BasePrepare.mjs';\n\nfunction uploadBaseTextures(renderer, item) {\n if (item instanceof BaseTexture) {\n if (!item._glTextures[renderer.CONTEXT_UID]) {\n renderer.texture.bind(item);\n }\n return true;\n }\n return false;\n}\nfunction uploadGraphics(renderer, item) {\n if (!(item instanceof Graphics)) {\n return false;\n }\n const { geometry } = item;\n item.finishPoly();\n geometry.updateBatches();\n const { batches } = geometry;\n for (let i = 0; i < batches.length; i++) {\n const { texture } = batches[i].style;\n if (texture) {\n uploadBaseTextures(renderer, texture.baseTexture);\n }\n }\n if (!geometry.batchable) {\n renderer.geometry.bind(geometry, item._resolveDirectShader(renderer));\n }\n return true;\n}\nfunction findGraphics(item, queue) {\n if (item instanceof Graphics) {\n queue.push(item);\n return true;\n }\n return false;\n}\nclass Prepare extends BasePrepare {\n constructor(renderer) {\n super(renderer);\n this.uploadHookHelper = this.renderer;\n this.registerFindHook(findGraphics);\n this.registerUploadHook(uploadBaseTextures);\n this.registerUploadHook(uploadGraphics);\n }\n}\nPrepare.extension = {\n name: \"prepare\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Prepare);\n\nexport { Prepare };\n//# sourceMappingURL=Prepare.mjs.map\n","const BrowserAdapter = {\n createCanvas: (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n },\n getCanvasRenderingContext2D: () => CanvasRenderingContext2D,\n getWebGLRenderingContext: () => WebGLRenderingContext,\n getNavigator: () => navigator,\n getBaseUrl: () => document.baseURI ?? window.location.href,\n getFontFaceSet: () => document.fonts,\n fetch: (url, options) => fetch(url, options),\n parseXML: (xml) => {\n const parser = new DOMParser();\n return parser.parseFromString(xml, \"text/xml\");\n }\n};\n\nexport { BrowserAdapter };\n//# sourceMappingURL=adapter.mjs.map\n","import { BrowserAdapter } from './adapter.mjs';\n\nconst settings = {\n ADAPTER: BrowserAdapter,\n RESOLUTION: 1,\n CREATE_IMAGE_BITMAP: false,\n ROUND_PIXELS: false\n};\n\nexport { settings };\n//# sourceMappingURL=settings.mjs.map\n","import isMobileJs from 'ismobilejs';\n\nconst isMobileCall = isMobileJs.default ?? isMobileJs;\nconst isMobile = isMobileCall(globalThis.navigator);\n\nexport { isMobile };\n//# sourceMappingURL=isMobile.mjs.map\n","import { Texture, Ticker, UPDATE_PRIORITY } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\n\nclass AnimatedSprite extends Sprite {\n constructor(textures, autoUpdate = true) {\n super(textures[0] instanceof Texture ? textures[0] : textures[0].texture);\n this._textures = null;\n this._durations = null;\n this._autoUpdate = autoUpdate;\n this._isConnectedToTicker = false;\n this.animationSpeed = 1;\n this.loop = true;\n this.updateAnchor = false;\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n this._currentTime = 0;\n this._playing = false;\n this._previousFrame = null;\n this.textures = textures;\n }\n stop() {\n if (!this._playing) {\n return;\n }\n this._playing = false;\n if (this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n play() {\n if (this._playing) {\n return;\n }\n this._playing = true;\n if (this._autoUpdate && !this._isConnectedToTicker) {\n Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH);\n this._isConnectedToTicker = true;\n }\n }\n gotoAndStop(frameNumber) {\n this.stop();\n this.currentFrame = frameNumber;\n }\n gotoAndPlay(frameNumber) {\n this.currentFrame = frameNumber;\n this.play();\n }\n update(deltaTime) {\n if (!this._playing) {\n return;\n }\n const elapsed = this.animationSpeed * deltaTime;\n const previousFrame = this.currentFrame;\n if (this._durations !== null) {\n let lag = this._currentTime % 1 * this._durations[this.currentFrame];\n lag += elapsed / 60 * 1e3;\n while (lag < 0) {\n this._currentTime--;\n lag += this._durations[this.currentFrame];\n }\n const sign = Math.sign(this.animationSpeed * deltaTime);\n this._currentTime = Math.floor(this._currentTime);\n while (lag >= this._durations[this.currentFrame]) {\n lag -= this._durations[this.currentFrame] * sign;\n this._currentTime += sign;\n }\n this._currentTime += lag / this._durations[this.currentFrame];\n } else {\n this._currentTime += elapsed;\n }\n if (this._currentTime < 0 && !this.loop) {\n this.gotoAndStop(0);\n if (this.onComplete) {\n this.onComplete();\n }\n } else if (this._currentTime >= this._textures.length && !this.loop) {\n this.gotoAndStop(this._textures.length - 1);\n if (this.onComplete) {\n this.onComplete();\n }\n } else if (previousFrame !== this.currentFrame) {\n if (this.loop && this.onLoop) {\n if (this.animationSpeed > 0 && this.currentFrame < previousFrame || this.animationSpeed < 0 && this.currentFrame > previousFrame) {\n this.onLoop();\n }\n }\n this.updateTexture();\n }\n }\n updateTexture() {\n const currentFrame = this.currentFrame;\n if (this._previousFrame === currentFrame) {\n return;\n }\n this._previousFrame = currentFrame;\n this._texture = this._textures[currentFrame];\n this._textureID = -1;\n this._textureTrimmedID = -1;\n this._cachedTint = 16777215;\n this.uvs = this._texture._uvs.uvsFloat32;\n if (this.updateAnchor) {\n this._anchor.copyFrom(this._texture.defaultAnchor);\n }\n if (this.onFrameChange) {\n this.onFrameChange(this.currentFrame);\n }\n }\n destroy(options) {\n this.stop();\n super.destroy(options);\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n }\n static fromFrames(frames) {\n const textures = [];\n for (let i = 0; i < frames.length; ++i) {\n textures.push(Texture.from(frames[i]));\n }\n return new AnimatedSprite(textures);\n }\n static fromImages(images) {\n const textures = [];\n for (let i = 0; i < images.length; ++i) {\n textures.push(Texture.from(images[i]));\n }\n return new AnimatedSprite(textures);\n }\n get totalFrames() {\n return this._textures.length;\n }\n get textures() {\n return this._textures;\n }\n set textures(value) {\n if (value[0] instanceof Texture) {\n this._textures = value;\n this._durations = null;\n } else {\n this._textures = [];\n this._durations = [];\n for (let i = 0; i < value.length; i++) {\n this._textures.push(value[i].texture);\n this._durations.push(value[i].time);\n }\n }\n this._previousFrame = null;\n this.gotoAndStop(0);\n this.updateTexture();\n }\n get currentFrame() {\n let currentFrame = Math.floor(this._currentTime) % this._textures.length;\n if (currentFrame < 0) {\n currentFrame += this._textures.length;\n }\n return currentFrame;\n }\n set currentFrame(value) {\n if (value < 0 || value > this.totalFrames - 1) {\n throw new Error(`[AnimatedSprite]: Invalid frame index value ${value}, expected to be between 0 and totalFrames ${this.totalFrames}.`);\n }\n const previousFrame = this.currentFrame;\n this._currentTime = value;\n if (previousFrame !== this.currentFrame) {\n this.updateTexture();\n }\n }\n get playing() {\n return this._playing;\n }\n get autoUpdate() {\n return this._autoUpdate;\n }\n set autoUpdate(value) {\n if (value !== this._autoUpdate) {\n this._autoUpdate = value;\n if (!this._autoUpdate && this._isConnectedToTicker) {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n } else if (this._autoUpdate && !this._isConnectedToTicker && this._playing) {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n}\n\nexport { AnimatedSprite };\n//# sourceMappingURL=AnimatedSprite.mjs.map\n","import { Point, Transform, TextureMatrix, Rectangle, Texture } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\n\nconst tempPoint = new Point();\nclass TilingSprite extends Sprite {\n constructor(texture, width = 100, height = 100) {\n super(texture);\n this.tileTransform = new Transform();\n this._width = width;\n this._height = height;\n this.uvMatrix = this.texture.uvMatrix || new TextureMatrix(texture);\n this.pluginName = \"tilingSprite\";\n this.uvRespectAnchor = false;\n }\n get clampMargin() {\n return this.uvMatrix.clampMargin;\n }\n set clampMargin(value) {\n this.uvMatrix.clampMargin = value;\n this.uvMatrix.update(true);\n }\n get tileScale() {\n return this.tileTransform.scale;\n }\n set tileScale(value) {\n this.tileTransform.scale.copyFrom(value);\n }\n get tilePosition() {\n return this.tileTransform.position;\n }\n set tilePosition(value) {\n this.tileTransform.position.copyFrom(value);\n }\n _onTextureUpdate() {\n if (this.uvMatrix) {\n this.uvMatrix.texture = this._texture;\n }\n this._cachedTint = 16777215;\n }\n _render(renderer) {\n const texture = this._texture;\n if (!texture || !texture.valid) {\n return;\n }\n this.tileTransform.updateLocalTransform();\n this.uvMatrix.update();\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n renderer.plugins[this.pluginName].render(this);\n }\n _calculateBounds() {\n const minX = this._width * -this._anchor._x;\n const minY = this._height * -this._anchor._y;\n const maxX = this._width * (1 - this._anchor._x);\n const maxY = this._height * (1 - this._anchor._y);\n this._bounds.addFrame(this.transform, minX, minY, maxX, maxY);\n }\n getLocalBounds(rect) {\n if (this.children.length === 0) {\n this._bounds.minX = this._width * -this._anchor._x;\n this._bounds.minY = this._height * -this._anchor._y;\n this._bounds.maxX = this._width * (1 - this._anchor._x);\n this._bounds.maxY = this._height * (1 - this._anchor._y);\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n return this._bounds.getRectangle(rect);\n }\n return super.getLocalBounds.call(this, rect);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._width;\n const height = this._height;\n const x1 = -width * this.anchor._x;\n if (tempPoint.x >= x1 && tempPoint.x < x1 + width) {\n const y1 = -height * this.anchor._y;\n if (tempPoint.y >= y1 && tempPoint.y < y1 + height) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n this.tileTransform = null;\n this.uvMatrix = null;\n }\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new TilingSprite(texture, options.width, options.height);\n }\n get width() {\n return this._width;\n }\n set width(value) {\n this._width = value;\n }\n get height() {\n return this._height;\n }\n set height(value) {\n this._height = value;\n }\n}\n\nexport { TilingSprite };\n//# sourceMappingURL=TilingSprite.mjs.map\n","var gl2FragmentSrc = \"#version 300 es\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nin vec2 vTextureCoord;\\n\\nout vec4 fragmentColor;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\nuniform mat3 uMapCoord;\\nuniform vec4 uClampFrame;\\nuniform vec2 uClampOffset;\\n\\nvoid main(void)\\n{\\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\\n vec2 unclamped = coord;\\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\\n\\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\\n\\n fragmentColor = texSample * uColor;\\n}\\n\";\n\nexport { gl2FragmentSrc as default };\n//# sourceMappingURL=sprite-tiling.mjs.map\n","var gl1VertexSrc = \"#version 100\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nattribute vec2 aVertexPosition;\\nattribute vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTransform;\\n\\nvarying vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { gl1VertexSrc as default };\n//# sourceMappingURL=sprite-tiling-fallback2.mjs.map\n","import { Matrix, ObjectRenderer, QuadUv, State, Shader, WRAP_MODES, Color, utils, ExtensionType, extensions } from '@pixi/core';\nimport gl2FragmentSrc from './sprite-tiling.mjs';\nimport gl2VertexSrc from './sprite-tiling2.mjs';\nimport gl1FragmentSrc from './sprite-tiling-fallback.mjs';\nimport gl1VertexSrc from './sprite-tiling-fallback2.mjs';\nimport fragmentSimpleSrc from './sprite-tiling-simple.mjs';\n\nconst tempMat = new Matrix();\nclass TilingSpriteRenderer extends ObjectRenderer {\n constructor(renderer) {\n super(renderer);\n renderer.runners.contextChange.add(this);\n this.quad = new QuadUv();\n this.state = State.for2d();\n }\n contextChange() {\n const renderer = this.renderer;\n const uniforms = { globals: renderer.globalUniforms };\n this.simpleShader = Shader.from(gl1VertexSrc, fragmentSimpleSrc, uniforms);\n this.shader = renderer.context.webGLVersion > 1 ? Shader.from(gl2VertexSrc, gl2FragmentSrc, uniforms) : Shader.from(gl1VertexSrc, gl1FragmentSrc, uniforms);\n }\n render(ts) {\n const renderer = this.renderer;\n const quad = this.quad;\n let vertices = quad.vertices;\n vertices[0] = vertices[6] = ts._width * -ts.anchor.x;\n vertices[1] = vertices[3] = ts._height * -ts.anchor.y;\n vertices[2] = vertices[4] = ts._width * (1 - ts.anchor.x);\n vertices[5] = vertices[7] = ts._height * (1 - ts.anchor.y);\n const anchorX = ts.uvRespectAnchor ? ts.anchor.x : 0;\n const anchorY = ts.uvRespectAnchor ? ts.anchor.y : 0;\n vertices = quad.uvs;\n vertices[0] = vertices[6] = -anchorX;\n vertices[1] = vertices[3] = -anchorY;\n vertices[2] = vertices[4] = 1 - anchorX;\n vertices[5] = vertices[7] = 1 - anchorY;\n quad.invalidate();\n const tex = ts._texture;\n const baseTex = tex.baseTexture;\n const premultiplied = baseTex.alphaMode > 0;\n const lt = ts.tileTransform.localTransform;\n const uv = ts.uvMatrix;\n let isSimple = baseTex.isPowerOfTwo && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;\n if (isSimple) {\n if (!baseTex._glTextures[renderer.CONTEXT_UID]) {\n if (baseTex.wrapMode === WRAP_MODES.CLAMP) {\n baseTex.wrapMode = WRAP_MODES.REPEAT;\n }\n } else {\n isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;\n }\n }\n const shader = isSimple ? this.simpleShader : this.shader;\n const w = tex.width;\n const h = tex.height;\n const W = ts._width;\n const H = ts._height;\n tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H);\n tempMat.invert();\n if (isSimple) {\n tempMat.prepend(uv.mapCoord);\n } else {\n shader.uniforms.uMapCoord = uv.mapCoord.toArray(true);\n shader.uniforms.uClampFrame = uv.uClampFrame;\n shader.uniforms.uClampOffset = uv.uClampOffset;\n }\n shader.uniforms.uTransform = tempMat.toArray(true);\n shader.uniforms.uColor = Color.shared.setValue(ts.tint).premultiply(ts.worldAlpha, premultiplied).toArray(shader.uniforms.uColor);\n shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true);\n shader.uniforms.uSampler = tex;\n renderer.shader.bind(shader);\n renderer.geometry.bind(quad);\n this.state.blendMode = utils.correctBlendMode(ts.blendMode, premultiplied);\n renderer.state.set(this.state);\n renderer.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0);\n }\n}\nTilingSpriteRenderer.extension = {\n name: \"tilingSprite\",\n type: ExtensionType.RendererPlugin\n};\nextensions.add(TilingSpriteRenderer);\n\nexport { TilingSpriteRenderer };\n//# sourceMappingURL=TilingSpriteRenderer.mjs.map\n","var fragmentSimpleSrc = \"#version 100\\n#define SHADER_NAME Tiling-Sprite-Simple-100\\n\\nprecision lowp float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\n\\nvoid main(void)\\n{\\n vec4 texSample = texture2D(uSampler, vTextureCoord);\\n gl_FragColor = texSample * uColor;\\n}\\n\";\n\nexport { fragmentSimpleSrc as default };\n//# sourceMappingURL=sprite-tiling-simple.mjs.map\n","var gl2VertexSrc = \"#version 300 es\\n#define SHADER_NAME Tiling-Sprite-300\\n\\nprecision lowp float;\\n\\nin vec2 aVertexPosition;\\nin vec2 aTextureCoord;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 translationMatrix;\\nuniform mat3 uTransform;\\n\\nout vec2 vTextureCoord;\\n\\nvoid main(void)\\n{\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\n\\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\\n}\\n\";\n\nexport { gl2VertexSrc as default };\n//# sourceMappingURL=sprite-tiling2.mjs.map\n","var gl1FragmentSrc = \"#version 100\\n#ifdef GL_EXT_shader_texture_lod\\n #extension GL_EXT_shader_texture_lod : enable\\n#endif\\n#define SHADER_NAME Tiling-Sprite-100\\n\\nprecision lowp float;\\n\\nvarying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform vec4 uColor;\\nuniform mat3 uMapCoord;\\nuniform vec4 uClampFrame;\\nuniform vec2 uClampOffset;\\n\\nvoid main(void)\\n{\\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\\n vec2 unclamped = coord;\\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\\n\\n #ifdef GL_EXT_shader_texture_lod\\n vec4 texSample = unclamped == coord\\n ? texture2D(uSampler, coord) \\n : texture2DLodEXT(uSampler, coord, 0);\\n #else\\n vec4 texSample = texture2D(uSampler, coord);\\n #endif\\n\\n gl_FragColor = texSample * uColor;\\n}\\n\";\n\nexport { gl1FragmentSrc as default };\n//# sourceMappingURL=sprite-tiling-fallback.mjs.map\n","import { Point, ObservablePoint, Color, BLEND_MODES, Texture, settings, utils, Rectangle } from '@pixi/core';\nimport { Container, Bounds } from '@pixi/display';\n\nconst tempPoint = new Point();\nconst indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\nclass Sprite extends Container {\n constructor(texture) {\n super();\n this._anchor = new ObservablePoint(this._onAnchorUpdate, this, texture ? texture.defaultAnchor.x : 0, texture ? texture.defaultAnchor.y : 0);\n this._texture = null;\n this._width = 0;\n this._height = 0;\n this._tintColor = new Color(16777215);\n this._tintRGB = null;\n this.tint = 16777215;\n this.blendMode = BLEND_MODES.NORMAL;\n this._cachedTint = 16777215;\n this.uvs = null;\n this.texture = texture || Texture.EMPTY;\n this.vertexData = new Float32Array(8);\n this.vertexTrimmedData = null;\n this._transformID = -1;\n this._textureID = -1;\n this._transformTrimmedID = -1;\n this._textureTrimmedID = -1;\n this.indices = indices;\n this.pluginName = \"batch\";\n this.isSprite = true;\n this._roundPixels = settings.ROUND_PIXELS;\n }\n _onTextureUpdate() {\n this._textureID = -1;\n this._textureTrimmedID = -1;\n this._cachedTint = 16777215;\n if (this._width) {\n this.scale.x = utils.sign(this.scale.x) * this._width / this._texture.orig.width;\n }\n if (this._height) {\n this.scale.y = utils.sign(this.scale.y) * this._height / this._texture.orig.height;\n }\n }\n _onAnchorUpdate() {\n this._transformID = -1;\n this._transformTrimmedID = -1;\n }\n calculateVertices() {\n const texture = this._texture;\n if (this._transformID === this.transform._worldID && this._textureID === texture._updateID) {\n return;\n }\n if (this._textureID !== texture._updateID) {\n this.uvs = this._texture._uvs.uvsFloat32;\n }\n this._transformID = this.transform._worldID;\n this._textureID = texture._updateID;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const vertexData = this.vertexData;\n const trim = texture.trim;\n const orig = texture.orig;\n const anchor = this._anchor;\n let w0 = 0;\n let w1 = 0;\n let h0 = 0;\n let h1 = 0;\n if (trim) {\n w1 = trim.x - anchor._x * orig.width;\n w0 = w1 + trim.width;\n h1 = trim.y - anchor._y * orig.height;\n h0 = h1 + trim.height;\n } else {\n w1 = -anchor._x * orig.width;\n w0 = w1 + orig.width;\n h1 = -anchor._y * orig.height;\n h0 = h1 + orig.height;\n }\n vertexData[0] = a * w1 + c * h1 + tx;\n vertexData[1] = d * h1 + b * w1 + ty;\n vertexData[2] = a * w0 + c * h1 + tx;\n vertexData[3] = d * h1 + b * w0 + ty;\n vertexData[4] = a * w0 + c * h0 + tx;\n vertexData[5] = d * h0 + b * w0 + ty;\n vertexData[6] = a * w1 + c * h0 + tx;\n vertexData[7] = d * h0 + b * w1 + ty;\n if (this._roundPixels) {\n const resolution = settings.RESOLUTION;\n for (let i = 0; i < vertexData.length; ++i) {\n vertexData[i] = Math.round(vertexData[i] * resolution) / resolution;\n }\n }\n }\n calculateTrimmedVertices() {\n if (!this.vertexTrimmedData) {\n this.vertexTrimmedData = new Float32Array(8);\n } else if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) {\n return;\n }\n this._transformTrimmedID = this.transform._worldID;\n this._textureTrimmedID = this._texture._updateID;\n const texture = this._texture;\n const vertexData = this.vertexTrimmedData;\n const orig = texture.orig;\n const anchor = this._anchor;\n const wt = this.transform.worldTransform;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const w1 = -anchor._x * orig.width;\n const w0 = w1 + orig.width;\n const h1 = -anchor._y * orig.height;\n const h0 = h1 + orig.height;\n vertexData[0] = a * w1 + c * h1 + tx;\n vertexData[1] = d * h1 + b * w1 + ty;\n vertexData[2] = a * w0 + c * h1 + tx;\n vertexData[3] = d * h1 + b * w0 + ty;\n vertexData[4] = a * w0 + c * h0 + tx;\n vertexData[5] = d * h0 + b * w0 + ty;\n vertexData[6] = a * w1 + c * h0 + tx;\n vertexData[7] = d * h0 + b * w1 + ty;\n }\n _render(renderer) {\n this.calculateVertices();\n renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]);\n renderer.plugins[this.pluginName].render(this);\n }\n _calculateBounds() {\n const trim = this._texture.trim;\n const orig = this._texture.orig;\n if (!trim || trim.width === orig.width && trim.height === orig.height) {\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n } else {\n this.calculateTrimmedVertices();\n this._bounds.addQuad(this.vertexTrimmedData);\n }\n }\n getLocalBounds(rect) {\n if (this.children.length === 0) {\n if (!this._localBounds) {\n this._localBounds = new Bounds();\n }\n this._localBounds.minX = this._texture.orig.width * -this._anchor._x;\n this._localBounds.minY = this._texture.orig.height * -this._anchor._y;\n this._localBounds.maxX = this._texture.orig.width * (1 - this._anchor._x);\n this._localBounds.maxY = this._texture.orig.height * (1 - this._anchor._y);\n if (!rect) {\n if (!this._localBoundsRect) {\n this._localBoundsRect = new Rectangle();\n }\n rect = this._localBoundsRect;\n }\n return this._localBounds.getRectangle(rect);\n }\n return super.getLocalBounds.call(this, rect);\n }\n containsPoint(point) {\n this.worldTransform.applyInverse(point, tempPoint);\n const width = this._texture.orig.width;\n const height = this._texture.orig.height;\n const x1 = -width * this.anchor.x;\n let y1 = 0;\n if (tempPoint.x >= x1 && tempPoint.x < x1 + width) {\n y1 = -height * this.anchor.y;\n if (tempPoint.y >= y1 && tempPoint.y < y1 + height) {\n return true;\n }\n }\n return false;\n }\n destroy(options) {\n super.destroy(options);\n this._texture.off(\"update\", this._onTextureUpdate, this);\n this._anchor = null;\n const destroyTexture = typeof options === \"boolean\" ? options : options?.texture;\n if (destroyTexture) {\n const destroyBaseTexture = typeof options === \"boolean\" ? options : options?.baseTexture;\n this._texture.destroy(!!destroyBaseTexture);\n }\n this._texture = null;\n }\n static from(source, options) {\n const texture = source instanceof Texture ? source : Texture.from(source, options);\n return new Sprite(texture);\n }\n set roundPixels(value) {\n if (this._roundPixels !== value) {\n this._transformID = -1;\n }\n this._roundPixels = value;\n }\n get roundPixels() {\n return this._roundPixels;\n }\n get width() {\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width;\n this._width = value;\n }\n get height() {\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height;\n this._height = value;\n }\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n this._anchor.copyFrom(value);\n }\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n this._tintColor.setValue(value);\n this._tintRGB = this._tintColor.toLittleEndianNumber();\n }\n get tintValue() {\n return this._tintColor.toNumber();\n }\n get texture() {\n return this._texture;\n }\n set texture(value) {\n if (this._texture === value) {\n return;\n }\n if (this._texture) {\n this._texture.off(\"update\", this._onTextureUpdate, this);\n }\n this._texture = value || Texture.EMPTY;\n this._cachedTint = 16777215;\n this._textureID = -1;\n this._textureTrimmedID = -1;\n if (value) {\n if (value.baseTexture.valid) {\n this._onTextureUpdate();\n } else {\n value.once(\"update\", this._onTextureUpdate, this);\n }\n }\n }\n}\n\nexport { Sprite };\n//# sourceMappingURL=Sprite.mjs.map\n","class BitmapFontData {\n constructor() {\n this.info = [];\n this.common = [];\n this.page = [];\n this.char = [];\n this.kerning = [];\n this.distanceField = [];\n }\n}\n\nexport { BitmapFontData };\n//# sourceMappingURL=BitmapFontData.mjs.map\n","import { BitmapFontData } from '../BitmapFontData.mjs';\n\nclass TextFormat {\n static test(data) {\n return typeof data === \"string\" && data.startsWith(\"info face=\");\n }\n static parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0];\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n const itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\");\n const key = split[0];\n const strValue = split[1].replace(/\"/gm, \"\");\n const floatValue = parseFloat(strValue);\n const value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = new BitmapFontData();\n rawData.info.forEach((info) => font.info.push({\n face: info.face,\n size: parseInt(info.size, 10)\n }));\n rawData.common.forEach((common) => font.common.push({\n lineHeight: parseInt(common.lineHeight, 10)\n }));\n rawData.page.forEach((page) => font.page.push({\n id: parseInt(page.id, 10),\n file: page.file\n }));\n rawData.char.forEach((char) => font.char.push({\n id: parseInt(char.id, 10),\n page: parseInt(char.page, 10),\n x: parseInt(char.x, 10),\n y: parseInt(char.y, 10),\n width: parseInt(char.width, 10),\n height: parseInt(char.height, 10),\n xoffset: parseInt(char.xoffset, 10),\n yoffset: parseInt(char.yoffset, 10),\n xadvance: parseInt(char.xadvance, 10)\n }));\n rawData.kerning.forEach((kerning) => font.kerning.push({\n first: parseInt(kerning.first, 10),\n second: parseInt(kerning.second, 10),\n amount: parseInt(kerning.amount, 10)\n }));\n rawData.distanceField.forEach((df) => font.distanceField.push({\n distanceRange: parseInt(df.distanceRange, 10),\n fieldType: df.fieldType\n }));\n return font;\n }\n}\n\nexport { TextFormat };\n//# sourceMappingURL=TextFormat.mjs.map\n","import { BitmapFontData } from '../BitmapFontData.mjs';\n\nclass XMLFormat {\n static test(data) {\n const xml = data;\n return \"getElementsByTagName\" in xml && xml.getElementsByTagName(\"page\").length && xml.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n }\n static parse(xml) {\n const data = new BitmapFontData();\n const info = xml.getElementsByTagName(\"info\");\n const common = xml.getElementsByTagName(\"common\");\n const page = xml.getElementsByTagName(\"page\");\n const char = xml.getElementsByTagName(\"char\");\n const kerning = xml.getElementsByTagName(\"kerning\");\n const distanceField = xml.getElementsByTagName(\"distanceField\");\n for (let i = 0; i < info.length; i++) {\n data.info.push({\n face: info[i].getAttribute(\"face\"),\n size: parseInt(info[i].getAttribute(\"size\"), 10)\n });\n }\n for (let i = 0; i < common.length; i++) {\n data.common.push({\n lineHeight: parseInt(common[i].getAttribute(\"lineHeight\"), 10)\n });\n }\n for (let i = 0; i < page.length; i++) {\n data.page.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n }\n for (let i = 0; i < char.length; i++) {\n const letter = char[i];\n data.char.push({\n id: parseInt(letter.getAttribute(\"id\"), 10),\n page: parseInt(letter.getAttribute(\"page\"), 10) || 0,\n x: parseInt(letter.getAttribute(\"x\"), 10),\n y: parseInt(letter.getAttribute(\"y\"), 10),\n width: parseInt(letter.getAttribute(\"width\"), 10),\n height: parseInt(letter.getAttribute(\"height\"), 10),\n xoffset: parseInt(letter.getAttribute(\"xoffset\"), 10),\n yoffset: parseInt(letter.getAttribute(\"yoffset\"), 10),\n xadvance: parseInt(letter.getAttribute(\"xadvance\"), 10)\n });\n }\n for (let i = 0; i < kerning.length; i++) {\n data.kerning.push({\n first: parseInt(kerning[i].getAttribute(\"first\"), 10),\n second: parseInt(kerning[i].getAttribute(\"second\"), 10),\n amount: parseInt(kerning[i].getAttribute(\"amount\"), 10)\n });\n }\n for (let i = 0; i < distanceField.length; i++) {\n data.distanceField.push({\n fieldType: distanceField[i].getAttribute(\"fieldType\"),\n distanceRange: parseInt(distanceField[i].getAttribute(\"distanceRange\"), 10)\n });\n }\n return data;\n }\n}\n\nexport { XMLFormat };\n//# sourceMappingURL=XMLFormat.mjs.map\n","import { settings } from '@pixi/core';\nimport { XMLFormat } from './XMLFormat.mjs';\n\nclass XMLStringFormat {\n static test(data) {\n if (typeof data === \"string\" && data.includes(\"\")) {\n return XMLFormat.test(settings.ADAPTER.parseXML(data));\n }\n return false;\n }\n static parse(xmlTxt) {\n return XMLFormat.parse(settings.ADAPTER.parseXML(xmlTxt));\n }\n}\n\nexport { XMLStringFormat };\n//# sourceMappingURL=XMLStringFormat.mjs.map\n","import { TextFormat } from './TextFormat.mjs';\nexport { TextFormat } from './TextFormat.mjs';\nimport { XMLFormat } from './XMLFormat.mjs';\nexport { XMLFormat } from './XMLFormat.mjs';\nimport { XMLStringFormat } from './XMLStringFormat.mjs';\nexport { XMLStringFormat } from './XMLStringFormat.mjs';\n\nconst formats = [\n TextFormat,\n XMLFormat,\n XMLStringFormat\n];\nfunction autoDetectFormat(data) {\n for (let i = 0; i < formats.length; i++) {\n if (formats[i].test(data)) {\n return formats[i];\n }\n }\n return null;\n}\n\nexport { autoDetectFormat };\n//# sourceMappingURL=index.mjs.map\n","import { Color } from '@pixi/core';\nimport { generateFillStyle } from './generateFillStyle.mjs';\n\nfunction drawGlyph(canvas, context, metrics, x, y, resolution, style) {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n context.translate(x, y);\n context.scale(resolution, resolution);\n const tx = style.strokeThickness / 2;\n const ty = -(style.strokeThickness / 2);\n context.font = style.toFontString();\n context.lineWidth = style.strokeThickness;\n context.textBaseline = style.textBaseline;\n context.lineJoin = style.lineJoin;\n context.miterLimit = style.miterLimit;\n context.fillStyle = generateFillStyle(canvas, context, style, resolution, [char], metrics);\n context.strokeStyle = style.stroke;\n if (style.dropShadow) {\n const dropShadowColor = style.dropShadowColor;\n const dropShadowBlur = style.dropShadowBlur * resolution;\n const dropShadowDistance = style.dropShadowDistance * resolution;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(style.dropShadowAlpha).toRgbaString();\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance;\n } else {\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n if (style.stroke && style.strokeThickness) {\n context.strokeText(char, tx, ty + metrics.lineHeight - fontProperties.descent);\n }\n if (style.fill) {\n context.fillText(char, tx, ty + metrics.lineHeight - fontProperties.descent);\n }\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.fillStyle = \"rgba(0, 0, 0, 0)\";\n}\n\nexport { drawGlyph };\n//# sourceMappingURL=drawGlyph.mjs.map\n","import { TEXT_GRADIENT } from '@pixi/text';\n\nfunction generateFillStyle(canvas, context, style, resolution, lines, metrics) {\n const fillStyle = style.fill;\n if (!Array.isArray(fillStyle)) {\n return fillStyle;\n } else if (fillStyle.length === 1) {\n return fillStyle[0];\n }\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0;\n const padding = style.padding || 0;\n const width = canvas.width / resolution - dropShadowCorrection - padding * 2;\n const height = canvas.height / resolution - dropShadowCorrection - padding * 2;\n const fill = fillStyle.slice();\n const fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i) {\n fillGradientStops.push(i / lengthPlus1);\n }\n }\n fill.unshift(fillStyle[0]);\n fillGradientStops.unshift(0);\n fill.push(fillStyle[fillStyle.length - 1]);\n fillGradientStops.push(1);\n if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n let lastIterationStop = 0;\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n const gradStopLineHeight = textHeight / height;\n for (let i = 0; i < lines.length; i++) {\n const thisLineTop = metrics.lineHeight * i;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n if (typeof fillGradientStops[j] === \"number\") {\n lineStop = fillGradientStops[j];\n } else {\n lineStop = j / fill.length;\n }\n const globalStop = thisLineTop / height + lineStop * gradStopLineHeight;\n let clampedStop = Math.max(lastIterationStop, globalStop);\n clampedStop = Math.min(clampedStop, 1);\n gradient.addColorStop(clampedStop, fill[j]);\n lastIterationStop = clampedStop;\n }\n }\n } else {\n gradient = context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n if (typeof fillGradientStops[i] === \"number\") {\n stop = fillGradientStops[i];\n } else {\n stop = currentIteration / totalIterations;\n }\n gradient.addColorStop(stop, fill[i]);\n currentIteration++;\n }\n }\n return gradient;\n}\n\nexport { generateFillStyle };\n//# sourceMappingURL=generateFillStyle.mjs.map\n","function splitTextToCharacters(text) {\n return Array.from ? Array.from(text) : text.split(\"\");\n}\n\nexport { splitTextToCharacters };\n//# sourceMappingURL=splitTextToCharacters.mjs.map\n","function extractCharCode(str) {\n return str.codePointAt ? str.codePointAt(0) : str.charCodeAt(0);\n}\n\nexport { extractCharCode };\n//# sourceMappingURL=extractCharCode.mjs.map\n","import { utils, ALPHA_MODES, MIPMAP_MODES, Rectangle, Texture, settings, BaseTexture } from '@pixi/core';\nimport { TextStyle, TextMetrics } from '@pixi/text';\nimport { BitmapFontData } from './BitmapFontData.mjs';\nimport { autoDetectFormat } from './formats/index.mjs';\nimport './utils/index.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\nimport { drawGlyph } from './utils/drawGlyph.mjs';\nimport { extractCharCode } from './utils/extractCharCode.mjs';\n\nconst _BitmapFont = class {\n constructor(data, textures, ownsTextures) {\n const [info] = data.info;\n const [common] = data.common;\n const [page] = data.page;\n const [distanceField] = data.distanceField;\n const res = utils.getResolutionOfUrl(page.file);\n const pageTextures = {};\n this._ownsTextures = ownsTextures;\n this.font = info.face;\n this.size = info.size;\n this.lineHeight = common.lineHeight / res;\n this.chars = {};\n this.pageTextures = pageTextures;\n for (let i = 0; i < data.page.length; i++) {\n const { id, file } = data.page[i];\n pageTextures[id] = textures instanceof Array ? textures[i] : textures[file];\n if (distanceField?.fieldType && distanceField.fieldType !== \"none\") {\n pageTextures[id].baseTexture.alphaMode = ALPHA_MODES.NO_PREMULTIPLIED_ALPHA;\n pageTextures[id].baseTexture.mipmap = MIPMAP_MODES.OFF;\n }\n }\n for (let i = 0; i < data.char.length; i++) {\n const { id, page: page2 } = data.char[i];\n let { x, y, width, height, xoffset, yoffset, xadvance } = data.char[i];\n x /= res;\n y /= res;\n width /= res;\n height /= res;\n xoffset /= res;\n yoffset /= res;\n xadvance /= res;\n const rect = new Rectangle(x + pageTextures[page2].frame.x / res, y + pageTextures[page2].frame.y / res, width, height);\n this.chars[id] = {\n xOffset: xoffset,\n yOffset: yoffset,\n xAdvance: xadvance,\n kerning: {},\n texture: new Texture(pageTextures[page2].baseTexture, rect),\n page: page2\n };\n }\n for (let i = 0; i < data.kerning.length; i++) {\n let { first, second, amount } = data.kerning[i];\n first /= res;\n second /= res;\n amount /= res;\n if (this.chars[second]) {\n this.chars[second].kerning[first] = amount;\n }\n }\n this.distanceFieldRange = distanceField?.distanceRange;\n this.distanceFieldType = distanceField?.fieldType?.toLowerCase() ?? \"none\";\n }\n destroy() {\n for (const id in this.chars) {\n this.chars[id].texture.destroy();\n this.chars[id].texture = null;\n }\n for (const id in this.pageTextures) {\n if (this._ownsTextures) {\n this.pageTextures[id].destroy(true);\n }\n this.pageTextures[id] = null;\n }\n this.chars = null;\n this.pageTextures = null;\n }\n static install(data, textures, ownsTextures) {\n let fontData;\n if (data instanceof BitmapFontData) {\n fontData = data;\n } else {\n const format = autoDetectFormat(data);\n if (!format) {\n throw new Error(\"Unrecognized data format for font.\");\n }\n fontData = format.parse(data);\n }\n if (textures instanceof Texture) {\n textures = [textures];\n }\n const font = new _BitmapFont(fontData, textures, ownsTextures);\n _BitmapFont.available[font.font] = font;\n return font;\n }\n static uninstall(name) {\n const font = _BitmapFont.available[name];\n if (!font) {\n throw new Error(`No font found named '${name}'`);\n }\n font.destroy();\n delete _BitmapFont.available[name];\n }\n static from(name, textStyle, options) {\n if (!name) {\n throw new Error(\"[BitmapFont] Property `name` is required.\");\n }\n const {\n chars,\n padding,\n resolution,\n textureWidth,\n textureHeight,\n ...baseOptions\n } = Object.assign({}, _BitmapFont.defaultOptions, options);\n const charsList = resolveCharacters(chars);\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const lineWidth = textureWidth;\n const fontData = new BitmapFontData();\n fontData.info[0] = {\n face: style.fontFamily,\n size: style.fontSize\n };\n fontData.common[0] = {\n lineHeight: style.fontSize\n };\n let positionX = 0;\n let positionY = 0;\n let canvas;\n let context;\n let baseTexture;\n let maxCharHeight = 0;\n const baseTextures = [];\n const textures = [];\n for (let i = 0; i < charsList.length; i++) {\n if (!canvas) {\n canvas = settings.ADAPTER.createCanvas();\n canvas.width = textureWidth;\n canvas.height = textureHeight;\n context = canvas.getContext(\"2d\");\n baseTexture = new BaseTexture(canvas, { resolution, ...baseOptions });\n baseTextures.push(baseTexture);\n textures.push(new Texture(baseTexture));\n fontData.page.push({\n id: textures.length - 1,\n file: \"\"\n });\n }\n const character = charsList[i];\n const metrics = TextMetrics.measureText(character, style, false, canvas);\n const width = metrics.width;\n const height = Math.ceil(metrics.height);\n const textureGlyphWidth = Math.ceil((style.fontStyle === \"italic\" ? 2 : 1) * width);\n if (positionY >= textureHeight - height * resolution) {\n if (positionY === 0) {\n throw new Error(`[BitmapFont] textureHeight ${textureHeight}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n }\n --i;\n canvas = null;\n context = null;\n baseTexture = null;\n positionY = 0;\n positionX = 0;\n maxCharHeight = 0;\n continue;\n }\n maxCharHeight = Math.max(height + metrics.fontProperties.descent, maxCharHeight);\n if (textureGlyphWidth * resolution + positionX >= lineWidth) {\n if (positionX === 0) {\n throw new Error(`[BitmapFont] textureWidth ${textureWidth}px is too small (fontFamily: '${style.fontFamily}', fontSize: ${style.fontSize}px, char: '${character}')`);\n }\n --i;\n positionY += maxCharHeight * resolution;\n positionY = Math.ceil(positionY);\n positionX = 0;\n maxCharHeight = 0;\n continue;\n }\n drawGlyph(canvas, context, metrics, positionX, positionY, resolution, style);\n const id = extractCharCode(metrics.text);\n fontData.char.push({\n id,\n page: textures.length - 1,\n x: positionX / resolution,\n y: positionY / resolution,\n width: textureGlyphWidth,\n height,\n xoffset: 0,\n yoffset: 0,\n xadvance: width - (style.dropShadow ? style.dropShadowDistance : 0) - (style.stroke ? style.strokeThickness : 0)\n });\n positionX += (textureGlyphWidth + 2 * padding) * resolution;\n positionX = Math.ceil(positionX);\n }\n for (let i = 0, len = charsList.length; i < len; i++) {\n const first = charsList[i];\n for (let j = 0; j < len; j++) {\n const second = charsList[j];\n const c1 = context.measureText(first).width;\n const c2 = context.measureText(second).width;\n const total = context.measureText(first + second).width;\n const amount = total - (c1 + c2);\n if (amount) {\n fontData.kerning.push({\n first: extractCharCode(first),\n second: extractCharCode(second),\n amount\n });\n }\n }\n }\n const font = new _BitmapFont(fontData, textures, true);\n if (_BitmapFont.available[name] !== void 0) {\n _BitmapFont.uninstall(name);\n }\n _BitmapFont.available[name] = font;\n return font;\n }\n};\nlet BitmapFont = _BitmapFont;\nBitmapFont.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"];\nBitmapFont.NUMERIC = [[\"0\", \"9\"]];\nBitmapFont.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"];\nBitmapFont.ASCII = [[\" \", \"~\"]];\nBitmapFont.defaultOptions = {\n resolution: 1,\n textureWidth: 512,\n textureHeight: 512,\n padding: 4,\n chars: _BitmapFont.ALPHANUMERIC\n};\nBitmapFont.available = {};\n\nexport { BitmapFont };\n//# sourceMappingURL=BitmapFont.mjs.map\n","import { splitTextToCharacters } from './splitTextToCharacters.mjs';\n\nfunction resolveCharacters(chars) {\n if (typeof chars === \"string\") {\n chars = [chars];\n }\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2) {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n if (endCode < startCode) {\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n }\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++) {\n result.push(String.fromCharCode(i2));\n }\n } else {\n result.push(...splitTextToCharacters(item));\n }\n }\n if (result.length === 0) {\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n }\n return result;\n}\n\nexport { resolveCharacters };\n//# sourceMappingURL=resolveCharacters.mjs.map\n","import { Color, ObservablePoint, settings, Point, Texture, utils, BLEND_MODES, Program } from '@pixi/core';\nimport { Container } from '@pixi/display';\nimport { MeshGeometry, MeshMaterial, Mesh } from '@pixi/mesh';\nimport { BitmapFont } from './BitmapFont.mjs';\nimport msdfFrag from './shader/msdf.mjs';\nimport msdfVert from './shader/msdf2.mjs';\nimport './utils/index.mjs';\nimport { splitTextToCharacters } from './utils/splitTextToCharacters.mjs';\nimport { extractCharCode } from './utils/extractCharCode.mjs';\n\nconst pageMeshDataDefaultPageMeshData = [];\nconst pageMeshDataMSDFPageMeshData = [];\nconst charRenderDataPool = [];\nconst _BitmapText = class extends Container {\n constructor(text, style = {}) {\n super();\n const { align, tint, maxWidth, letterSpacing, fontName, fontSize } = Object.assign({}, _BitmapText.styleDefaults, style);\n if (!BitmapFont.available[fontName]) {\n throw new Error(`Missing BitmapFont \"${fontName}\"`);\n }\n this._activePagesMeshData = [];\n this._textWidth = 0;\n this._textHeight = 0;\n this._align = align;\n this._tintColor = new Color(tint);\n this._font = void 0;\n this._fontName = fontName;\n this._fontSize = fontSize;\n this.text = text;\n this._maxWidth = maxWidth;\n this._maxLineHeight = 0;\n this._letterSpacing = letterSpacing;\n this._anchor = new ObservablePoint(() => {\n this.dirty = true;\n }, this, 0, 0);\n this._roundPixels = settings.ROUND_PIXELS;\n this.dirty = true;\n this._resolution = settings.RESOLUTION;\n this._autoResolution = true;\n this._textureCache = {};\n }\n updateText() {\n const data = BitmapFont.available[this._fontName];\n const fontSize = this.fontSize;\n const scale = fontSize / data.size;\n const pos = new Point();\n const chars = [];\n const lineWidths = [];\n const lineSpaces = [];\n const text = this._text.replace(/(?:\\r\\n|\\r)/g, \"\\n\") || \" \";\n const charsInput = splitTextToCharacters(text);\n const maxWidth = this._maxWidth * data.size / fontSize;\n const pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n let prevCharCode = null;\n let lastLineWidth = 0;\n let maxLineWidth = 0;\n let line = 0;\n let lastBreakPos = -1;\n let lastBreakWidth = 0;\n let spacesRemoved = 0;\n let maxLineHeight = 0;\n let spaceCount = 0;\n for (let i = 0; i < charsInput.length; i++) {\n const char = charsInput[i];\n const charCode = extractCharCode(char);\n if (/(?:\\s)/.test(char)) {\n lastBreakPos = i;\n lastBreakWidth = lastLineWidth;\n spaceCount++;\n }\n if (char === \"\\r\" || char === \"\\n\") {\n lineWidths.push(lastLineWidth);\n lineSpaces.push(-1);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n ++line;\n ++spacesRemoved;\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n spaceCount = 0;\n continue;\n }\n const charData = data.chars[charCode];\n if (!charData) {\n continue;\n }\n if (prevCharCode && charData.kerning[prevCharCode]) {\n pos.x += charData.kerning[prevCharCode];\n }\n const charRenderData = charRenderDataPool.pop() || {\n texture: Texture.EMPTY,\n line: 0,\n charCode: 0,\n prevSpaces: 0,\n position: new Point()\n };\n charRenderData.texture = charData.texture;\n charRenderData.line = line;\n charRenderData.charCode = charCode;\n charRenderData.position.x = Math.round(pos.x + charData.xOffset + this._letterSpacing / 2);\n charRenderData.position.y = Math.round(pos.y + charData.yOffset);\n charRenderData.prevSpaces = spaceCount;\n chars.push(charRenderData);\n lastLineWidth = charRenderData.position.x + Math.max(charData.xAdvance - charData.xOffset, charData.texture.orig.width);\n pos.x += charData.xAdvance + this._letterSpacing;\n maxLineHeight = Math.max(maxLineHeight, charData.yOffset + charData.texture.height);\n prevCharCode = charCode;\n if (lastBreakPos !== -1 && maxWidth > 0 && pos.x > maxWidth) {\n ++spacesRemoved;\n utils.removeItems(chars, 1 + lastBreakPos - spacesRemoved, 1 + i - lastBreakPos);\n i = lastBreakPos;\n lastBreakPos = -1;\n lineWidths.push(lastBreakWidth);\n lineSpaces.push(chars.length > 0 ? chars[chars.length - 1].prevSpaces : 0);\n maxLineWidth = Math.max(maxLineWidth, lastBreakWidth);\n line++;\n pos.x = 0;\n pos.y += data.lineHeight;\n prevCharCode = null;\n spaceCount = 0;\n }\n }\n const lastChar = charsInput[charsInput.length - 1];\n if (lastChar !== \"\\r\" && lastChar !== \"\\n\") {\n if (/(?:\\s)/.test(lastChar)) {\n lastLineWidth = lastBreakWidth;\n }\n lineWidths.push(lastLineWidth);\n maxLineWidth = Math.max(maxLineWidth, lastLineWidth);\n lineSpaces.push(-1);\n }\n const lineAlignOffsets = [];\n for (let i = 0; i <= line; i++) {\n let alignOffset = 0;\n if (this._align === \"right\") {\n alignOffset = maxLineWidth - lineWidths[i];\n } else if (this._align === \"center\") {\n alignOffset = (maxLineWidth - lineWidths[i]) / 2;\n } else if (this._align === \"justify\") {\n alignOffset = lineSpaces[i] < 0 ? 0 : (maxLineWidth - lineWidths[i]) / lineSpaces[i];\n }\n lineAlignOffsets.push(alignOffset);\n }\n const lenChars = chars.length;\n const pagesMeshData = {};\n const newPagesMeshData = [];\n const activePagesMeshData = this._activePagesMeshData;\n pageMeshDataPool.push(...activePagesMeshData);\n for (let i = 0; i < lenChars; i++) {\n const texture = chars[i].texture;\n const baseTextureUid = texture.baseTexture.uid;\n if (!pagesMeshData[baseTextureUid]) {\n let pageMeshData = pageMeshDataPool.pop();\n if (!pageMeshData) {\n const geometry = new MeshGeometry();\n let material;\n let meshBlendMode;\n if (data.distanceFieldType === \"none\") {\n material = new MeshMaterial(Texture.EMPTY);\n meshBlendMode = BLEND_MODES.NORMAL;\n } else {\n material = new MeshMaterial(Texture.EMPTY, { program: Program.from(msdfVert, msdfFrag), uniforms: { uFWidth: 0 } });\n meshBlendMode = BLEND_MODES.NORMAL_NPM;\n }\n const mesh = new Mesh(geometry, material);\n mesh.blendMode = meshBlendMode;\n pageMeshData = {\n index: 0,\n indexCount: 0,\n vertexCount: 0,\n uvsCount: 0,\n total: 0,\n mesh,\n vertices: null,\n uvs: null,\n indices: null\n };\n }\n pageMeshData.index = 0;\n pageMeshData.indexCount = 0;\n pageMeshData.vertexCount = 0;\n pageMeshData.uvsCount = 0;\n pageMeshData.total = 0;\n const { _textureCache } = this;\n _textureCache[baseTextureUid] = _textureCache[baseTextureUid] || new Texture(texture.baseTexture);\n pageMeshData.mesh.texture = _textureCache[baseTextureUid];\n pageMeshData.mesh.tint = this._tintColor.value;\n newPagesMeshData.push(pageMeshData);\n pagesMeshData[baseTextureUid] = pageMeshData;\n }\n pagesMeshData[baseTextureUid].total++;\n }\n for (let i = 0; i < activePagesMeshData.length; i++) {\n if (!newPagesMeshData.includes(activePagesMeshData[i])) {\n this.removeChild(activePagesMeshData[i].mesh);\n }\n }\n for (let i = 0; i < newPagesMeshData.length; i++) {\n if (newPagesMeshData[i].mesh.parent !== this) {\n this.addChild(newPagesMeshData[i].mesh);\n }\n }\n this._activePagesMeshData = newPagesMeshData;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n const total = pageMeshData.total;\n if (!(pageMeshData.indices?.length > 6 * total) || pageMeshData.vertices.length < Mesh.BATCHABLE_SIZE * 2) {\n pageMeshData.vertices = new Float32Array(4 * 2 * total);\n pageMeshData.uvs = new Float32Array(4 * 2 * total);\n pageMeshData.indices = new Uint16Array(6 * total);\n } else {\n const total2 = pageMeshData.total;\n const vertices = pageMeshData.vertices;\n for (let i2 = total2 * 4 * 2; i2 < vertices.length; i2++) {\n vertices[i2] = 0;\n }\n }\n pageMeshData.mesh.size = 6 * total;\n }\n for (let i = 0; i < lenChars; i++) {\n const char = chars[i];\n let offset = char.position.x + lineAlignOffsets[char.line] * (this._align === \"justify\" ? char.prevSpaces : 1);\n if (this._roundPixels) {\n offset = Math.round(offset);\n }\n const xPos = offset * scale;\n const yPos = char.position.y * scale;\n const texture = char.texture;\n const pageMesh = pagesMeshData[texture.baseTexture.uid];\n const textureFrame = texture.frame;\n const textureUvs = texture._uvs;\n const index = pageMesh.index++;\n pageMesh.indices[index * 6 + 0] = 0 + index * 4;\n pageMesh.indices[index * 6 + 1] = 1 + index * 4;\n pageMesh.indices[index * 6 + 2] = 2 + index * 4;\n pageMesh.indices[index * 6 + 3] = 0 + index * 4;\n pageMesh.indices[index * 6 + 4] = 2 + index * 4;\n pageMesh.indices[index * 6 + 5] = 3 + index * 4;\n pageMesh.vertices[index * 8 + 0] = xPos;\n pageMesh.vertices[index * 8 + 1] = yPos;\n pageMesh.vertices[index * 8 + 2] = xPos + textureFrame.width * scale;\n pageMesh.vertices[index * 8 + 3] = yPos;\n pageMesh.vertices[index * 8 + 4] = xPos + textureFrame.width * scale;\n pageMesh.vertices[index * 8 + 5] = yPos + textureFrame.height * scale;\n pageMesh.vertices[index * 8 + 6] = xPos;\n pageMesh.vertices[index * 8 + 7] = yPos + textureFrame.height * scale;\n pageMesh.uvs[index * 8 + 0] = textureUvs.x0;\n pageMesh.uvs[index * 8 + 1] = textureUvs.y0;\n pageMesh.uvs[index * 8 + 2] = textureUvs.x1;\n pageMesh.uvs[index * 8 + 3] = textureUvs.y1;\n pageMesh.uvs[index * 8 + 4] = textureUvs.x2;\n pageMesh.uvs[index * 8 + 5] = textureUvs.y2;\n pageMesh.uvs[index * 8 + 6] = textureUvs.x3;\n pageMesh.uvs[index * 8 + 7] = textureUvs.y3;\n }\n this._textWidth = maxLineWidth * scale;\n this._textHeight = (pos.y + data.lineHeight) * scale;\n for (const i in pagesMeshData) {\n const pageMeshData = pagesMeshData[i];\n if (this.anchor.x !== 0 || this.anchor.y !== 0) {\n let vertexCount = 0;\n const anchorOffsetX = this._textWidth * this.anchor.x;\n const anchorOffsetY = this._textHeight * this.anchor.y;\n for (let i2 = 0; i2 < pageMeshData.total; i2++) {\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetX;\n pageMeshData.vertices[vertexCount++] -= anchorOffsetY;\n }\n }\n this._maxLineHeight = maxLineHeight * scale;\n const vertexBuffer = pageMeshData.mesh.geometry.getBuffer(\"aVertexPosition\");\n const textureBuffer = pageMeshData.mesh.geometry.getBuffer(\"aTextureCoord\");\n const indexBuffer = pageMeshData.mesh.geometry.getIndex();\n vertexBuffer.data = pageMeshData.vertices;\n textureBuffer.data = pageMeshData.uvs;\n indexBuffer.data = pageMeshData.indices;\n vertexBuffer.update();\n textureBuffer.update();\n indexBuffer.update();\n }\n for (let i = 0; i < chars.length; i++) {\n charRenderDataPool.push(chars[i]);\n }\n this._font = data;\n this.dirty = false;\n }\n updateTransform() {\n this.validate();\n this.containerUpdateTransform();\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n const { distanceFieldRange, distanceFieldType, size } = BitmapFont.available[this._fontName];\n if (distanceFieldType !== \"none\") {\n const { a, b, c, d } = this.worldTransform;\n const dx = Math.sqrt(a * a + b * b);\n const dy = Math.sqrt(c * c + d * d);\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n const fontScale = this.fontSize / size;\n const resolution = renderer._view.resolution;\n for (const mesh of this._activePagesMeshData) {\n mesh.mesh.shader.uniforms.uFWidth = worldScale * distanceFieldRange * fontScale * resolution;\n }\n }\n super._render(renderer);\n }\n getLocalBounds() {\n this.validate();\n return super.getLocalBounds();\n }\n validate() {\n const font = BitmapFont.available[this._fontName];\n if (!font) {\n throw new Error(`Missing BitmapFont \"${this._fontName}\"`);\n }\n if (this._font !== font) {\n this.dirty = true;\n }\n if (this.dirty) {\n this.updateText();\n }\n }\n get tint() {\n return this._tintColor.value;\n }\n set tint(value) {\n if (this.tint === value)\n return;\n this._tintColor.setValue(value);\n for (let i = 0; i < this._activePagesMeshData.length; i++) {\n this._activePagesMeshData[i].mesh.tint = value;\n }\n }\n get align() {\n return this._align;\n }\n set align(value) {\n if (this._align !== value) {\n this._align = value;\n this.dirty = true;\n }\n }\n get fontName() {\n return this._fontName;\n }\n set fontName(value) {\n if (!BitmapFont.available[value]) {\n throw new Error(`Missing BitmapFont \"${value}\"`);\n }\n if (this._fontName !== value) {\n this._fontName = value;\n this.dirty = true;\n }\n }\n get fontSize() {\n return this._fontSize ?? BitmapFont.available[this._fontName].size;\n }\n set fontSize(value) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirty = true;\n }\n }\n get anchor() {\n return this._anchor;\n }\n set anchor(value) {\n if (typeof value === \"number\") {\n this._anchor.set(value);\n } else {\n this._anchor.copyFrom(value);\n }\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === null || text === void 0 ? \"\" : text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get maxWidth() {\n return this._maxWidth;\n }\n set maxWidth(value) {\n if (this._maxWidth === value) {\n return;\n }\n this._maxWidth = value;\n this.dirty = true;\n }\n get maxLineHeight() {\n this.validate();\n return this._maxLineHeight;\n }\n get textWidth() {\n this.validate();\n return this._textWidth;\n }\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(value) {\n if (this._letterSpacing !== value) {\n this._letterSpacing = value;\n this.dirty = true;\n }\n }\n get roundPixels() {\n return this._roundPixels;\n }\n set roundPixels(value) {\n if (value !== this._roundPixels) {\n this._roundPixels = value;\n this.dirty = true;\n }\n }\n get textHeight() {\n this.validate();\n return this._textHeight;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n destroy(options) {\n const { _textureCache } = this;\n const data = BitmapFont.available[this._fontName];\n const pageMeshDataPool = data.distanceFieldType === \"none\" ? pageMeshDataDefaultPageMeshData : pageMeshDataMSDFPageMeshData;\n pageMeshDataPool.push(...this._activePagesMeshData);\n for (const pageMeshData of this._activePagesMeshData) {\n this.removeChild(pageMeshData.mesh);\n }\n this._activePagesMeshData = [];\n pageMeshDataPool.filter((page) => _textureCache[page.mesh.texture.baseTexture.uid]).forEach((page) => {\n page.mesh.texture = Texture.EMPTY;\n });\n for (const id in _textureCache) {\n const texture = _textureCache[id];\n texture.destroy();\n delete _textureCache[id];\n }\n this._font = null;\n this._tintColor = null;\n this._textureCache = null;\n super.destroy(options);\n }\n};\nlet BitmapText = _BitmapText;\nBitmapText.styleDefaults = {\n align: \"left\",\n tint: 16777215,\n maxWidth: 0,\n letterSpacing: 0\n};\n\nexport { BitmapText };\n//# sourceMappingURL=BitmapText.mjs.map\n","var msdfVert = \"// Mesh material default fragment\\r\\nattribute vec2 aVertexPosition;\\r\\nattribute vec2 aTextureCoord;\\r\\n\\r\\nuniform mat3 projectionMatrix;\\r\\nuniform mat3 translationMatrix;\\r\\nuniform mat3 uTextureMatrix;\\r\\n\\r\\nvarying vec2 vTextureCoord;\\r\\n\\r\\nvoid main(void)\\r\\n{\\r\\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\\r\\n\\r\\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\\r\\n}\\r\\n\";\n\nexport { msdfVert as default };\n//# sourceMappingURL=msdf2.mjs.map\n","var msdfFrag = \"// Pixi texture info\\r\\nvarying vec2 vTextureCoord;\\r\\nuniform sampler2D uSampler;\\r\\n\\r\\n// Tint\\r\\nuniform vec4 uColor;\\r\\n\\r\\n// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\\r\\nuniform float uFWidth;\\r\\n\\r\\nvoid main(void) {\\r\\n\\r\\n // To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\\r\\n vec4 texColor = texture2D(uSampler, vTextureCoord);\\r\\n\\r\\n // MSDF\\r\\n float median = texColor.r + texColor.g + texColor.b -\\r\\n min(texColor.r, min(texColor.g, texColor.b)) -\\r\\n max(texColor.r, max(texColor.g, texColor.b));\\r\\n // SDF\\r\\n median = min(median, texColor.a);\\r\\n\\r\\n float screenPxDistance = uFWidth * (median - 0.5);\\r\\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\\r\\n if (median < 0.01) {\\r\\n alpha = 0.0;\\r\\n } else if (median > 0.99) {\\r\\n alpha = 1.0;\\r\\n }\\r\\n\\r\\n // Gamma correction for coverage-like alpha\\r\\n float luma = dot(uColor.rgb, vec3(0.299, 0.587, 0.114));\\r\\n float gamma = mix(1.0, 1.0 / 2.2, luma);\\r\\n float coverage = pow(uColor.a * alpha, gamma); \\r\\n\\r\\n // NPM Textures, NPM outputs\\r\\n gl_FragColor = vec4(uColor.rgb, coverage);\\r\\n}\\r\\n\";\n\nexport { msdfFrag as default };\n//# sourceMappingURL=msdf.mjs.map\n","import { LoaderParserPriority, copySearchParams } from '@pixi/assets';\nimport { ExtensionType, utils, settings, extensions } from '@pixi/core';\nimport { BitmapFont } from './BitmapFont.mjs';\nimport './formats/index.mjs';\nimport { TextFormat } from './formats/TextFormat.mjs';\nimport { XMLStringFormat } from './formats/XMLStringFormat.mjs';\n\nconst validExtensions = [\".xml\", \".fnt\"];\nconst loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n name: \"loadBitmapFont\",\n test(url) {\n return validExtensions.includes(utils.path.extname(url).toLowerCase());\n },\n async testParse(data) {\n return TextFormat.test(data) || XMLStringFormat.test(data);\n },\n async parse(asset, data, loader) {\n const fontData = TextFormat.test(asset) ? TextFormat.parse(asset) : XMLStringFormat.parse(asset);\n const { src } = data;\n const { page: pages } = fontData;\n const textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n let imagePath = utils.path.join(utils.path.dirname(src), pageFile);\n imagePath = copySearchParams(imagePath, src);\n textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n return BitmapFont.install(fontData, textures, true);\n },\n async load(url, _options) {\n const response = await settings.ADAPTER.fetch(url);\n return response.text();\n },\n unload(bitmapFont) {\n bitmapFont.destroy();\n }\n};\nextensions.add(loadBitmapFont);\n\nexport { loadBitmapFont };\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","var TEXT_GRADIENT = /* @__PURE__ */ ((TEXT_GRADIENT2) => {\n TEXT_GRADIENT2[TEXT_GRADIENT2[\"LINEAR_VERTICAL\"] = 0] = \"LINEAR_VERTICAL\";\n TEXT_GRADIENT2[TEXT_GRADIENT2[\"LINEAR_HORIZONTAL\"] = 1] = \"LINEAR_HORIZONTAL\";\n return TEXT_GRADIENT2;\n})(TEXT_GRADIENT || {});\n\nexport { TEXT_GRADIENT };\n//# sourceMappingURL=const.mjs.map\n","import { settings } from '@pixi/core';\n\nconst contextSettings = {\n willReadFrequently: true\n};\nconst _TextMetrics = class {\n static get experimentalLetterSpacingSupported() {\n let result = _TextMetrics._experimentalLetterSpacingSupported;\n if (result !== void 0) {\n const proto = settings.ADAPTER.getCanvasRenderingContext2D().prototype;\n result = _TextMetrics._experimentalLetterSpacingSupported = \"letterSpacing\" in proto || \"textLetterSpacing\" in proto;\n }\n return result;\n }\n constructor(text, style, width, height, lines, lineWidths, lineHeight, maxLineWidth, fontProperties) {\n this.text = text;\n this.style = style;\n this.width = width;\n this.height = height;\n this.lines = lines;\n this.lineWidths = lineWidths;\n this.lineHeight = lineHeight;\n this.maxLineWidth = maxLineWidth;\n this.fontProperties = fontProperties;\n }\n static measureText(text, style, wordWrap, canvas = _TextMetrics._canvas) {\n wordWrap = wordWrap === void 0 || wordWrap === null ? style.wordWrap : wordWrap;\n const font = style.toFontString();\n const fontProperties = _TextMetrics.measureFont(font);\n if (fontProperties.fontSize === 0) {\n fontProperties.fontSize = style.fontSize;\n fontProperties.ascent = style.fontSize;\n }\n const context = canvas.getContext(\"2d\", contextSettings);\n context.font = font;\n const outputText = wordWrap ? _TextMetrics.wordWrap(text, style, canvas) : text;\n const lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n const lineWidths = new Array(lines.length);\n let maxLineWidth = 0;\n for (let i = 0; i < lines.length; i++) {\n const lineWidth = _TextMetrics._measureText(lines[i], style.letterSpacing, context);\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n let width = maxLineWidth + style.strokeThickness;\n if (style.dropShadow) {\n width += style.dropShadowDistance;\n }\n const lineHeight = style.lineHeight || fontProperties.fontSize + style.strokeThickness;\n let height = Math.max(lineHeight, fontProperties.fontSize + style.strokeThickness * 2) + (lines.length - 1) * (lineHeight + style.leading);\n if (style.dropShadow) {\n height += style.dropShadowDistance;\n }\n return new _TextMetrics(text, style, width, height, lines, lineWidths, lineHeight + style.leading, maxLineWidth, fontProperties);\n }\n static _measureText(text, letterSpacing, context) {\n let useExperimentalLetterSpacing = false;\n if (_TextMetrics.experimentalLetterSpacingSupported) {\n if (_TextMetrics.experimentalLetterSpacing) {\n context.letterSpacing = `${letterSpacing}px`;\n context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n } else {\n context.letterSpacing = \"0px\";\n context.textLetterSpacing = \"0px\";\n }\n }\n let width = context.measureText(text).width;\n if (width > 0) {\n if (useExperimentalLetterSpacing) {\n width -= letterSpacing;\n } else {\n width += (_TextMetrics.graphemeSegmenter(text).length - 1) * letterSpacing;\n }\n }\n return width;\n }\n static wordWrap(text, style, canvas = _TextMetrics._canvas) {\n const context = canvas.getContext(\"2d\", contextSettings);\n let width = 0;\n let line = \"\";\n let lines = \"\";\n const cache = /* @__PURE__ */ Object.create(null);\n const { letterSpacing, whiteSpace } = style;\n const collapseSpaces = _TextMetrics.collapseSpaces(whiteSpace);\n const collapseNewlines = _TextMetrics.collapseNewlines(whiteSpace);\n let canPrependSpaces = !collapseSpaces;\n const wordWrapWidth = style.wordWrapWidth + letterSpacing;\n const tokens = _TextMetrics.tokenize(text);\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (_TextMetrics.isNewline(token)) {\n if (!collapseNewlines) {\n lines += _TextMetrics.addLine(line);\n canPrependSpaces = !collapseSpaces;\n line = \"\";\n width = 0;\n continue;\n }\n token = \" \";\n }\n if (collapseSpaces) {\n const currIsBreakingSpace = _TextMetrics.isBreakingSpace(token);\n const lastIsBreakingSpace = _TextMetrics.isBreakingSpace(line[line.length - 1]);\n if (currIsBreakingSpace && lastIsBreakingSpace) {\n continue;\n }\n }\n const tokenWidth = _TextMetrics.getFromCache(token, letterSpacing, cache, context);\n if (tokenWidth > wordWrapWidth) {\n if (line !== \"\") {\n lines += _TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n if (_TextMetrics.canBreakWords(token, style.breakWords)) {\n const characters = _TextMetrics.wordWrapSplit(token);\n for (let j = 0; j < characters.length; j++) {\n let char = characters[j];\n let lastChar = char;\n let k = 1;\n while (characters[j + k]) {\n const nextChar = characters[j + k];\n if (!_TextMetrics.canBreakChars(lastChar, nextChar, token, j, style.breakWords)) {\n char += nextChar;\n } else {\n break;\n }\n lastChar = nextChar;\n k++;\n }\n j += k - 1;\n const characterWidth = _TextMetrics.getFromCache(char, letterSpacing, cache, context);\n if (characterWidth + width > wordWrapWidth) {\n lines += _TextMetrics.addLine(line);\n canPrependSpaces = false;\n line = \"\";\n width = 0;\n }\n line += char;\n width += characterWidth;\n }\n } else {\n if (line.length > 0) {\n lines += _TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n const isLastToken = i === tokens.length - 1;\n lines += _TextMetrics.addLine(token, !isLastToken);\n canPrependSpaces = false;\n line = \"\";\n width = 0;\n }\n } else {\n if (tokenWidth + width > wordWrapWidth) {\n canPrependSpaces = false;\n lines += _TextMetrics.addLine(line);\n line = \"\";\n width = 0;\n }\n if (line.length > 0 || !_TextMetrics.isBreakingSpace(token) || canPrependSpaces) {\n line += token;\n width += tokenWidth;\n }\n }\n }\n lines += _TextMetrics.addLine(line, false);\n return lines;\n }\n static addLine(line, newLine = true) {\n line = _TextMetrics.trimRight(line);\n line = newLine ? `${line}\n` : line;\n return line;\n }\n static getFromCache(key, letterSpacing, cache, context) {\n let width = cache[key];\n if (typeof width !== \"number\") {\n width = _TextMetrics._measureText(key, letterSpacing, context) + letterSpacing;\n cache[key] = width;\n }\n return width;\n }\n static collapseSpaces(whiteSpace) {\n return whiteSpace === \"normal\" || whiteSpace === \"pre-line\";\n }\n static collapseNewlines(whiteSpace) {\n return whiteSpace === \"normal\";\n }\n static trimRight(text) {\n if (typeof text !== \"string\") {\n return \"\";\n }\n for (let i = text.length - 1; i >= 0; i--) {\n const char = text[i];\n if (!_TextMetrics.isBreakingSpace(char)) {\n break;\n }\n text = text.slice(0, -1);\n }\n return text;\n }\n static isNewline(char) {\n if (typeof char !== \"string\") {\n return false;\n }\n return _TextMetrics._newlines.includes(char.charCodeAt(0));\n }\n static isBreakingSpace(char, _nextChar) {\n if (typeof char !== \"string\") {\n return false;\n }\n return _TextMetrics._breakingSpaces.includes(char.charCodeAt(0));\n }\n static tokenize(text) {\n const tokens = [];\n let token = \"\";\n if (typeof text !== \"string\") {\n return tokens;\n }\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n const nextChar = text[i + 1];\n if (_TextMetrics.isBreakingSpace(char, nextChar) || _TextMetrics.isNewline(char)) {\n if (token !== \"\") {\n tokens.push(token);\n token = \"\";\n }\n tokens.push(char);\n continue;\n }\n token += char;\n }\n if (token !== \"\") {\n tokens.push(token);\n }\n return tokens;\n }\n static canBreakWords(_token, breakWords) {\n return breakWords;\n }\n static canBreakChars(_char, _nextChar, _token, _index, _breakWords) {\n return true;\n }\n static wordWrapSplit(token) {\n return _TextMetrics.graphemeSegmenter(token);\n }\n static measureFont(font) {\n if (_TextMetrics._fonts[font]) {\n return _TextMetrics._fonts[font];\n }\n const properties = {\n ascent: 0,\n descent: 0,\n fontSize: 0\n };\n const canvas = _TextMetrics._canvas;\n const context = _TextMetrics._context;\n context.font = font;\n const metricsString = _TextMetrics.METRICS_STRING + _TextMetrics.BASELINE_SYMBOL;\n const width = Math.ceil(context.measureText(metricsString).width);\n let baseline = Math.ceil(context.measureText(_TextMetrics.BASELINE_SYMBOL).width);\n const height = Math.ceil(_TextMetrics.HEIGHT_MULTIPLIER * baseline);\n baseline = baseline * _TextMetrics.BASELINE_MULTIPLIER | 0;\n if (width === 0 || height === 0) {\n _TextMetrics._fonts[font] = properties;\n return properties;\n }\n canvas.width = width;\n canvas.height = height;\n context.fillStyle = \"#f00\";\n context.fillRect(0, 0, width, height);\n context.font = font;\n context.textBaseline = \"alphabetic\";\n context.fillStyle = \"#000\";\n context.fillText(metricsString, 0, baseline);\n const imagedata = context.getImageData(0, 0, width, height).data;\n const pixels = imagedata.length;\n const line = width * 4;\n let i = 0;\n let idx = 0;\n let stop = false;\n for (i = 0; i < baseline; ++i) {\n for (let j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx += line;\n } else {\n break;\n }\n }\n properties.ascent = baseline - i;\n idx = pixels - line;\n stop = false;\n for (i = height; i > baseline; --i) {\n for (let j = 0; j < line; j += 4) {\n if (imagedata[idx + j] !== 255) {\n stop = true;\n break;\n }\n }\n if (!stop) {\n idx -= line;\n } else {\n break;\n }\n }\n properties.descent = i - baseline;\n properties.fontSize = properties.ascent + properties.descent;\n _TextMetrics._fonts[font] = properties;\n return properties;\n }\n static clearMetrics(font = \"\") {\n if (font) {\n delete _TextMetrics._fonts[font];\n } else {\n _TextMetrics._fonts = {};\n }\n }\n static get _canvas() {\n if (!_TextMetrics.__canvas) {\n let canvas;\n try {\n const c = new OffscreenCanvas(0, 0);\n const context = c.getContext(\"2d\", contextSettings);\n if (context?.measureText) {\n _TextMetrics.__canvas = c;\n return c;\n }\n canvas = settings.ADAPTER.createCanvas();\n } catch (ex) {\n canvas = settings.ADAPTER.createCanvas();\n }\n canvas.width = canvas.height = 10;\n _TextMetrics.__canvas = canvas;\n }\n return _TextMetrics.__canvas;\n }\n static get _context() {\n if (!_TextMetrics.__context) {\n _TextMetrics.__context = _TextMetrics._canvas.getContext(\"2d\", contextSettings);\n }\n return _TextMetrics.__context;\n }\n};\nlet TextMetrics = _TextMetrics;\nTextMetrics.METRICS_STRING = \"|\\xC9q\\xC5\";\nTextMetrics.BASELINE_SYMBOL = \"M\";\nTextMetrics.BASELINE_MULTIPLIER = 1.4;\nTextMetrics.HEIGHT_MULTIPLIER = 2;\nTextMetrics.graphemeSegmenter = (() => {\n if (typeof Intl?.Segmenter === \"function\") {\n const segmenter = new Intl.Segmenter();\n return (s) => [...segmenter.segment(s)].map((x) => x.segment);\n }\n return (s) => [...s];\n})();\nTextMetrics.experimentalLetterSpacing = false;\nTextMetrics._fonts = {};\nTextMetrics._newlines = [\n 10,\n 13\n];\nTextMetrics._breakingSpaces = [\n 9,\n 32,\n 8192,\n 8193,\n 8194,\n 8195,\n 8196,\n 8197,\n 8198,\n 8200,\n 8201,\n 8202,\n 8287,\n 12288\n];\n\nexport { TextMetrics };\n//# sourceMappingURL=TextMetrics.mjs.map\n","import { TEXT_GRADIENT } from './const.mjs';\nimport { Color } from '@pixi/core';\n\nconst genericFontFamilies = [\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\"\n];\nconst _TextStyle = class {\n constructor(style) {\n this.styleID = 0;\n this.reset();\n deepCopyProperties(this, style, style);\n }\n clone() {\n const clonedProperties = {};\n deepCopyProperties(clonedProperties, this, _TextStyle.defaultStyle);\n return new _TextStyle(clonedProperties);\n }\n reset() {\n deepCopyProperties(this, _TextStyle.defaultStyle, _TextStyle.defaultStyle);\n }\n get align() {\n return this._align;\n }\n set align(align) {\n if (this._align !== align) {\n this._align = align;\n this.styleID++;\n }\n }\n get breakWords() {\n return this._breakWords;\n }\n set breakWords(breakWords) {\n if (this._breakWords !== breakWords) {\n this._breakWords = breakWords;\n this.styleID++;\n }\n }\n get dropShadow() {\n return this._dropShadow;\n }\n set dropShadow(dropShadow) {\n if (this._dropShadow !== dropShadow) {\n this._dropShadow = dropShadow;\n this.styleID++;\n }\n }\n get dropShadowAlpha() {\n return this._dropShadowAlpha;\n }\n set dropShadowAlpha(dropShadowAlpha) {\n if (this._dropShadowAlpha !== dropShadowAlpha) {\n this._dropShadowAlpha = dropShadowAlpha;\n this.styleID++;\n }\n }\n get dropShadowAngle() {\n return this._dropShadowAngle;\n }\n set dropShadowAngle(dropShadowAngle) {\n if (this._dropShadowAngle !== dropShadowAngle) {\n this._dropShadowAngle = dropShadowAngle;\n this.styleID++;\n }\n }\n get dropShadowBlur() {\n return this._dropShadowBlur;\n }\n set dropShadowBlur(dropShadowBlur) {\n if (this._dropShadowBlur !== dropShadowBlur) {\n this._dropShadowBlur = dropShadowBlur;\n this.styleID++;\n }\n }\n get dropShadowColor() {\n return this._dropShadowColor;\n }\n set dropShadowColor(dropShadowColor) {\n const outputColor = getColor(dropShadowColor);\n if (this._dropShadowColor !== outputColor) {\n this._dropShadowColor = outputColor;\n this.styleID++;\n }\n }\n get dropShadowDistance() {\n return this._dropShadowDistance;\n }\n set dropShadowDistance(dropShadowDistance) {\n if (this._dropShadowDistance !== dropShadowDistance) {\n this._dropShadowDistance = dropShadowDistance;\n this.styleID++;\n }\n }\n get fill() {\n return this._fill;\n }\n set fill(fill) {\n const outputColor = getColor(fill);\n if (this._fill !== outputColor) {\n this._fill = outputColor;\n this.styleID++;\n }\n }\n get fillGradientType() {\n return this._fillGradientType;\n }\n set fillGradientType(fillGradientType) {\n if (this._fillGradientType !== fillGradientType) {\n this._fillGradientType = fillGradientType;\n this.styleID++;\n }\n }\n get fillGradientStops() {\n return this._fillGradientStops;\n }\n set fillGradientStops(fillGradientStops) {\n if (!areArraysEqual(this._fillGradientStops, fillGradientStops)) {\n this._fillGradientStops = fillGradientStops;\n this.styleID++;\n }\n }\n get fontFamily() {\n return this._fontFamily;\n }\n set fontFamily(fontFamily) {\n if (this.fontFamily !== fontFamily) {\n this._fontFamily = fontFamily;\n this.styleID++;\n }\n }\n get fontSize() {\n return this._fontSize;\n }\n set fontSize(fontSize) {\n if (this._fontSize !== fontSize) {\n this._fontSize = fontSize;\n this.styleID++;\n }\n }\n get fontStyle() {\n return this._fontStyle;\n }\n set fontStyle(fontStyle) {\n if (this._fontStyle !== fontStyle) {\n this._fontStyle = fontStyle;\n this.styleID++;\n }\n }\n get fontVariant() {\n return this._fontVariant;\n }\n set fontVariant(fontVariant) {\n if (this._fontVariant !== fontVariant) {\n this._fontVariant = fontVariant;\n this.styleID++;\n }\n }\n get fontWeight() {\n return this._fontWeight;\n }\n set fontWeight(fontWeight) {\n if (this._fontWeight !== fontWeight) {\n this._fontWeight = fontWeight;\n this.styleID++;\n }\n }\n get letterSpacing() {\n return this._letterSpacing;\n }\n set letterSpacing(letterSpacing) {\n if (this._letterSpacing !== letterSpacing) {\n this._letterSpacing = letterSpacing;\n this.styleID++;\n }\n }\n get lineHeight() {\n return this._lineHeight;\n }\n set lineHeight(lineHeight) {\n if (this._lineHeight !== lineHeight) {\n this._lineHeight = lineHeight;\n this.styleID++;\n }\n }\n get leading() {\n return this._leading;\n }\n set leading(leading) {\n if (this._leading !== leading) {\n this._leading = leading;\n this.styleID++;\n }\n }\n get lineJoin() {\n return this._lineJoin;\n }\n set lineJoin(lineJoin) {\n if (this._lineJoin !== lineJoin) {\n this._lineJoin = lineJoin;\n this.styleID++;\n }\n }\n get miterLimit() {\n return this._miterLimit;\n }\n set miterLimit(miterLimit) {\n if (this._miterLimit !== miterLimit) {\n this._miterLimit = miterLimit;\n this.styleID++;\n }\n }\n get padding() {\n return this._padding;\n }\n set padding(padding) {\n if (this._padding !== padding) {\n this._padding = padding;\n this.styleID++;\n }\n }\n get stroke() {\n return this._stroke;\n }\n set stroke(stroke) {\n const outputColor = getColor(stroke);\n if (this._stroke !== outputColor) {\n this._stroke = outputColor;\n this.styleID++;\n }\n }\n get strokeThickness() {\n return this._strokeThickness;\n }\n set strokeThickness(strokeThickness) {\n if (this._strokeThickness !== strokeThickness) {\n this._strokeThickness = strokeThickness;\n this.styleID++;\n }\n }\n get textBaseline() {\n return this._textBaseline;\n }\n set textBaseline(textBaseline) {\n if (this._textBaseline !== textBaseline) {\n this._textBaseline = textBaseline;\n this.styleID++;\n }\n }\n get trim() {\n return this._trim;\n }\n set trim(trim) {\n if (this._trim !== trim) {\n this._trim = trim;\n this.styleID++;\n }\n }\n get whiteSpace() {\n return this._whiteSpace;\n }\n set whiteSpace(whiteSpace) {\n if (this._whiteSpace !== whiteSpace) {\n this._whiteSpace = whiteSpace;\n this.styleID++;\n }\n }\n get wordWrap() {\n return this._wordWrap;\n }\n set wordWrap(wordWrap) {\n if (this._wordWrap !== wordWrap) {\n this._wordWrap = wordWrap;\n this.styleID++;\n }\n }\n get wordWrapWidth() {\n return this._wordWrapWidth;\n }\n set wordWrapWidth(wordWrapWidth) {\n if (this._wordWrapWidth !== wordWrapWidth) {\n this._wordWrapWidth = wordWrapWidth;\n this.styleID++;\n }\n }\n toFontString() {\n const fontSizeString = typeof this.fontSize === \"number\" ? `${this.fontSize}px` : this.fontSize;\n let fontFamilies = this.fontFamily;\n if (!Array.isArray(this.fontFamily)) {\n fontFamilies = this.fontFamily.split(\",\");\n }\n for (let i = fontFamilies.length - 1; i >= 0; i--) {\n let fontFamily = fontFamilies[i].trim();\n if (!/([\\\"\\'])[^\\'\\\"]+\\1/.test(fontFamily) && !genericFontFamilies.includes(fontFamily)) {\n fontFamily = `\"${fontFamily}\"`;\n }\n fontFamilies[i] = fontFamily;\n }\n return `${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${fontSizeString} ${fontFamilies.join(\",\")}`;\n }\n};\nlet TextStyle = _TextStyle;\nTextStyle.defaultStyle = {\n align: \"left\",\n breakWords: false,\n dropShadow: false,\n dropShadowAlpha: 1,\n dropShadowAngle: Math.PI / 6,\n dropShadowBlur: 0,\n dropShadowColor: \"black\",\n dropShadowDistance: 5,\n fill: \"black\",\n fillGradientType: TEXT_GRADIENT.LINEAR_VERTICAL,\n fillGradientStops: [],\n fontFamily: \"Arial\",\n fontSize: 26,\n fontStyle: \"normal\",\n fontVariant: \"normal\",\n fontWeight: \"normal\",\n leading: 0,\n letterSpacing: 0,\n lineHeight: 0,\n lineJoin: \"miter\",\n miterLimit: 10,\n padding: 0,\n stroke: \"black\",\n strokeThickness: 0,\n textBaseline: \"alphabetic\",\n trim: false,\n whiteSpace: \"pre\",\n wordWrap: false,\n wordWrapWidth: 100\n};\nfunction getColor(color) {\n const temp = Color.shared;\n if (!Array.isArray(color)) {\n return temp.setValue(color).toHex();\n } else {\n return color.map((c) => temp.setValue(c).toHex());\n }\n}\nfunction areArraysEqual(array1, array2) {\n if (!Array.isArray(array1) || !Array.isArray(array2)) {\n return false;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction deepCopyProperties(target, source, propertyObj) {\n for (const prop in propertyObj) {\n if (Array.isArray(source[prop])) {\n target[prop] = source[prop].slice();\n } else {\n target[prop] = source[prop];\n }\n }\n}\n\nexport { TextStyle };\n//# sourceMappingURL=TextStyle.mjs.map\n","import { settings, Texture, Rectangle, utils, Color } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\nimport { TEXT_GRADIENT } from './const.mjs';\nimport { TextMetrics } from './TextMetrics.mjs';\nimport { TextStyle } from './TextStyle.mjs';\n\nconst defaultDestroyOptions = {\n texture: true,\n children: false,\n baseTexture: true\n};\nconst _Text = class extends Sprite {\n constructor(text, style, canvas) {\n let ownCanvas = false;\n if (!canvas) {\n canvas = settings.ADAPTER.createCanvas();\n ownCanvas = true;\n }\n canvas.width = 3;\n canvas.height = 3;\n const texture = Texture.from(canvas);\n texture.orig = new Rectangle();\n texture.trim = new Rectangle();\n super(texture);\n this._ownCanvas = ownCanvas;\n this.canvas = canvas;\n this.context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n this._resolution = _Text.defaultResolution ?? settings.RESOLUTION;\n this._autoResolution = _Text.defaultAutoResolution;\n this._text = null;\n this._style = null;\n this._styleListener = null;\n this._font = \"\";\n this.text = text;\n this.style = style;\n this.localStyleID = -1;\n }\n static get experimentalLetterSpacing() {\n return TextMetrics.experimentalLetterSpacing;\n }\n static set experimentalLetterSpacing(value) {\n utils.deprecation(\"7.1.0\", \"Text.experimentalLetterSpacing is deprecated, use TextMetrics.experimentalLetterSpacing\");\n TextMetrics.experimentalLetterSpacing = value;\n }\n updateText(respectDirty) {\n const style = this._style;\n if (this.localStyleID !== style.styleID) {\n this.dirty = true;\n this.localStyleID = style.styleID;\n }\n if (!this.dirty && respectDirty) {\n return;\n }\n this._font = this._style.toFontString();\n const context = this.context;\n const measured = TextMetrics.measureText(this._text || \" \", this._style, this._style.wordWrap, this.canvas);\n const width = measured.width;\n const height = measured.height;\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n this.canvas.width = Math.ceil(Math.ceil(Math.max(1, width) + style.padding * 2) * this._resolution);\n this.canvas.height = Math.ceil(Math.ceil(Math.max(1, height) + style.padding * 2) * this._resolution);\n context.scale(this._resolution, this._resolution);\n context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n context.font = this._font;\n context.lineWidth = style.strokeThickness;\n context.textBaseline = style.textBaseline;\n context.lineJoin = style.lineJoin;\n context.miterLimit = style.miterLimit;\n let linePositionX;\n let linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0;\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0;\n const dsOffsetShadow = dsOffsetText * this._resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\";\n context.strokeStyle = \"black\";\n const dropShadowColor = style.dropShadowColor;\n const dropShadowBlur = style.dropShadowBlur * this._resolution;\n const dropShadowDistance = style.dropShadowDistance * this._resolution;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(style.dropShadowAlpha).toRgbaString();\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(style.dropShadowAngle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(style.dropShadowAngle) * dropShadowDistance + dsOffsetShadow;\n } else {\n context.fillStyle = this._generateFillStyle(style, lines, measured);\n context.strokeStyle = style.stroke;\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n if (lineHeight - fontProperties.fontSize < 0) {\n linePositionYShift = 0;\n }\n for (let i2 = 0; i2 < lines.length; i2++) {\n linePositionX = style.strokeThickness / 2;\n linePositionY = style.strokeThickness / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift;\n if (style.align === \"right\") {\n linePositionX += maxLineWidth - lineWidths[i2];\n } else if (style.align === \"center\") {\n linePositionX += (maxLineWidth - lineWidths[i2]) / 2;\n }\n if (style.stroke && style.strokeThickness) {\n this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText, true);\n }\n if (style.fill) {\n this.drawLetterSpacing(lines[i2], linePositionX + style.padding, linePositionY + style.padding - dsOffsetText);\n }\n }\n }\n this.updateTexture();\n }\n drawLetterSpacing(text, x, y, isStroke = false) {\n const style = this._style;\n const letterSpacing = style.letterSpacing;\n let useExperimentalLetterSpacing = false;\n if (TextMetrics.experimentalLetterSpacingSupported) {\n if (TextMetrics.experimentalLetterSpacing) {\n this.context.letterSpacing = `${letterSpacing}px`;\n this.context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n } else {\n this.context.letterSpacing = \"0px\";\n this.context.textLetterSpacing = \"0px\";\n }\n }\n if (letterSpacing === 0 || useExperimentalLetterSpacing) {\n if (isStroke) {\n this.context.strokeText(text, x, y);\n } else {\n this.context.fillText(text, x, y);\n }\n return;\n }\n let currentPosition = x;\n const stringArray = TextMetrics.graphemeSegmenter(text);\n let previousWidth = this.context.measureText(text).width;\n let currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n if (isStroke) {\n this.context.strokeText(currentChar, currentPosition, y);\n } else {\n this.context.fillText(currentChar, currentPosition, y);\n }\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j) {\n textStr += stringArray[j];\n }\n currentWidth = this.context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n updateTexture() {\n const canvas = this.canvas;\n if (this._style.trim) {\n const trimmed = utils.trimCanvas(canvas);\n if (trimmed.data) {\n canvas.width = trimmed.width;\n canvas.height = trimmed.height;\n this.context.putImageData(trimmed.data, 0, 0);\n }\n }\n const texture = this._texture;\n const style = this._style;\n const padding = style.trim ? 0 : style.padding;\n const baseTexture = texture.baseTexture;\n texture.trim.width = texture._frame.width = canvas.width / this._resolution;\n texture.trim.height = texture._frame.height = canvas.height / this._resolution;\n texture.trim.x = -padding;\n texture.trim.y = -padding;\n texture.orig.width = texture._frame.width - padding * 2;\n texture.orig.height = texture._frame.height - padding * 2;\n this._onTextureUpdate();\n baseTexture.setRealSize(canvas.width, canvas.height, this._resolution);\n texture.updateUvs();\n this.dirty = false;\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n this.updateText(true);\n super._render(renderer);\n }\n updateTransform() {\n this.updateText(true);\n super.updateTransform();\n }\n getBounds(skipUpdate, rect) {\n this.updateText(true);\n if (this._textureID === -1) {\n skipUpdate = false;\n }\n return super.getBounds(skipUpdate, rect);\n }\n getLocalBounds(rect) {\n this.updateText(true);\n return super.getLocalBounds.call(this, rect);\n }\n _calculateBounds() {\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n }\n _generateFillStyle(style, lines, metrics) {\n const fillStyle = style.fill;\n if (!Array.isArray(fillStyle)) {\n return fillStyle;\n } else if (fillStyle.length === 1) {\n return fillStyle[0];\n }\n let gradient;\n const dropShadowCorrection = style.dropShadow ? style.dropShadowDistance : 0;\n const padding = style.padding || 0;\n const width = this.canvas.width / this._resolution - dropShadowCorrection - padding * 2;\n const height = this.canvas.height / this._resolution - dropShadowCorrection - padding * 2;\n const fill = fillStyle.slice();\n const fillGradientStops = style.fillGradientStops.slice();\n if (!fillGradientStops.length) {\n const lengthPlus1 = fill.length + 1;\n for (let i = 1; i < lengthPlus1; ++i) {\n fillGradientStops.push(i / lengthPlus1);\n }\n }\n fill.unshift(fillStyle[0]);\n fillGradientStops.unshift(0);\n fill.push(fillStyle[fillStyle.length - 1]);\n fillGradientStops.push(1);\n if (style.fillGradientType === TEXT_GRADIENT.LINEAR_VERTICAL) {\n gradient = this.context.createLinearGradient(width / 2, padding, width / 2, height + padding);\n const textHeight = metrics.fontProperties.fontSize + style.strokeThickness;\n for (let i = 0; i < lines.length; i++) {\n const lastLineBottom = metrics.lineHeight * (i - 1) + textHeight;\n const thisLineTop = metrics.lineHeight * i;\n let thisLineGradientStart = thisLineTop;\n if (i > 0 && lastLineBottom > thisLineTop) {\n thisLineGradientStart = (thisLineTop + lastLineBottom) / 2;\n }\n const thisLineBottom = thisLineTop + textHeight;\n const nextLineTop = metrics.lineHeight * (i + 1);\n let thisLineGradientEnd = thisLineBottom;\n if (i + 1 < lines.length && nextLineTop < thisLineBottom) {\n thisLineGradientEnd = (thisLineBottom + nextLineTop) / 2;\n }\n const gradStopLineHeight = (thisLineGradientEnd - thisLineGradientStart) / height;\n for (let j = 0; j < fill.length; j++) {\n let lineStop = 0;\n if (typeof fillGradientStops[j] === \"number\") {\n lineStop = fillGradientStops[j];\n } else {\n lineStop = j / fill.length;\n }\n let globalStop = Math.min(1, Math.max(0, thisLineGradientStart / height + lineStop * gradStopLineHeight));\n globalStop = Number(globalStop.toFixed(5));\n gradient.addColorStop(globalStop, fill[j]);\n }\n }\n } else {\n gradient = this.context.createLinearGradient(padding, height / 2, width + padding, height / 2);\n const totalIterations = fill.length + 1;\n let currentIteration = 1;\n for (let i = 0; i < fill.length; i++) {\n let stop;\n if (typeof fillGradientStops[i] === \"number\") {\n stop = fillGradientStops[i];\n } else {\n stop = currentIteration / totalIterations;\n }\n gradient.addColorStop(stop, fill[i]);\n currentIteration++;\n }\n }\n return gradient;\n }\n destroy(options) {\n if (typeof options === \"boolean\") {\n options = { children: options };\n }\n options = Object.assign({}, defaultDestroyOptions, options);\n super.destroy(options);\n if (this._ownCanvas) {\n this.canvas.height = this.canvas.width = 0;\n }\n this.context = null;\n this.canvas = null;\n this._style = null;\n }\n get width() {\n this.updateText(true);\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n set width(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._texture.orig.width;\n this._width = value;\n }\n get height() {\n this.updateText(true);\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n set height(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._texture.orig.height;\n this._height = value;\n }\n get style() {\n return this._style;\n }\n set style(style) {\n style = style || {};\n if (style instanceof TextStyle) {\n this._style = style;\n } else {\n this._style = new TextStyle(style);\n }\n this.localStyleID = -1;\n this.dirty = true;\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === null || text === void 0 ? \"\" : text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n};\nlet Text = _Text;\nText.defaultAutoResolution = true;\n\nexport { Text };\n//# sourceMappingURL=Text.mjs.map\n","var UPDATE_PRIORITY = /* @__PURE__ */ ((UPDATE_PRIORITY2) => {\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"INTERACTION\"] = 50] = \"INTERACTION\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"HIGH\"] = 25] = \"HIGH\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"NORMAL\"] = 0] = \"NORMAL\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"LOW\"] = -25] = \"LOW\";\n UPDATE_PRIORITY2[UPDATE_PRIORITY2[\"UTILITY\"] = -50] = \"UTILITY\";\n return UPDATE_PRIORITY2;\n})(UPDATE_PRIORITY || {});\n\nexport { UPDATE_PRIORITY };\n//# sourceMappingURL=const.mjs.map\n","class TickerListener {\n constructor(fn, context = null, priority = 0, once = false) {\n this.next = null;\n this.previous = null;\n this._destroyed = false;\n this.fn = fn;\n this.context = context;\n this.priority = priority;\n this.once = once;\n }\n match(fn, context = null) {\n return this.fn === fn && this.context === context;\n }\n emit(deltaTime) {\n if (this.fn) {\n if (this.context) {\n this.fn.call(this.context, deltaTime);\n } else {\n this.fn(deltaTime);\n }\n }\n const redirect = this.next;\n if (this.once) {\n this.destroy(true);\n }\n if (this._destroyed) {\n this.next = null;\n }\n return redirect;\n }\n connect(previous) {\n this.previous = previous;\n if (previous.next) {\n previous.next.previous = this;\n }\n this.next = previous.next;\n previous.next = this;\n }\n destroy(hard = false) {\n this._destroyed = true;\n this.fn = null;\n this.context = null;\n if (this.previous) {\n this.previous.next = this.next;\n }\n if (this.next) {\n this.next.previous = this.previous;\n }\n const redirect = this.next;\n this.next = hard ? null : redirect;\n this.previous = null;\n return redirect;\n }\n}\n\nexport { TickerListener };\n//# sourceMappingURL=TickerListener.mjs.map\n","import { UPDATE_PRIORITY } from './const.mjs';\nimport { TickerListener } from './TickerListener.mjs';\n\nconst _Ticker = class {\n constructor() {\n this.autoStart = false;\n this.deltaTime = 1;\n this.lastTime = -1;\n this.speed = 1;\n this.started = false;\n this._requestId = null;\n this._maxElapsedMS = 100;\n this._minElapsedMS = 0;\n this._protected = false;\n this._lastFrame = -1;\n this._head = new TickerListener(null, null, Infinity);\n this.deltaMS = 1 / _Ticker.targetFPMS;\n this.elapsedMS = 1 / _Ticker.targetFPMS;\n this._tick = (time) => {\n this._requestId = null;\n if (this.started) {\n this.update(time);\n if (this.started && this._requestId === null && this._head.next) {\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n };\n }\n _requestIfNeeded() {\n if (this._requestId === null && this._head.next) {\n this.lastTime = performance.now();\n this._lastFrame = this.lastTime;\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n _cancelIfNeeded() {\n if (this._requestId !== null) {\n cancelAnimationFrame(this._requestId);\n this._requestId = null;\n }\n }\n _startIfPossible() {\n if (this.started) {\n this._requestIfNeeded();\n } else if (this.autoStart) {\n this.start();\n }\n }\n add(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority));\n }\n addOnce(fn, context, priority = UPDATE_PRIORITY.NORMAL) {\n return this._addListener(new TickerListener(fn, context, priority, true));\n }\n _addListener(listener) {\n let current = this._head.next;\n let previous = this._head;\n if (!current) {\n listener.connect(previous);\n } else {\n while (current) {\n if (listener.priority > current.priority) {\n listener.connect(previous);\n break;\n }\n previous = current;\n current = current.next;\n }\n if (!listener.previous) {\n listener.connect(previous);\n }\n }\n this._startIfPossible();\n return this;\n }\n remove(fn, context) {\n let listener = this._head.next;\n while (listener) {\n if (listener.match(fn, context)) {\n listener = listener.destroy();\n } else {\n listener = listener.next;\n }\n }\n if (!this._head.next) {\n this._cancelIfNeeded();\n }\n return this;\n }\n get count() {\n if (!this._head) {\n return 0;\n }\n let count = 0;\n let current = this._head;\n while (current = current.next) {\n count++;\n }\n return count;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this._requestIfNeeded();\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this._cancelIfNeeded();\n }\n }\n destroy() {\n if (!this._protected) {\n this.stop();\n let listener = this._head.next;\n while (listener) {\n listener = listener.destroy(true);\n }\n this._head.destroy();\n this._head = null;\n }\n }\n update(currentTime = performance.now()) {\n let elapsedMS;\n if (currentTime > this.lastTime) {\n elapsedMS = this.elapsedMS = currentTime - this.lastTime;\n if (elapsedMS > this._maxElapsedMS) {\n elapsedMS = this._maxElapsedMS;\n }\n elapsedMS *= this.speed;\n if (this._minElapsedMS) {\n const delta = currentTime - this._lastFrame | 0;\n if (delta < this._minElapsedMS) {\n return;\n }\n this._lastFrame = currentTime - delta % this._minElapsedMS;\n }\n this.deltaMS = elapsedMS;\n this.deltaTime = this.deltaMS * _Ticker.targetFPMS;\n const head = this._head;\n let listener = head.next;\n while (listener) {\n listener = listener.emit(this.deltaTime);\n }\n if (!head.next) {\n this._cancelIfNeeded();\n }\n } else {\n this.deltaTime = this.deltaMS = this.elapsedMS = 0;\n }\n this.lastTime = currentTime;\n }\n get FPS() {\n return 1e3 / this.elapsedMS;\n }\n get minFPS() {\n return 1e3 / this._maxElapsedMS;\n }\n set minFPS(fps) {\n const minFPS = Math.min(this.maxFPS, fps);\n const minFPMS = Math.min(Math.max(0, minFPS) / 1e3, _Ticker.targetFPMS);\n this._maxElapsedMS = 1 / minFPMS;\n }\n get maxFPS() {\n if (this._minElapsedMS) {\n return Math.round(1e3 / this._minElapsedMS);\n }\n return 0;\n }\n set maxFPS(fps) {\n if (fps === 0) {\n this._minElapsedMS = 0;\n } else {\n const maxFPS = Math.max(this.minFPS, fps);\n this._minElapsedMS = 1 / (maxFPS / 1e3);\n }\n }\n static get shared() {\n if (!_Ticker._shared) {\n const shared = _Ticker._shared = new _Ticker();\n shared.autoStart = true;\n shared._protected = true;\n }\n return _Ticker._shared;\n }\n static get system() {\n if (!_Ticker._system) {\n const system = _Ticker._system = new _Ticker();\n system.autoStart = true;\n system._protected = true;\n }\n return _Ticker._system;\n }\n};\nlet Ticker = _Ticker;\nTicker.targetFPMS = 0.06;\n\nexport { Ticker };\n//# sourceMappingURL=Ticker.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\nimport { deprecation } from '@pixi/utils';\nimport { Ticker } from './Ticker.mjs';\n\nObject.defineProperties(settings, {\n TARGET_FPMS: {\n get() {\n return Ticker.targetFPMS;\n },\n set(value) {\n deprecation(\"7.1.0\", \"settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS\");\n Ticker.targetFPMS = value;\n }\n }\n});\n//# sourceMappingURL=settings.mjs.map\n","import { ExtensionType, extensions } from '@pixi/extensions';\nimport { UPDATE_PRIORITY } from './const.mjs';\nimport { Ticker } from './Ticker.mjs';\n\nclass TickerPlugin {\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(this, \"ticker\", {\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n });\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\nTickerPlugin.extension = ExtensionType.Application;\nextensions.add(TickerPlugin);\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","import { settings } from '@pixi/settings';\nexport { settings } from '@pixi/settings';\n\nsettings.RETINA_PREFIX = /@([0-9\\.]+)x/;\nsettings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = false;\n//# sourceMappingURL=settings.mjs.map\n","import { parse, format, resolve } from 'url';\n\nconst url = {\n parse: parse,\n format: format,\n resolve: resolve\n};\n\nexport { url };\n//# sourceMappingURL=url.mjs.map\n","import { settings } from '@pixi/settings';\n\nfunction assertPath(path2) {\n if (typeof path2 !== \"string\") {\n throw new TypeError(`Path must be a string. Received ${JSON.stringify(path2)}`);\n }\n}\nfunction removeUrlParams(url) {\n const re = url.split(\"?\")[0];\n return re.split(\"#\")[0];\n}\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), \"g\"), replace);\n}\nfunction normalizeStringPosix(path2, allowAboveRoot) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code = -1;\n for (let i = 0; i <= path2.length; ++i) {\n if (i < path2.length) {\n code = path2.charCodeAt(i);\n } else if (code === 47) {\n break;\n } else {\n code = 47;\n }\n if (code === 47) {\n if (lastSlash === i - 1 || dots === 1) {\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += \"/..\";\n } else {\n res = \"..\";\n }\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path2.slice(lastSlash + 1, i)}`;\n } else {\n res = path2.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\nconst path = {\n toPosix(path2) {\n return replaceAll(path2, \"\\\\\", \"/\");\n },\n isUrl(path2) {\n return /^https?:/.test(this.toPosix(path2));\n },\n isDataUrl(path2) {\n return /^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s<>]*?)$/i.test(path2);\n },\n hasProtocol(path2) {\n return /^[^/:]+:\\//.test(this.toPosix(path2));\n },\n getProtocol(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let protocol = \"\";\n const isFile = /^file:\\/\\/\\//.exec(path2);\n const isHttp = /^[^/:]+:\\/\\//.exec(path2);\n const isWindows = /^[^/:]+:\\//.exec(path2);\n if (isFile || isHttp || isWindows) {\n const arr = isFile?.[0] || isHttp?.[0] || isWindows?.[0];\n protocol = arr;\n path2 = path2.slice(arr.length);\n }\n return protocol;\n },\n toAbsolute(url, customBaseUrl, customRootUrl) {\n if (this.isDataUrl(url))\n return url;\n const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? settings.ADAPTER.getBaseUrl()));\n const rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl)));\n assertPath(url);\n url = this.toPosix(url);\n if (url.startsWith(\"/\")) {\n return path.join(rootUrl, url.slice(1));\n }\n const absolutePath = this.isAbsolute(url) ? url : this.join(baseUrl, url);\n return absolutePath;\n },\n normalize(path2) {\n path2 = this.toPosix(path2);\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n let protocol = \"\";\n const isAbsolute = path2.startsWith(\"/\");\n if (this.hasProtocol(path2)) {\n protocol = this.rootname(path2);\n path2 = path2.slice(protocol.length);\n }\n const trailingSeparator = path2.endsWith(\"/\");\n path2 = normalizeStringPosix(path2, false);\n if (path2.length > 0 && trailingSeparator)\n path2 += \"/\";\n if (isAbsolute)\n return `/${path2}`;\n return protocol + path2;\n },\n isAbsolute(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n if (this.hasProtocol(path2))\n return true;\n return path2.startsWith(\"/\");\n },\n join(...segments) {\n if (segments.length === 0) {\n return \".\";\n }\n let joined;\n for (let i = 0; i < segments.length; ++i) {\n const arg = segments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === void 0)\n joined = arg;\n else {\n const prevArg = segments[i - 1] ?? \"\";\n if (this.extname(prevArg)) {\n joined += `/../${arg}`;\n } else {\n joined += `/${arg}`;\n }\n }\n }\n }\n if (joined === void 0) {\n return \".\";\n }\n return this.normalize(joined);\n },\n dirname(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n path2 = this.toPosix(path2);\n let code = path2.charCodeAt(0);\n const hasRoot = code === 47;\n let end = -1;\n let matchedSlash = true;\n const proto = this.getProtocol(path2);\n const origpath = path2;\n path2 = path2.slice(proto.length);\n for (let i = path2.length - 1; i >= 1; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1)\n return hasRoot ? \"/\" : this.isUrl(origpath) ? proto + path2 : proto;\n if (hasRoot && end === 1)\n return \"//\";\n return proto + path2.slice(0, end);\n },\n rootname(path2) {\n assertPath(path2);\n path2 = this.toPosix(path2);\n let root = \"\";\n if (path2.startsWith(\"/\"))\n root = \"/\";\n else {\n root = this.getProtocol(path2);\n }\n if (this.isUrl(path2)) {\n const index = path2.indexOf(\"/\", root.length);\n if (index !== -1) {\n root = path2.slice(0, index);\n } else\n root = path2;\n if (!root.endsWith(\"/\"))\n root += \"/\";\n }\n return root;\n },\n basename(path2, ext) {\n assertPath(path2);\n if (ext)\n assertPath(ext);\n path2 = removeUrlParams(this.toPosix(path2));\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i;\n }\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path2.length;\n return path2.slice(start, end);\n }\n for (i = path2.length - 1; i >= 0; --i) {\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1)\n return \"\";\n return path2.slice(start, end);\n },\n extname(path2) {\n assertPath(path2);\n path2 = removeUrlParams(this.toPosix(path2));\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let preDotState = 0;\n for (let i = path2.length - 1; i >= 0; --i) {\n const code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path2.slice(startDot, end);\n },\n parse(path2) {\n assertPath(path2);\n const ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n path2 = removeUrlParams(this.toPosix(path2));\n let code = path2.charCodeAt(0);\n const isAbsolute = this.isAbsolute(path2);\n let start;\n const protocol = \"\";\n ret.root = this.rootname(path2);\n if (isAbsolute || this.hasProtocol(path2)) {\n start = 1;\n } else {\n start = 0;\n }\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path2.length - 1;\n let preDotState = 0;\n for (; i >= start; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path2.slice(1, end);\n else\n ret.base = ret.name = path2.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path2.slice(1, startDot);\n ret.base = path2.slice(1, end);\n } else {\n ret.name = path2.slice(startPart, startDot);\n ret.base = path2.slice(startPart, end);\n }\n ret.ext = path2.slice(startDot, end);\n }\n ret.dir = this.dirname(path2);\n if (protocol)\n ret.dir = protocol + ret.dir;\n return ret;\n },\n sep: \"/\",\n delimiter: \":\"\n};\n\nexport { path };\n//# sourceMappingURL=path.mjs.map\n","const warnings = {};\nfunction deprecation(version, message, ignoreDepth = 3) {\n if (warnings[message]) {\n return;\n }\n let stack = new Error().stack;\n if (typeof stack === \"undefined\") {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n } else {\n stack = stack.split(\"\\n\").splice(ignoreDepth).join(\"\\n\");\n if (console.groupCollapsed) {\n console.groupCollapsed(\"%cPixiJS Deprecation Warning: %c%s\", \"color:#614108;background:#fffbe6\", \"font-weight:normal;color:#614108;background:#fffbe6\", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n console.groupEnd();\n } else {\n console.warn(\"PixiJS Deprecation Warning: \", `${message}\nDeprecated since v${version}`);\n console.warn(stack);\n }\n }\n warnings[message] = true;\n}\n\nexport { deprecation };\n//# sourceMappingURL=deprecation.mjs.map\n","import { deprecation } from '../logging/deprecation.mjs';\n\nfunction skipHello() {\n deprecation(\"7.0.0\", \"skipHello is deprecated, please use settings.RENDER_OPTIONS.hello\");\n}\nfunction sayHello() {\n deprecation(\"7.0.0\", `sayHello is deprecated, please use Renderer's \"hello\" option`);\n}\n\nexport { sayHello, skipHello };\n//# sourceMappingURL=hello.mjs.map\n","import '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nlet supported;\nfunction isWebGLSupported() {\n if (typeof supported === \"undefined\") {\n supported = function supported2() {\n const contextOptions = {\n stencil: true,\n failIfMajorPerformanceCaveat: settings.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT\n };\n try {\n if (!settings.ADAPTER.getWebGLRenderingContext()) {\n return false;\n }\n const canvas = settings.ADAPTER.createCanvas();\n let gl = canvas.getContext(\"webgl\", contextOptions) || canvas.getContext(\"experimental-webgl\", contextOptions);\n const success = !!gl?.getContextAttributes()?.stencil;\n if (gl) {\n const loseContext = gl.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n gl = null;\n return success;\n } catch (e) {\n return false;\n }\n }();\n }\n return supported;\n}\n\nexport { isWebGLSupported };\n//# sourceMappingURL=isWebGLSupported.mjs.map\n","import { Color } from '@pixi/color';\nimport { deprecation } from '../logging/deprecation.mjs';\n\nfunction hex2rgb(hex, out = []) {\n deprecation(\"7.2.0\", \"utils.hex2rgb is deprecated, use Color#toRgbArray instead\");\n return Color.shared.setValue(hex).toRgbArray(out);\n}\nfunction hex2string(hex) {\n deprecation(\"7.2.0\", \"utils.hex2string is deprecated, use Color#toHex instead\");\n return Color.shared.setValue(hex).toHex();\n}\nfunction string2hex(string) {\n deprecation(\"7.2.0\", \"utils.string2hex is deprecated, use Color#toNumber instead\");\n return Color.shared.setValue(string).toNumber();\n}\nfunction rgb2hex(rgb) {\n deprecation(\"7.2.0\", \"utils.rgb2hex is deprecated, use Color#toNumber instead\");\n return Color.shared.setValue(rgb).toNumber();\n}\n\nexport { hex2rgb, hex2string, rgb2hex, string2hex };\n//# sourceMappingURL=hex.mjs.map\n","import { Color } from '@pixi/color';\nimport { BLEND_MODES } from '@pixi/constants';\nimport { deprecation } from '../logging/deprecation.mjs';\n\nfunction mapPremultipliedBlendModes() {\n const pm = [];\n const npm = [];\n for (let i = 0; i < 32; i++) {\n pm[i] = i;\n npm[i] = i;\n }\n pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL;\n pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD;\n pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN;\n npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM;\n npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM;\n npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM;\n const array = [];\n array.push(npm);\n array.push(pm);\n return array;\n}\nconst premultiplyBlendMode = mapPremultipliedBlendModes();\nfunction correctBlendMode(blendMode, premultiplied) {\n return premultiplyBlendMode[premultiplied ? 1 : 0][blendMode];\n}\nfunction premultiplyRgba(rgb, alpha, out, premultiply = true) {\n deprecation(\"7.2.0\", `utils.premultiplyRgba has moved to Color.premultiply`);\n return Color.shared.setValue(rgb).premultiply(alpha, premultiply).toArray(out ?? new Float32Array(4));\n}\nfunction premultiplyTint(tint, alpha) {\n deprecation(\"7.2.0\", `utils.premultiplyTint has moved to Color.toPremultiplied`);\n return Color.shared.setValue(tint).toPremultiplied(alpha);\n}\nfunction premultiplyTintToRgba(tint, alpha, out, premultiply = true) {\n deprecation(\"7.2.0\", `utils.premultiplyTintToRgba has moved to Color.premultiply`);\n return Color.shared.setValue(tint).premultiply(alpha, premultiply).toArray(out ?? new Float32Array(4));\n}\n\nexport { correctBlendMode, premultiplyBlendMode, premultiplyRgba, premultiplyTint, premultiplyTintToRgba };\n//# sourceMappingURL=premultiply.mjs.map\n","const DATA_URI = /^\\s*data:(?:([\\w-]+)\\/([\\w+.-]+))?(?:;charset=([\\w-]+))?(?:;(base64))?,(.*)/i;\n\nexport { DATA_URI };\n//# sourceMappingURL=const.mjs.map\n","function createIndicesForQuads(size, outBuffer = null) {\n const totalIndices = size * 6;\n outBuffer = outBuffer || new Uint16Array(totalIndices);\n if (outBuffer.length !== totalIndices) {\n throw new Error(`Out buffer length is incorrect, got ${outBuffer.length} and expected ${totalIndices}`);\n }\n for (let i = 0, j = 0; i < totalIndices; i += 6, j += 4) {\n outBuffer[i + 0] = j + 0;\n outBuffer[i + 1] = j + 1;\n outBuffer[i + 2] = j + 2;\n outBuffer[i + 3] = j + 0;\n outBuffer[i + 4] = j + 2;\n outBuffer[i + 5] = j + 3;\n }\n return outBuffer;\n}\n\nexport { createIndicesForQuads };\n//# sourceMappingURL=createIndicesForQuads.mjs.map\n","function getBufferType(array) {\n if (array.BYTES_PER_ELEMENT === 4) {\n if (array instanceof Float32Array) {\n return \"Float32Array\";\n } else if (array instanceof Uint32Array) {\n return \"Uint32Array\";\n }\n return \"Int32Array\";\n } else if (array.BYTES_PER_ELEMENT === 2) {\n if (array instanceof Uint16Array) {\n return \"Uint16Array\";\n }\n } else if (array.BYTES_PER_ELEMENT === 1) {\n if (array instanceof Uint8Array) {\n return \"Uint8Array\";\n }\n }\n return null;\n}\n\nexport { getBufferType };\n//# sourceMappingURL=getBufferType.mjs.map\n","import { getBufferType } from './getBufferType.mjs';\n\nconst map = { Float32Array, Uint32Array, Int32Array, Uint8Array };\nfunction interleaveTypedArrays(arrays, sizes) {\n let outSize = 0;\n let stride = 0;\n const views = {};\n for (let i = 0; i < arrays.length; i++) {\n stride += sizes[i];\n outSize += arrays[i].length;\n }\n const buffer = new ArrayBuffer(outSize * 4);\n let out = null;\n let littleOffset = 0;\n for (let i = 0; i < arrays.length; i++) {\n const size = sizes[i];\n const array = arrays[i];\n const type = getBufferType(array);\n if (!views[type]) {\n views[type] = new map[type](buffer);\n }\n out = views[type];\n for (let j = 0; j < array.length; j++) {\n const indexStart = (j / size | 0) * stride + littleOffset;\n const index = j % size;\n out[indexStart + index] = array[j];\n }\n littleOffset += size;\n }\n return new Float32Array(buffer);\n}\n\nexport { interleaveTypedArrays };\n//# sourceMappingURL=interleaveTypedArrays.mjs.map\n","function nextPow2(v) {\n v += v === 0 ? 1 : 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v + 1;\n}\nfunction isPow2(v) {\n return !(v & v - 1) && !!v;\n}\nfunction log2(v) {\n let r = (v > 65535 ? 1 : 0) << 4;\n v >>>= r;\n let shift = (v > 255 ? 1 : 0) << 3;\n v >>>= shift;\n r |= shift;\n shift = (v > 15 ? 1 : 0) << 2;\n v >>>= shift;\n r |= shift;\n shift = (v > 3 ? 1 : 0) << 1;\n v >>>= shift;\n r |= shift;\n return r | v >> 1;\n}\n\nexport { isPow2, log2, nextPow2 };\n//# sourceMappingURL=pow2.mjs.map\n","function removeItems(arr, startIdx, removeCount) {\n const length = arr.length;\n let i;\n if (startIdx >= length || removeCount === 0) {\n return;\n }\n removeCount = startIdx + removeCount > length ? length - startIdx : removeCount;\n const len = length - removeCount;\n for (i = startIdx; i < len; ++i) {\n arr[i] = arr[i + removeCount];\n }\n arr.length = len;\n}\n\nexport { removeItems };\n//# sourceMappingURL=removeItems.mjs.map\n","function sign(n) {\n if (n === 0)\n return 0;\n return n < 0 ? -1 : 1;\n}\n\nexport { sign };\n//# sourceMappingURL=sign.mjs.map\n","let nextUid = 0;\nfunction uid() {\n return ++nextUid;\n}\n\nexport { uid };\n//# sourceMappingURL=uid.mjs.map\n","const _BoundingBox = class {\n constructor(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n get width() {\n return this.right - this.left;\n }\n get height() {\n return this.bottom - this.top;\n }\n isEmpty() {\n return this.left === this.right || this.top === this.bottom;\n }\n};\nlet BoundingBox = _BoundingBox;\nBoundingBox.EMPTY = new _BoundingBox(0, 0, 0, 0);\n\nexport { BoundingBox };\n//# sourceMappingURL=BoundingBox.mjs.map\n","const ProgramCache = {};\nconst TextureCache = /* @__PURE__ */ Object.create(null);\nconst BaseTextureCache = /* @__PURE__ */ Object.create(null);\nfunction destroyTextureCache() {\n let key;\n for (key in TextureCache) {\n TextureCache[key].destroy();\n }\n for (key in BaseTextureCache) {\n BaseTextureCache[key].destroy();\n }\n}\nfunction clearTextureCache() {\n let key;\n for (key in TextureCache) {\n delete TextureCache[key];\n }\n for (key in BaseTextureCache) {\n delete BaseTextureCache[key];\n }\n}\n\nexport { BaseTextureCache, ProgramCache, TextureCache, clearTextureCache, destroyTextureCache };\n//# sourceMappingURL=caches.mjs.map\n","import { settings } from '@pixi/settings';\n\nclass CanvasRenderTarget {\n constructor(width, height, resolution) {\n this._canvas = settings.ADAPTER.createCanvas();\n this._context = this._canvas.getContext(\"2d\");\n this.resolution = resolution || settings.RESOLUTION;\n this.resize(width, height);\n }\n clear() {\n this._checkDestroyed();\n this._context.setTransform(1, 0, 0, 1, 0, 0);\n this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);\n }\n resize(desiredWidth, desiredHeight) {\n this._checkDestroyed();\n this._canvas.width = Math.round(desiredWidth * this.resolution);\n this._canvas.height = Math.round(desiredHeight * this.resolution);\n }\n destroy() {\n this._context = null;\n this._canvas = null;\n }\n get width() {\n this._checkDestroyed();\n return this._canvas.width;\n }\n set width(val) {\n this._checkDestroyed();\n this._canvas.width = Math.round(val);\n }\n get height() {\n this._checkDestroyed();\n return this._canvas.height;\n }\n set height(val) {\n this._checkDestroyed();\n this._canvas.height = Math.round(val);\n }\n get canvas() {\n this._checkDestroyed();\n return this._canvas;\n }\n get context() {\n this._checkDestroyed();\n return this._context;\n }\n _checkDestroyed() {\n if (this._canvas === null) {\n throw new TypeError(\"The CanvasRenderTarget has already been destroyed\");\n }\n }\n}\n\nexport { CanvasRenderTarget };\n//# sourceMappingURL=CanvasRenderTarget.mjs.map\n","import { BoundingBox } from './BoundingBox.mjs';\n\nfunction checkRow(data, width, y) {\n for (let x = 0, index = 4 * y * width; x < width; ++x, index += 4) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction checkColumn(data, width, x, top, bottom) {\n const stride = 4 * width;\n for (let y = top, index = top * stride + 4 * x; y <= bottom; ++y, index += stride) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction getCanvasBoundingBox(canvas) {\n const { width, height } = canvas;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n if (context === null) {\n throw new TypeError(\"Failed to get canvas 2D context\");\n }\n const imageData = context.getImageData(0, 0, width, height);\n const data = imageData.data;\n let left = 0;\n let top = 0;\n let right = width - 1;\n let bottom = height - 1;\n while (top < height && checkRow(data, width, top))\n ++top;\n if (top === height)\n return BoundingBox.EMPTY;\n while (checkRow(data, width, bottom))\n --bottom;\n while (checkColumn(data, width, left, top, bottom))\n ++left;\n while (checkColumn(data, width, right, top, bottom))\n --right;\n ++right;\n ++bottom;\n return new BoundingBox(left, top, right, bottom);\n}\n\nexport { getCanvasBoundingBox };\n//# sourceMappingURL=getCanvasBoundingBox.mjs.map\n","import { getCanvasBoundingBox } from './getCanvasBoundingBox.mjs';\n\nfunction trimCanvas(canvas) {\n const boundingBox = getCanvasBoundingBox(canvas);\n const { width, height } = boundingBox;\n let data = null;\n if (!boundingBox.isEmpty()) {\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new TypeError(\"Failed to get canvas 2D context\");\n }\n data = context.getImageData(boundingBox.left, boundingBox.top, width, height);\n }\n return { width, height, data };\n}\n\nexport { trimCanvas };\n//# sourceMappingURL=trimCanvas.mjs.map\n","import { DATA_URI } from '../const.mjs';\n\nfunction decomposeDataUri(dataUri) {\n const dataUriMatch = DATA_URI.exec(dataUri);\n if (dataUriMatch) {\n return {\n mediaType: dataUriMatch[1] ? dataUriMatch[1].toLowerCase() : void 0,\n subType: dataUriMatch[2] ? dataUriMatch[2].toLowerCase() : void 0,\n charset: dataUriMatch[3] ? dataUriMatch[3].toLowerCase() : void 0,\n encoding: dataUriMatch[4] ? dataUriMatch[4].toLowerCase() : void 0,\n data: dataUriMatch[5]\n };\n }\n return void 0;\n}\n\nexport { decomposeDataUri };\n//# sourceMappingURL=decomposeDataUri.mjs.map\n","import { url } from '../url.mjs';\n\nlet tempAnchor;\nfunction determineCrossOrigin(url$1, loc = globalThis.location) {\n if (url$1.startsWith(\"data:\")) {\n return \"\";\n }\n loc = loc || globalThis.location;\n if (!tempAnchor) {\n tempAnchor = document.createElement(\"a\");\n }\n tempAnchor.href = url$1;\n const parsedUrl = url.parse(tempAnchor.href);\n const samePort = !parsedUrl.port && loc.port === \"\" || parsedUrl.port === loc.port;\n if (parsedUrl.hostname !== loc.hostname || !samePort || parsedUrl.protocol !== loc.protocol) {\n return \"anonymous\";\n }\n return \"\";\n}\n\nexport { determineCrossOrigin };\n//# sourceMappingURL=determineCrossOrigin.mjs.map\n","import '../settings.mjs';\nimport { settings } from '@pixi/settings';\n\nfunction getResolutionOfUrl(url, defaultValue = 1) {\n const resolution = settings.RETINA_PREFIX?.exec(url);\n if (resolution) {\n return parseFloat(resolution[1]);\n }\n return defaultValue;\n}\n\nexport { getResolutionOfUrl };\n//# sourceMappingURL=getResolutionOfUrl.mjs.map\n","import { Matrix, settings, RenderTexture, utils, BaseTexture, Texture } from '@pixi/core';\nimport { DisplayObject } from '@pixi/display';\nimport { Sprite } from '@pixi/sprite';\n\nconst _tempMatrix = new Matrix();\nDisplayObject.prototype._cacheAsBitmap = false;\nDisplayObject.prototype._cacheData = null;\nDisplayObject.prototype._cacheAsBitmapResolution = null;\nDisplayObject.prototype._cacheAsBitmapMultisample = null;\nclass CacheData {\n constructor() {\n this.textureCacheId = null;\n this.originalRender = null;\n this.originalRenderCanvas = null;\n this.originalCalculateBounds = null;\n this.originalGetLocalBounds = null;\n this.originalUpdateTransform = null;\n this.originalDestroy = null;\n this.originalMask = null;\n this.originalFilterArea = null;\n this.originalContainsPoint = null;\n this.sprite = null;\n }\n}\nObject.defineProperties(DisplayObject.prototype, {\n cacheAsBitmapResolution: {\n get() {\n return this._cacheAsBitmapResolution;\n },\n set(resolution) {\n if (resolution === this._cacheAsBitmapResolution) {\n return;\n }\n this._cacheAsBitmapResolution = resolution;\n if (this.cacheAsBitmap) {\n this.cacheAsBitmap = false;\n this.cacheAsBitmap = true;\n }\n }\n },\n cacheAsBitmapMultisample: {\n get() {\n return this._cacheAsBitmapMultisample;\n },\n set(multisample) {\n if (multisample === this._cacheAsBitmapMultisample) {\n return;\n }\n this._cacheAsBitmapMultisample = multisample;\n if (this.cacheAsBitmap) {\n this.cacheAsBitmap = false;\n this.cacheAsBitmap = true;\n }\n }\n },\n cacheAsBitmap: {\n get() {\n return this._cacheAsBitmap;\n },\n set(value) {\n if (this._cacheAsBitmap === value) {\n return;\n }\n this._cacheAsBitmap = value;\n let data;\n if (value) {\n if (!this._cacheData) {\n this._cacheData = new CacheData();\n }\n data = this._cacheData;\n data.originalRender = this.render;\n data.originalRenderCanvas = this.renderCanvas;\n data.originalUpdateTransform = this.updateTransform;\n data.originalCalculateBounds = this.calculateBounds;\n data.originalGetLocalBounds = this.getLocalBounds;\n data.originalDestroy = this.destroy;\n data.originalContainsPoint = this.containsPoint;\n data.originalMask = this._mask;\n data.originalFilterArea = this.filterArea;\n this.render = this._renderCached;\n this.renderCanvas = this._renderCachedCanvas;\n this.destroy = this._cacheAsBitmapDestroy;\n } else {\n data = this._cacheData;\n if (data.sprite) {\n this._destroyCachedDisplayObject();\n }\n this.render = data.originalRender;\n this.renderCanvas = data.originalRenderCanvas;\n this.calculateBounds = data.originalCalculateBounds;\n this.getLocalBounds = data.originalGetLocalBounds;\n this.destroy = data.originalDestroy;\n this.updateTransform = data.originalUpdateTransform;\n this.containsPoint = data.originalContainsPoint;\n this._mask = data.originalMask;\n this.filterArea = data.originalFilterArea;\n }\n }\n }\n});\nDisplayObject.prototype._renderCached = function _renderCached(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n this._initCachedDisplayObject(renderer);\n this._cacheData.sprite.transform._worldID = this.transform._worldID;\n this._cacheData.sprite.worldAlpha = this.worldAlpha;\n this._cacheData.sprite._render(renderer);\n};\nDisplayObject.prototype._initCachedDisplayObject = function _initCachedDisplayObject(renderer) {\n if (this._cacheData?.sprite) {\n return;\n }\n const cacheAlpha = this.alpha;\n this.alpha = 1;\n renderer.batch.flush();\n const bounds = this.getLocalBounds(null, true).clone();\n if (this.filters?.length) {\n const padding = this.filters[0].padding;\n bounds.pad(padding);\n }\n bounds.ceil(settings.RESOLUTION);\n const cachedRenderTexture = renderer.renderTexture.current;\n const cachedSourceFrame = renderer.renderTexture.sourceFrame.clone();\n const cachedDestinationFrame = renderer.renderTexture.destinationFrame.clone();\n const cachedProjectionTransform = renderer.projection.transform;\n const renderTexture = RenderTexture.create({\n width: bounds.width,\n height: bounds.height,\n resolution: this.cacheAsBitmapResolution || renderer.resolution,\n multisample: this.cacheAsBitmapMultisample ?? renderer.multisample\n });\n const textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId;\n BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId);\n Texture.addToCache(renderTexture, textureCacheId);\n const m = this.transform.localTransform.copyTo(_tempMatrix).invert().translate(-bounds.x, -bounds.y);\n this.render = this._cacheData.originalRender;\n renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false });\n renderer.framebuffer.blit();\n renderer.projection.transform = cachedProjectionTransform;\n renderer.renderTexture.bind(cachedRenderTexture, cachedSourceFrame, cachedDestinationFrame);\n this.render = this._renderCached;\n this.updateTransform = this.displayObjectUpdateTransform;\n this.calculateBounds = this._calculateCachedBounds;\n this.getLocalBounds = this._getCachedLocalBounds;\n this._mask = null;\n this.filterArea = null;\n this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform;\n cachedSprite.anchor.x = -(bounds.x / bounds.width);\n cachedSprite.anchor.y = -(bounds.y / bounds.height);\n cachedSprite.alpha = cacheAlpha;\n cachedSprite._bounds = this._bounds;\n this._cacheData.sprite = cachedSprite;\n this.transform._parentID = -1;\n if (!this.parent) {\n this.enableTempParent();\n this.updateTransform();\n this.disableTempParent(null);\n } else {\n this.updateTransform();\n }\n this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._renderCachedCanvas = function _renderCachedCanvas(renderer) {\n if (!this.visible || this.worldAlpha <= 0 || !this.renderable) {\n return;\n }\n this._initCachedDisplayObjectCanvas(renderer);\n this._cacheData.sprite.worldAlpha = this.worldAlpha;\n this._cacheData.sprite._renderCanvas(renderer);\n};\nDisplayObject.prototype._initCachedDisplayObjectCanvas = function _initCachedDisplayObjectCanvas(renderer) {\n if (this._cacheData?.sprite) {\n return;\n }\n const bounds = this.getLocalBounds(null, true);\n const cacheAlpha = this.alpha;\n this.alpha = 1;\n const cachedRenderTarget = renderer.canvasContext.activeContext;\n const cachedProjectionTransform = renderer._projTransform;\n bounds.ceil(settings.RESOLUTION);\n const renderTexture = RenderTexture.create({ width: bounds.width, height: bounds.height });\n const textureCacheId = `cacheAsBitmap_${utils.uid()}`;\n this._cacheData.textureCacheId = textureCacheId;\n BaseTexture.addToCache(renderTexture.baseTexture, textureCacheId);\n Texture.addToCache(renderTexture, textureCacheId);\n const m = _tempMatrix;\n this.transform.localTransform.copyTo(m);\n m.invert();\n m.tx -= bounds.x;\n m.ty -= bounds.y;\n this.renderCanvas = this._cacheData.originalRenderCanvas;\n renderer.render(this, { renderTexture, clear: true, transform: m, skipUpdateTransform: false });\n renderer.canvasContext.activeContext = cachedRenderTarget;\n renderer._projTransform = cachedProjectionTransform;\n this.renderCanvas = this._renderCachedCanvas;\n this.updateTransform = this.displayObjectUpdateTransform;\n this.calculateBounds = this._calculateCachedBounds;\n this.getLocalBounds = this._getCachedLocalBounds;\n this._mask = null;\n this.filterArea = null;\n this.alpha = cacheAlpha;\n const cachedSprite = new Sprite(renderTexture);\n cachedSprite.transform.worldTransform = this.transform.worldTransform;\n cachedSprite.anchor.x = -(bounds.x / bounds.width);\n cachedSprite.anchor.y = -(bounds.y / bounds.height);\n cachedSprite.alpha = cacheAlpha;\n cachedSprite._bounds = this._bounds;\n this._cacheData.sprite = cachedSprite;\n this.transform._parentID = -1;\n if (!this.parent) {\n this.parent = renderer._tempDisplayObjectParent;\n this.updateTransform();\n this.parent = null;\n } else {\n this.updateTransform();\n }\n this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);\n};\nDisplayObject.prototype._calculateCachedBounds = function _calculateCachedBounds() {\n this._bounds.clear();\n this._cacheData.sprite.transform._worldID = this.transform._worldID;\n this._cacheData.sprite._calculateBounds();\n this._bounds.updateID = this._boundsID;\n};\nDisplayObject.prototype._getCachedLocalBounds = function _getCachedLocalBounds() {\n return this._cacheData.sprite.getLocalBounds(null);\n};\nDisplayObject.prototype._destroyCachedDisplayObject = function _destroyCachedDisplayObject() {\n this._cacheData.sprite._texture.destroy(true);\n this._cacheData.sprite = null;\n BaseTexture.removeFromCache(this._cacheData.textureCacheId);\n Texture.removeFromCache(this._cacheData.textureCacheId);\n this._cacheData.textureCacheId = null;\n};\nDisplayObject.prototype._cacheAsBitmapDestroy = function _cacheAsBitmapDestroy(options) {\n this.cacheAsBitmap = false;\n this.destroy(options);\n};\n\nexport { CacheData };\n//# sourceMappingURL=index.mjs.map\n","import { DisplayObject, Container } from '@pixi/display';\n\nDisplayObject.prototype.name = null;\nContainer.prototype.getChildByName = function getChildByName(name, deep) {\n for (let i = 0, j = this.children.length; i < j; i++) {\n if (this.children[i].name === name) {\n return this.children[i];\n }\n }\n if (deep) {\n for (let i = 0, j = this.children.length; i < j; i++) {\n const child = this.children[i];\n if (!child.getChildByName) {\n continue;\n }\n const target = child.getChildByName(name, true);\n if (target) {\n return target;\n }\n }\n }\n return null;\n};\n//# sourceMappingURL=index.mjs.map\n","import { Point } from '@pixi/core';\nimport { DisplayObject } from '@pixi/display';\n\nDisplayObject.prototype.getGlobalPosition = function getGlobalPosition(point = new Point(), skipUpdate = false) {\n if (this.parent) {\n this.parent.toGlobal(this.position, point, skipUpdate);\n } else {\n point.x = this.position.x;\n point.y = this.position.y;\n }\n return point;\n};\n//# sourceMappingURL=index.mjs.map\n","import { Filter, defaultVertex } from '@pixi/core';\nimport fragment from './alpha.mjs';\n\nclass AlphaFilter extends Filter {\n constructor(alpha = 1) {\n super(defaultVertex, fragment, { uAlpha: 1 });\n this.alpha = alpha;\n }\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\n\nexport { AlphaFilter };\n//# sourceMappingURL=AlphaFilter.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\n\\nuniform sampler2D uSampler;\\nuniform float uAlpha;\\n\\nvoid main(void)\\n{\\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=alpha.mjs.map\n","const GAUSSIAN_VALUES = {\n 5: [0.153388, 0.221461, 0.250301],\n 7: [0.071303, 0.131514, 0.189879, 0.214607],\n 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236],\n 11: [93e-4, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596],\n 13: [2406e-6, 9255e-6, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641],\n 15: [489e-6, 2403e-6, 9246e-6, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448]\n};\nconst fragTemplate = [\n \"varying vec2 vBlurTexCoords[%size%];\",\n \"uniform sampler2D uSampler;\",\n \"void main(void)\",\n \"{\",\n \" gl_FragColor = vec4(0.0);\",\n \" %blur%\",\n \"}\"\n].join(\"\\n\");\nfunction generateBlurFragSource(kernelSize) {\n const kernel = GAUSSIAN_VALUES[kernelSize];\n const halfLength = kernel.length;\n let fragSource = fragTemplate;\n let blurLoop = \"\";\n const template = \"gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;\";\n let value;\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n value = i;\n if (i >= halfLength) {\n value = kernelSize - i - 1;\n }\n blur = blur.replace(\"%value%\", kernel[value].toString());\n blurLoop += blur;\n blurLoop += \"\\n\";\n }\n fragSource = fragSource.replace(\"%blur%\", blurLoop);\n fragSource = fragSource.replace(\"%size%\", kernelSize.toString());\n return fragSource;\n}\n\nexport { generateBlurFragSource };\n//# sourceMappingURL=generateBlurFragSource.mjs.map\n","import { Filter, CLEAR_MODES } from '@pixi/core';\nimport { generateBlurFragSource } from './generateBlurFragSource.mjs';\nimport { generateBlurVertSource } from './generateBlurVertSource.mjs';\n\nclass BlurFilterPass extends Filter {\n constructor(horizontal, strength = 8, quality = 4, resolution = Filter.defaultResolution, kernelSize = 5) {\n const vertSrc = generateBlurVertSource(kernelSize, horizontal);\n const fragSrc = generateBlurFragSource(kernelSize);\n super(vertSrc, fragSrc);\n this.horizontal = horizontal;\n this.resolution = resolution;\n this._quality = 0;\n this.quality = quality;\n this.blur = strength;\n }\n apply(filterManager, input, output, clearMode) {\n if (output) {\n if (this.horizontal) {\n this.uniforms.strength = 1 / output.width * (output.width / input.width);\n } else {\n this.uniforms.strength = 1 / output.height * (output.height / input.height);\n }\n } else {\n if (this.horizontal) {\n this.uniforms.strength = 1 / filterManager.renderer.width * (filterManager.renderer.width / input.width);\n } else {\n this.uniforms.strength = 1 / filterManager.renderer.height * (filterManager.renderer.height / input.height);\n }\n }\n this.uniforms.strength *= this.strength;\n this.uniforms.strength /= this.passes;\n if (this.passes === 1) {\n filterManager.applyFilter(this, input, output, clearMode);\n } else {\n const renderTarget = filterManager.getFilterTexture();\n const renderer = filterManager.renderer;\n let flip = input;\n let flop = renderTarget;\n this.state.blend = false;\n filterManager.applyFilter(this, flip, flop, CLEAR_MODES.CLEAR);\n for (let i = 1; i < this.passes - 1; i++) {\n filterManager.bindAndClear(flip, CLEAR_MODES.BLIT);\n this.uniforms.uSampler = flop;\n const temp = flop;\n flop = flip;\n flip = temp;\n renderer.shader.bind(this);\n renderer.geometry.draw(5);\n }\n this.state.blend = true;\n filterManager.applyFilter(this, flop, output, clearMode);\n filterManager.returnFilterTexture(renderTarget);\n }\n }\n get blur() {\n return this.strength;\n }\n set blur(value) {\n this.padding = 1 + Math.abs(value) * 2;\n this.strength = value;\n }\n get quality() {\n return this._quality;\n }\n set quality(value) {\n this._quality = value;\n this.passes = value;\n }\n}\n\nexport { BlurFilterPass };\n//# sourceMappingURL=BlurFilterPass.mjs.map\n","const vertTemplate = `\n attribute vec2 aVertexPosition;\n\n uniform mat3 projectionMatrix;\n\n uniform float strength;\n\n varying vec2 vBlurTexCoords[%size%];\n\n uniform vec4 inputSize;\n uniform vec4 outputFrame;\n\n vec4 filterVertexPosition( void )\n {\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n }\n\n vec2 filterTextureCoord( void )\n {\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }`;\nfunction generateBlurVertSource(kernelSize, x) {\n const halfLength = Math.ceil(kernelSize / 2);\n let vertSource = vertTemplate;\n let blurLoop = \"\";\n let template;\n if (x) {\n template = \"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);\";\n } else {\n template = \"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);\";\n }\n for (let i = 0; i < kernelSize; i++) {\n let blur = template.replace(\"%index%\", i.toString());\n blur = blur.replace(\"%sampleIndex%\", `${i - (halfLength - 1)}.0`);\n blurLoop += blur;\n blurLoop += \"\\n\";\n }\n vertSource = vertSource.replace(\"%blur%\", blurLoop);\n vertSource = vertSource.replace(\"%size%\", kernelSize.toString());\n return vertSource;\n}\n\nexport { generateBlurVertSource };\n//# sourceMappingURL=generateBlurVertSource.mjs.map\n","import { Filter, CLEAR_MODES } from '@pixi/core';\nimport { BlurFilterPass } from './BlurFilterPass.mjs';\n\nclass BlurFilter extends Filter {\n constructor(strength = 8, quality = 4, resolution = Filter.defaultResolution, kernelSize = 5) {\n super();\n this._repeatEdgePixels = false;\n this.blurXFilter = new BlurFilterPass(true, strength, quality, resolution, kernelSize);\n this.blurYFilter = new BlurFilterPass(false, strength, quality, resolution, kernelSize);\n this.resolution = resolution;\n this.quality = quality;\n this.blur = strength;\n this.repeatEdgePixels = false;\n }\n apply(filterManager, input, output, clearMode) {\n const xStrength = Math.abs(this.blurXFilter.strength);\n const yStrength = Math.abs(this.blurYFilter.strength);\n if (xStrength && yStrength) {\n const renderTarget = filterManager.getFilterTexture();\n this.blurXFilter.apply(filterManager, input, renderTarget, CLEAR_MODES.CLEAR);\n this.blurYFilter.apply(filterManager, renderTarget, output, clearMode);\n filterManager.returnFilterTexture(renderTarget);\n } else if (yStrength) {\n this.blurYFilter.apply(filterManager, input, output, clearMode);\n } else {\n this.blurXFilter.apply(filterManager, input, output, clearMode);\n }\n }\n updatePadding() {\n if (this._repeatEdgePixels) {\n this.padding = 0;\n } else {\n this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2;\n }\n }\n get blur() {\n return this.blurXFilter.blur;\n }\n set blur(value) {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n this.updatePadding();\n }\n get quality() {\n return this.blurXFilter.quality;\n }\n set quality(value) {\n this.blurXFilter.quality = this.blurYFilter.quality = value;\n }\n get blurX() {\n return this.blurXFilter.blur;\n }\n set blurX(value) {\n this.blurXFilter.blur = value;\n this.updatePadding();\n }\n get blurY() {\n return this.blurYFilter.blur;\n }\n set blurY(value) {\n this.blurYFilter.blur = value;\n this.updatePadding();\n }\n get blendMode() {\n return this.blurYFilter.blendMode;\n }\n set blendMode(value) {\n this.blurYFilter.blendMode = value;\n }\n get repeatEdgePixels() {\n return this._repeatEdgePixels;\n }\n set repeatEdgePixels(value) {\n this._repeatEdgePixels = value;\n this.updatePadding();\n }\n}\n\nexport { BlurFilter };\n//# sourceMappingURL=BlurFilter.mjs.map\n","import { Filter, defaultFilterVertex, Color } from '@pixi/core';\nimport fragment from './colorMatrix.mjs';\n\nclass ColorMatrixFilter extends Filter {\n constructor() {\n const uniforms = {\n m: new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ]),\n uAlpha: 1\n };\n super(defaultFilterVertex, fragment, uniforms);\n this.alpha = 1;\n }\n _loadMatrix(matrix, multiply = false) {\n let newMatrix = matrix;\n if (multiply) {\n this._multiply(newMatrix, this.uniforms.m, matrix);\n newMatrix = this._colorMatrix(newMatrix);\n }\n this.uniforms.m = newMatrix;\n }\n _multiply(out, a, b) {\n out[0] = a[0] * b[0] + a[1] * b[5] + a[2] * b[10] + a[3] * b[15];\n out[1] = a[0] * b[1] + a[1] * b[6] + a[2] * b[11] + a[3] * b[16];\n out[2] = a[0] * b[2] + a[1] * b[7] + a[2] * b[12] + a[3] * b[17];\n out[3] = a[0] * b[3] + a[1] * b[8] + a[2] * b[13] + a[3] * b[18];\n out[4] = a[0] * b[4] + a[1] * b[9] + a[2] * b[14] + a[3] * b[19] + a[4];\n out[5] = a[5] * b[0] + a[6] * b[5] + a[7] * b[10] + a[8] * b[15];\n out[6] = a[5] * b[1] + a[6] * b[6] + a[7] * b[11] + a[8] * b[16];\n out[7] = a[5] * b[2] + a[6] * b[7] + a[7] * b[12] + a[8] * b[17];\n out[8] = a[5] * b[3] + a[6] * b[8] + a[7] * b[13] + a[8] * b[18];\n out[9] = a[5] * b[4] + a[6] * b[9] + a[7] * b[14] + a[8] * b[19] + a[9];\n out[10] = a[10] * b[0] + a[11] * b[5] + a[12] * b[10] + a[13] * b[15];\n out[11] = a[10] * b[1] + a[11] * b[6] + a[12] * b[11] + a[13] * b[16];\n out[12] = a[10] * b[2] + a[11] * b[7] + a[12] * b[12] + a[13] * b[17];\n out[13] = a[10] * b[3] + a[11] * b[8] + a[12] * b[13] + a[13] * b[18];\n out[14] = a[10] * b[4] + a[11] * b[9] + a[12] * b[14] + a[13] * b[19] + a[14];\n out[15] = a[15] * b[0] + a[16] * b[5] + a[17] * b[10] + a[18] * b[15];\n out[16] = a[15] * b[1] + a[16] * b[6] + a[17] * b[11] + a[18] * b[16];\n out[17] = a[15] * b[2] + a[16] * b[7] + a[17] * b[12] + a[18] * b[17];\n out[18] = a[15] * b[3] + a[16] * b[8] + a[17] * b[13] + a[18] * b[18];\n out[19] = a[15] * b[4] + a[16] * b[9] + a[17] * b[14] + a[18] * b[19] + a[19];\n return out;\n }\n _colorMatrix(matrix) {\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n return m;\n }\n brightness(b, multiply) {\n const matrix = [\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n tint(color, multiply) {\n const [r, g, b] = Color.shared.setValue(color).toArray();\n const matrix = [\n r,\n 0,\n 0,\n 0,\n 0,\n 0,\n g,\n 0,\n 0,\n 0,\n 0,\n 0,\n b,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n greyscale(scale, multiply) {\n const matrix = [\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n scale,\n scale,\n scale,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n blackAndWhite(multiply) {\n const matrix = [\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0.3,\n 0.6,\n 0.1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n hue(rotation, multiply) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cosR = Math.cos(rotation);\n const sinR = Math.sin(rotation);\n const sqrt = Math.sqrt;\n const w = 1 / 3;\n const sqrW = sqrt(w);\n const a00 = cosR + (1 - cosR) * w;\n const a01 = w * (1 - cosR) - sqrW * sinR;\n const a02 = w * (1 - cosR) + sqrW * sinR;\n const a10 = w * (1 - cosR) + sqrW * sinR;\n const a11 = cosR + w * (1 - cosR);\n const a12 = w * (1 - cosR) - sqrW * sinR;\n const a20 = w * (1 - cosR) - sqrW * sinR;\n const a21 = w * (1 - cosR) + sqrW * sinR;\n const a22 = cosR + w * (1 - cosR);\n const matrix = [\n a00,\n a01,\n a02,\n 0,\n 0,\n a10,\n a11,\n a12,\n 0,\n 0,\n a20,\n a21,\n a22,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n contrast(amount, multiply) {\n const v = (amount || 0) + 1;\n const o = -0.5 * (v - 1);\n const matrix = [\n v,\n 0,\n 0,\n 0,\n o,\n 0,\n v,\n 0,\n 0,\n o,\n 0,\n 0,\n v,\n 0,\n o,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n saturate(amount = 0, multiply) {\n const x = amount * 2 / 3 + 1;\n const y = (x - 1) * -0.5;\n const matrix = [\n x,\n y,\n y,\n 0,\n 0,\n y,\n x,\n y,\n 0,\n 0,\n y,\n y,\n x,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n desaturate() {\n this.saturate(-1);\n }\n negative(multiply) {\n const matrix = [\n -1,\n 0,\n 0,\n 1,\n 0,\n 0,\n -1,\n 0,\n 1,\n 0,\n 0,\n 0,\n -1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n sepia(multiply) {\n const matrix = [\n 0.393,\n 0.7689999,\n 0.18899999,\n 0,\n 0,\n 0.349,\n 0.6859999,\n 0.16799999,\n 0,\n 0,\n 0.272,\n 0.5339999,\n 0.13099999,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n technicolor(multiply) {\n const matrix = [\n 1.9125277891456083,\n -0.8545344976951645,\n -0.09155508482755585,\n 0,\n 11.793603434377337,\n -0.3087833385928097,\n 1.7658908555458428,\n -0.10601743074722245,\n 0,\n -70.35205161461398,\n -0.231103377548616,\n -0.7501899197440212,\n 1.847597816108189,\n 0,\n 30.950940869491138,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n polaroid(multiply) {\n const matrix = [\n 1.438,\n -0.062,\n -0.062,\n 0,\n 0,\n -0.122,\n 1.378,\n -0.122,\n 0,\n 0,\n -0.016,\n -0.016,\n 1.483,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n toBGR(multiply) {\n const matrix = [\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n kodachrome(multiply) {\n const matrix = [\n 1.1285582396593525,\n -0.3967382283601348,\n -0.03992559172921793,\n 0,\n 63.72958762196502,\n -0.16404339962244616,\n 1.0835251566291304,\n -0.05498805115633132,\n 0,\n 24.732407896706203,\n -0.16786010706155763,\n -0.5603416277695248,\n 1.6014850761964943,\n 0,\n 35.62982807460946,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n browni(multiply) {\n const matrix = [\n 0.5997023498159715,\n 0.34553243048391263,\n -0.2708298674538042,\n 0,\n 47.43192855600873,\n -0.037703249837783157,\n 0.8609577587992641,\n 0.15059552388459913,\n 0,\n -36.96841498319127,\n 0.24113635128153335,\n -0.07441037908422492,\n 0.44972182064877153,\n 0,\n -7.562075277591283,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n vintage(multiply) {\n const matrix = [\n 0.6279345635605994,\n 0.3202183420819367,\n -0.03965408211312453,\n 0,\n 9.651285835294123,\n 0.02578397704808868,\n 0.6441188644374771,\n 0.03259127616149294,\n 0,\n 7.462829176470591,\n 0.0466055556782719,\n -0.0851232987247891,\n 0.5241648018700465,\n 0,\n 5.159190588235296,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n colorTone(desaturation, toned, lightColor, darkColor, multiply) {\n desaturation = desaturation || 0.2;\n toned = toned || 0.15;\n lightColor = lightColor || 16770432;\n darkColor = darkColor || 3375104;\n const temp = Color.shared;\n const [lR, lG, lB] = temp.setValue(lightColor).toArray();\n const [dR, dG, dB] = temp.setValue(darkColor).toArray();\n const matrix = [\n 0.3,\n 0.59,\n 0.11,\n 0,\n 0,\n lR,\n lG,\n lB,\n desaturation,\n 0,\n dR,\n dG,\n dB,\n toned,\n 0,\n lR - dR,\n lG - dG,\n lB - dB,\n 0,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n night(intensity, multiply) {\n intensity = intensity || 0.1;\n const matrix = [\n intensity * -2,\n -intensity,\n 0,\n 0,\n 0,\n -intensity,\n 0,\n intensity,\n 0,\n 0,\n 0,\n intensity,\n intensity * 2,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n predator(amount, multiply) {\n const matrix = [\n 11.224130630493164 * amount,\n -4.794486999511719 * amount,\n -2.8746118545532227 * amount,\n 0 * amount,\n 0.40342438220977783 * amount,\n -3.6330697536468506 * amount,\n 9.193157196044922 * amount,\n -2.951810836791992 * amount,\n 0 * amount,\n -1.316135048866272 * amount,\n -3.2184197902679443 * amount,\n -4.2375030517578125 * amount,\n 7.476448059082031 * amount,\n 0 * amount,\n 0.8044459223747253 * amount,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n lsd(multiply) {\n const matrix = [\n 2,\n -0.4,\n 0.5,\n 0,\n 0,\n -0.5,\n 2,\n -0.4,\n 0,\n 0,\n -0.4,\n -0.5,\n 3,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, multiply);\n }\n reset() {\n const matrix = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0\n ];\n this._loadMatrix(matrix, false);\n }\n get matrix() {\n return this.uniforms.m;\n }\n set matrix(value) {\n this.uniforms.m = value;\n }\n get alpha() {\n return this.uniforms.uAlpha;\n }\n set alpha(value) {\n this.uniforms.uAlpha = value;\n }\n}\nColorMatrixFilter.prototype.grayscale = ColorMatrixFilter.prototype.greyscale;\n\nexport { ColorMatrixFilter };\n//# sourceMappingURL=ColorMatrixFilter.mjs.map\n","var fragment = \"varying vec2 vTextureCoord;\\nuniform sampler2D uSampler;\\nuniform float m[20];\\nuniform float uAlpha;\\n\\nvoid main(void)\\n{\\n vec4 c = texture2D(uSampler, vTextureCoord);\\n\\n if (uAlpha == 0.0) {\\n gl_FragColor = c;\\n return;\\n }\\n\\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\\n if (c.a > 0.0) {\\n c.rgb /= c.a;\\n }\\n\\n vec4 result;\\n\\n result.r = (m[0] * c.r);\\n result.r += (m[1] * c.g);\\n result.r += (m[2] * c.b);\\n result.r += (m[3] * c.a);\\n result.r += m[4];\\n\\n result.g = (m[5] * c.r);\\n result.g += (m[6] * c.g);\\n result.g += (m[7] * c.b);\\n result.g += (m[8] * c.a);\\n result.g += m[9];\\n\\n result.b = (m[10] * c.r);\\n result.b += (m[11] * c.g);\\n result.b += (m[12] * c.b);\\n result.b += (m[13] * c.a);\\n result.b += m[14];\\n\\n result.a = (m[15] * c.r);\\n result.a += (m[16] * c.g);\\n result.a += (m[17] * c.b);\\n result.a += (m[18] * c.a);\\n result.a += m[19];\\n\\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\\n\\n // Premultiply alpha again.\\n rgb *= result.a;\\n\\n gl_FragColor = vec4(rgb, result.a);\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=colorMatrix.mjs.map\n","import { Filter, Matrix, Point } from '@pixi/core';\nimport fragment from './displacement.mjs';\nimport vertex from './displacement2.mjs';\n\nclass DisplacementFilter extends Filter {\n constructor(sprite, scale) {\n const maskMatrix = new Matrix();\n sprite.renderable = false;\n super(vertex, fragment, {\n mapSampler: sprite._texture,\n filterMatrix: maskMatrix,\n scale: { x: 1, y: 1 },\n rotation: new Float32Array([1, 0, 0, 1])\n });\n this.maskSprite = sprite;\n this.maskMatrix = maskMatrix;\n if (scale === null || scale === void 0) {\n scale = 20;\n }\n this.scale = new Point(scale, scale);\n }\n apply(filterManager, input, output, clearMode) {\n this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite);\n this.uniforms.scale.x = this.scale.x;\n this.uniforms.scale.y = this.scale.y;\n const wt = this.maskSprite.worldTransform;\n const lenX = Math.sqrt(wt.a * wt.a + wt.b * wt.b);\n const lenY = Math.sqrt(wt.c * wt.c + wt.d * wt.d);\n if (lenX !== 0 && lenY !== 0) {\n this.uniforms.rotation[0] = wt.a / lenX;\n this.uniforms.rotation[1] = wt.b / lenX;\n this.uniforms.rotation[2] = wt.c / lenY;\n this.uniforms.rotation[3] = wt.d / lenY;\n }\n filterManager.applyFilter(this, input, output, clearMode);\n }\n get map() {\n return this.uniforms.mapSampler;\n }\n set map(value) {\n this.uniforms.mapSampler = value;\n }\n}\n\nexport { DisplacementFilter };\n//# sourceMappingURL=DisplacementFilter.mjs.map\n","var vertex = \"attribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\nuniform mat3 filterMatrix;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec2 vFilterCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvec2 filterTextureCoord( void )\\n{\\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\\n}\\n\\nvoid main(void)\\n{\\n\\tgl_Position = filterVertexPosition();\\n\\tvTextureCoord = filterTextureCoord();\\n\\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=displacement2.mjs.map\n","var fragment = \"varying vec2 vFilterCoord;\\nvarying vec2 vTextureCoord;\\n\\nuniform vec2 scale;\\nuniform mat2 rotation;\\nuniform sampler2D uSampler;\\nuniform sampler2D mapSampler;\\n\\nuniform highp vec4 inputSize;\\nuniform vec4 inputClamp;\\n\\nvoid main(void)\\n{\\n vec4 map = texture2D(mapSampler, vFilterCoord);\\n\\n map -= 0.5;\\n map.xy = scale * inputSize.zw * (rotation * map.xy);\\n\\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=displacement.mjs.map\n","import { Filter } from '@pixi/core';\nimport fragment from './fxaa.mjs';\nimport vertex from './fxaa2.mjs';\n\nclass FXAAFilter extends Filter {\n constructor() {\n super(vertex, fragment);\n }\n}\n\nexport { FXAAFilter };\n//# sourceMappingURL=FXAAFilter.mjs.map\n","var vertex = \"\\nattribute vec2 aVertexPosition;\\n\\nuniform mat3 projectionMatrix;\\n\\nvarying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nvarying vec2 vFragCoord;\\n\\nuniform vec4 inputSize;\\nuniform vec4 outputFrame;\\n\\nvec4 filterVertexPosition( void )\\n{\\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\\n\\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\\n\\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\\n out vec2 v_rgbNW, out vec2 v_rgbNE,\\n out vec2 v_rgbSW, out vec2 v_rgbSE,\\n out vec2 v_rgbM) {\\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\\n v_rgbM = vec2(fragCoord * inverseVP);\\n}\\n\\nvoid main(void) {\\n\\n gl_Position = filterVertexPosition();\\n\\n vFragCoord = aVertexPosition * outputFrame.zw;\\n\\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n}\\n\";\n\nexport { vertex as default };\n//# sourceMappingURL=fxaa2.mjs.map\n","var fragment = \"varying vec2 v_rgbNW;\\nvarying vec2 v_rgbNE;\\nvarying vec2 v_rgbSW;\\nvarying vec2 v_rgbSE;\\nvarying vec2 v_rgbM;\\n\\nvarying vec2 vFragCoord;\\nuniform sampler2D uSampler;\\nuniform highp vec4 inputSize;\\n\\n\\n/**\\n Basic FXAA implementation based on the code on geeks3d.com with the\\n modification that the texture2DLod stuff was removed since it's\\n unsupported by WebGL.\\n\\n --\\n\\n From:\\n https://github.com/mitsuhiko/webgl-meincraft\\n\\n Copyright (c) 2011 by Armin Ronacher.\\n\\n Some rights reserved.\\n\\n Redistribution and use in source and binary forms, with or without\\n modification, are permitted provided that the following conditions are\\n met:\\n\\n * Redistributions of source code must retain the above copyright\\n notice, this list of conditions and the following disclaimer.\\n\\n * Redistributions in binary form must reproduce the above\\n copyright notice, this list of conditions and the following\\n disclaimer in the documentation and/or other materials provided\\n with the distribution.\\n\\n * The names of the contributors may not be used to endorse or\\n promote products derived from this software without specific\\n prior written permission.\\n\\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\\n \\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n#ifndef FXAA_REDUCE_MIN\\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\\n#endif\\n#ifndef FXAA_REDUCE_MUL\\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\\n#endif\\n#ifndef FXAA_SPAN_MAX\\n#define FXAA_SPAN_MAX 8.0\\n#endif\\n\\n//optimized version for mobile, where dependent\\n//texture reads can be a bottleneck\\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\\n vec2 v_rgbNW, vec2 v_rgbNE,\\n vec2 v_rgbSW, vec2 v_rgbSE,\\n vec2 v_rgbM) {\\n vec4 color;\\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\\n vec4 texColor = texture2D(tex, v_rgbM);\\n vec3 rgbM = texColor.xyz;\\n vec3 luma = vec3(0.299, 0.587, 0.114);\\n float lumaNW = dot(rgbNW, luma);\\n float lumaNE = dot(rgbNE, luma);\\n float lumaSW = dot(rgbSW, luma);\\n float lumaSE = dot(rgbSE, luma);\\n float lumaM = dot(rgbM, luma);\\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\\n\\n mediump vec2 dir;\\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\\n\\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\\n\\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\\n dir * rcpDirMin)) * inverseVP;\\n\\n vec3 rgbA = 0.5 * (\\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\\n\\n float lumaB = dot(rgbB, luma);\\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\\n color = vec4(rgbA, texColor.a);\\n else\\n color = vec4(rgbB, texColor.a);\\n return color;\\n}\\n\\nvoid main() {\\n\\n vec4 color;\\n\\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\\n\\n gl_FragColor = color;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=fxaa.mjs.map\n","import { Filter, defaultFilterVertex } from '@pixi/core';\nimport fragment from './noise.mjs';\n\nclass NoiseFilter extends Filter {\n constructor(noise = 0.5, seed = Math.random()) {\n super(defaultFilterVertex, fragment, {\n uNoise: 0,\n uSeed: 0\n });\n this.noise = noise;\n this.seed = seed;\n }\n get noise() {\n return this.uniforms.uNoise;\n }\n set noise(value) {\n this.uniforms.uNoise = value;\n }\n get seed() {\n return this.uniforms.uSeed;\n }\n set seed(value) {\n this.uniforms.uSeed = value;\n }\n}\n\nexport { NoiseFilter };\n//# sourceMappingURL=NoiseFilter.mjs.map\n","var fragment = \"precision highp float;\\n\\nvarying vec2 vTextureCoord;\\nvarying vec4 vColor;\\n\\nuniform float uNoise;\\nuniform float uSeed;\\nuniform sampler2D uSampler;\\n\\nfloat rand(vec2 co)\\n{\\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\\n}\\n\\nvoid main()\\n{\\n vec4 color = texture2D(uSampler, vTextureCoord);\\n float randomValue = rand(gl_FragCoord.xy * uSeed);\\n float diff = (randomValue - 0.5) * uNoise;\\n\\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\\n if (color.a > 0.0) {\\n color.rgb /= color.a;\\n }\\n\\n color.r += diff;\\n color.g += diff;\\n color.b += diff;\\n\\n // Premultiply alpha again.\\n color.rgb *= color.a;\\n\\n gl_FragColor = color;\\n}\\n\";\n\nexport { fragment as default };\n//# sourceMappingURL=noise.mjs.map\n","import { utils } from '@pixi/core';\nimport { AlphaFilter } from '@pixi/filter-alpha';\nimport { BlurFilter, BlurFilterPass } from '@pixi/filter-blur';\nimport { ColorMatrixFilter } from '@pixi/filter-color-matrix';\nimport { DisplacementFilter } from '@pixi/filter-displacement';\nimport { FXAAFilter } from '@pixi/filter-fxaa';\nimport { NoiseFilter } from '@pixi/filter-noise';\n\nconst filters = {\n AlphaFilter,\n BlurFilter,\n BlurFilterPass,\n ColorMatrixFilter,\n DisplacementFilter,\n FXAAFilter,\n NoiseFilter\n};\nObject.entries(filters).forEach(([key, FilterClass]) => {\n Object.defineProperty(filters, key, {\n get() {\n utils.deprecation(\"7.1.0\", `filters.${key} has moved to ${key}`);\n return FilterClass;\n }\n });\n});\n\nexport { filters };\n//# sourceMappingURL=filters.mjs.map\n","import { Ticker, UPDATE_PRIORITY } from '@pixi/core';\n\nclass EventsTickerClass {\n constructor() {\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this.tickerAdded = false;\n this._pauseUpdate = true;\n }\n init(events) {\n this.removeTickerListener();\n this.events = events;\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this.tickerAdded = false;\n this._pauseUpdate = true;\n }\n get pauseUpdate() {\n return this._pauseUpdate;\n }\n set pauseUpdate(paused) {\n this._pauseUpdate = paused;\n }\n addTickerListener() {\n if (this.tickerAdded || !this.domElement) {\n return;\n }\n Ticker.system.add(this.tickerUpdate, this, UPDATE_PRIORITY.INTERACTION);\n this.tickerAdded = true;\n }\n removeTickerListener() {\n if (!this.tickerAdded) {\n return;\n }\n Ticker.system.remove(this.tickerUpdate, this);\n this.tickerAdded = false;\n }\n pointerMoved() {\n this._didMove = true;\n }\n update() {\n if (!this.domElement || this._pauseUpdate) {\n return;\n }\n if (this._didMove) {\n this._didMove = false;\n return;\n }\n const rootPointerEvent = this.events[\"rootPointerEvent\"];\n if (this.events.supportsTouchEvents && rootPointerEvent.pointerType === \"touch\") {\n return;\n }\n globalThis.document.dispatchEvent(new PointerEvent(\"pointermove\", {\n clientX: rootPointerEvent.clientX,\n clientY: rootPointerEvent.clientY\n }));\n }\n tickerUpdate(deltaTime) {\n this._deltaTime += deltaTime;\n if (this._deltaTime < this.interactionFrequency) {\n return;\n }\n this._deltaTime = 0;\n this.update();\n }\n}\nconst EventsTicker = new EventsTickerClass();\n\nexport { EventsTicker };\n//# sourceMappingURL=EventTicker.mjs.map\n","import { Point } from '@pixi/core';\n\nclass FederatedEvent {\n constructor(manager) {\n this.bubbles = true;\n this.cancelBubble = true;\n this.cancelable = false;\n this.composed = false;\n this.defaultPrevented = false;\n this.eventPhase = FederatedEvent.prototype.NONE;\n this.propagationStopped = false;\n this.propagationImmediatelyStopped = false;\n this.layer = new Point();\n this.page = new Point();\n this.NONE = 0;\n this.CAPTURING_PHASE = 1;\n this.AT_TARGET = 2;\n this.BUBBLING_PHASE = 3;\n this.manager = manager;\n }\n get layerX() {\n return this.layer.x;\n }\n get layerY() {\n return this.layer.y;\n }\n get pageX() {\n return this.page.x;\n }\n get pageY() {\n return this.page.y;\n }\n get data() {\n return this;\n }\n composedPath() {\n if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n return this.path;\n }\n initEvent(_type, _bubbles, _cancelable) {\n throw new Error(\"initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {\n throw new Error(\"initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n preventDefault() {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {\n this.nativeEvent.preventDefault();\n }\n this.defaultPrevented = true;\n }\n stopImmediatePropagation() {\n this.propagationImmediatelyStopped = true;\n }\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\nexport { FederatedEvent };\n//# sourceMappingURL=FederatedEvent.mjs.map\n","import { Point } from '@pixi/core';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\nclass FederatedMouseEvent extends FederatedEvent {\n constructor() {\n super(...arguments);\n this.client = new Point();\n this.movement = new Point();\n this.offset = new Point();\n this.global = new Point();\n this.screen = new Point();\n }\n get clientX() {\n return this.client.x;\n }\n get clientY() {\n return this.client.y;\n }\n get x() {\n return this.clientX;\n }\n get y() {\n return this.clientY;\n }\n get movementX() {\n return this.movement.x;\n }\n get movementY() {\n return this.movement.y;\n }\n get offsetX() {\n return this.offset.x;\n }\n get offsetY() {\n return this.offset.y;\n }\n get globalX() {\n return this.global.x;\n }\n get globalY() {\n return this.global.y;\n }\n get screenX() {\n return this.screen.x;\n }\n get screenY() {\n return this.screen.y;\n }\n getLocalPosition(displayObject, point, globalPos) {\n return displayObject.worldTransform.applyInverse(globalPos || this.global, point);\n }\n getModifierState(key) {\n return \"getModifierState\" in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n initMouseEvent(_typeArg, _canBubbleArg, _cancelableArg, _viewArg, _detailArg, _screenXArg, _screenYArg, _clientXArg, _clientYArg, _ctrlKeyArg, _altKeyArg, _shiftKeyArg, _metaKeyArg, _buttonArg, _relatedTargetArg) {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport { FederatedMouseEvent };\n//# sourceMappingURL=FederatedMouseEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\nclass FederatedPointerEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n this.width = 0;\n this.height = 0;\n this.isPrimary = false;\n }\n getCoalescedEvents() {\n if (this.type === \"pointermove\" || this.type === \"mousemove\" || this.type === \"touchmove\") {\n return [this];\n }\n return [];\n }\n getPredictedEvents() {\n throw new Error(\"getPredictedEvents is not supported!\");\n }\n}\n\nexport { FederatedPointerEvent };\n//# sourceMappingURL=FederatedPointerEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\nclass FederatedWheelEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n this.DOM_DELTA_PIXEL = 0;\n this.DOM_DELTA_LINE = 1;\n this.DOM_DELTA_PAGE = 2;\n }\n}\nFederatedWheelEvent.DOM_DELTA_PIXEL = 0;\nFederatedWheelEvent.DOM_DELTA_LINE = 1;\nFederatedWheelEvent.DOM_DELTA_PAGE = 2;\n\nexport { FederatedWheelEvent };\n//# sourceMappingURL=FederatedWheelEvent.mjs.map\n","import { Point, utils } from '@pixi/core';\nimport { EventsTicker } from './EventTicker.mjs';\nimport { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\n\nconst PROPAGATION_LIMIT = 2048;\nconst tempHitLocation = new Point();\nconst tempLocalMapping = new Point();\nclass EventBoundary {\n constructor(rootTarget) {\n this.dispatch = new utils.EventEmitter();\n this.moveOnAll = false;\n this.enableGlobalMoveEvents = true;\n this.mappingState = {\n trackingData: {}\n };\n this.eventPool = /* @__PURE__ */ new Map();\n this._allInteractiveElements = [];\n this._hitElements = [];\n this._isPointerMoveEvent = false;\n this.rootTarget = rootTarget;\n this.hitPruneFn = this.hitPruneFn.bind(this);\n this.hitTestFn = this.hitTestFn.bind(this);\n this.mapPointerDown = this.mapPointerDown.bind(this);\n this.mapPointerMove = this.mapPointerMove.bind(this);\n this.mapPointerOut = this.mapPointerOut.bind(this);\n this.mapPointerOver = this.mapPointerOver.bind(this);\n this.mapPointerUp = this.mapPointerUp.bind(this);\n this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this);\n this.mapWheel = this.mapWheel.bind(this);\n this.mappingTable = {};\n this.addEventMapping(\"pointerdown\", this.mapPointerDown);\n this.addEventMapping(\"pointermove\", this.mapPointerMove);\n this.addEventMapping(\"pointerout\", this.mapPointerOut);\n this.addEventMapping(\"pointerleave\", this.mapPointerOut);\n this.addEventMapping(\"pointerover\", this.mapPointerOver);\n this.addEventMapping(\"pointerup\", this.mapPointerUp);\n this.addEventMapping(\"pointerupoutside\", this.mapPointerUpOutside);\n this.addEventMapping(\"wheel\", this.mapWheel);\n }\n addEventMapping(type, fn) {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n dispatchEvent(e, type) {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n mapEvent(e) {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e);\n }\n } else {\n console.warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n }\n }\n hitTest(x, y) {\n EventsTicker.pauseUpdate = true;\n const useMove = this._isPointerMoveEvent && this.enableGlobalMoveEvents;\n const fn = useMove ? \"hitTestMoveRecursive\" : \"hitTestRecursive\";\n const invertedPath = this[fn](this.rootTarget, this.rootTarget.eventMode, tempHitLocation.set(x, y), this.hitTestFn, this.hitPruneFn);\n return invertedPath && invertedPath[0];\n }\n propagate(e, type) {\n if (!e.target) {\n return;\n }\n const composedPath = e.composedPath();\n e.eventPhase = e.CAPTURING_PHASE;\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n }\n all(e, type, targets = this._allInteractiveElements) {\n if (targets.length === 0)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n const events = Array.isArray(type) ? type : [type];\n for (let i = targets.length - 1; i >= 0; i--) {\n events.forEach((event) => {\n e.currentTarget = targets[i];\n this.notifyTarget(e, event);\n });\n }\n }\n propagationPath(target) {\n const propagationPath = [target];\n for (let i = 0; i < PROPAGATION_LIMIT && target !== this.rootTarget; i++) {\n if (!target.parent) {\n throw new Error(\"Cannot find propagation path to disconnected target\");\n }\n propagationPath.push(target.parent);\n target = target.parent;\n }\n propagationPath.reverse();\n return propagationPath;\n }\n hitTestMoveRecursive(currentTarget, eventMode, location, testFn, pruneFn, ignore = false) {\n let shouldReturn = false;\n if (this._interactivePrune(currentTarget))\n return null;\n if (currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") {\n EventsTicker.pauseUpdate = false;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestMoveRecursive(child, this._isInteractive(eventMode) ? eventMode : child.eventMode, location, testFn, pruneFn, ignore || pruneFn(currentTarget, location));\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n const isInteractive = currentTarget.isInteractive();\n if (nestedHit.length > 0 || isInteractive) {\n if (isInteractive)\n this._allInteractiveElements.push(currentTarget);\n nestedHit.push(currentTarget);\n }\n if (this._hitElements.length === 0)\n this._hitElements = nestedHit;\n shouldReturn = true;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n if (isInteractiveTarget && isInteractiveTarget)\n this._allInteractiveElements.push(currentTarget);\n if (ignore || this._hitElements.length > 0)\n return null;\n if (shouldReturn)\n return this._hitElements;\n if (isInteractiveMode && (!pruneFn(currentTarget, location) && testFn(currentTarget, location))) {\n return isInteractiveTarget ? [currentTarget] : [];\n }\n return null;\n }\n hitTestRecursive(currentTarget, eventMode, location, testFn, pruneFn) {\n if (this._interactivePrune(currentTarget) || pruneFn(currentTarget, location)) {\n return null;\n }\n if (currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") {\n EventsTicker.pauseUpdate = false;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestRecursive(child, this._isInteractive(eventMode) ? eventMode : child.eventMode, location, testFn, pruneFn);\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n const isInteractive = currentTarget.isInteractive();\n if (nestedHit.length > 0 || isInteractive)\n nestedHit.push(currentTarget);\n return nestedHit;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n if (isInteractiveMode && testFn(currentTarget, location)) {\n return isInteractiveTarget ? [currentTarget] : [];\n }\n return null;\n }\n _isInteractive(int) {\n return int === \"static\" || int === \"dynamic\";\n }\n _interactivePrune(displayObject) {\n if (!displayObject || displayObject.isMask || !displayObject.visible || !displayObject.renderable) {\n return true;\n }\n if (displayObject.eventMode === \"none\") {\n return true;\n }\n if (displayObject.eventMode === \"passive\" && !displayObject.interactiveChildren) {\n return true;\n }\n if (displayObject.isMask) {\n return true;\n }\n return false;\n }\n hitPruneFn(displayObject, location) {\n if (displayObject.hitArea) {\n displayObject.worldTransform.applyInverse(location, tempLocalMapping);\n if (!displayObject.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) {\n return true;\n }\n }\n if (displayObject._mask) {\n const maskObject = displayObject._mask.isMaskData ? displayObject._mask.maskObject : displayObject._mask;\n if (maskObject && !maskObject.containsPoint?.(location)) {\n return true;\n }\n }\n return false;\n }\n hitTestFn(displayObject, location) {\n if (displayObject.eventMode === \"passive\") {\n return false;\n }\n if (displayObject.hitArea) {\n return true;\n }\n if (displayObject.containsPoint) {\n return displayObject.containsPoint(location);\n }\n return false;\n }\n notifyTarget(e, type) {\n type = type ?? e.type;\n const handlerKey = `on${type}`;\n e.currentTarget[handlerKey]?.(e);\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n this.notifyListeners(e, key);\n if (e.eventPhase === e.AT_TARGET) {\n this.notifyListeners(e, type);\n }\n }\n mapPointerDown(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerdown\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchstart\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightdown\" : \"mousedown\");\n }\n const trackingData = this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n this.freeEvent(e);\n }\n mapPointerMove(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n this._isPointerMoveEvent = true;\n const e = this.createPointerEvent(from);\n this._isPointerMoveEvent = false;\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n if (trackingData.overTargets?.length > 0 && outTarget !== e.target) {\n const outType = from.type === \"mousemove\" ? \"mouseout\" : \"pointerout\";\n const outEvent = this.createPointerEvent(from, outType, outTarget);\n this.dispatchEvent(outEvent, \"pointerout\");\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n if (!e.composedPath().includes(outTarget)) {\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n this.freeEvent(leaveEvent);\n }\n this.freeEvent(outEvent);\n }\n if (outTarget !== e.target) {\n const overType = from.type === \"mousemove\" ? \"mouseover\" : \"pointerover\";\n const overEvent = this.clonePointerEvent(e, overType);\n this.dispatchEvent(overEvent, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(overEvent, \"mouseover\");\n let overTargetAncestor = outTarget?.parent;\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target)\n break;\n overTargetAncestor = overTargetAncestor.parent;\n }\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n this.freeEvent(enterEvent);\n }\n this.freeEvent(overEvent);\n }\n const allMethods = [];\n const allowGlobalPointerEvents = this.enableGlobalMoveEvents ?? true;\n this.moveOnAll ? allMethods.push(\"pointermove\") : this.dispatchEvent(e, \"pointermove\");\n allowGlobalPointerEvents && allMethods.push(\"globalpointermove\");\n if (e.pointerType === \"touch\") {\n this.moveOnAll ? allMethods.splice(1, 0, \"touchmove\") : this.dispatchEvent(e, \"touchmove\");\n allowGlobalPointerEvents && allMethods.push(\"globaltouchmove\");\n }\n if (isMouse) {\n this.moveOnAll ? allMethods.splice(1, 0, \"mousemove\") : this.dispatchEvent(e, \"mousemove\");\n allowGlobalPointerEvents && allMethods.push(\"globalmousemove\");\n this.cursor = e.target?.cursor;\n }\n if (allMethods.length > 0) {\n this.all(e, allMethods);\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n }\n mapPointerOver(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n this.dispatchEvent(e, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(e, \"mouseover\");\n if (e.pointerType === \"mouse\")\n this.cursor = e.target?.cursor;\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n }\n mapPointerOut(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n const isMouse = from.pointerType === \"mouse\" || from.pointerType === \"pen\";\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n const outEvent = this.createPointerEvent(from, \"pointerout\", outTarget);\n this.dispatchEvent(outEvent);\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n trackingData.overTargets = null;\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n this.cursor = null;\n }\n mapPointerUp(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const now = performance.now();\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerup\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchend\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightup\" : \"mouseup\");\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n let clickTarget = pressTarget;\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.notifyTarget(e, isRightButton ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n clickTarget = currentTarget;\n }\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, \"click\");\n clickEvent.target = clickTarget;\n clickEvent.path = null;\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n const clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n clickEvent.detail = clickHistory.clickCount;\n if (clickEvent.pointerType === \"mouse\") {\n const isRightButton = clickEvent.button === 2;\n this.dispatchEvent(clickEvent, isRightButton ? \"rightclick\" : \"click\");\n } else if (clickEvent.pointerType === \"touch\") {\n this.dispatchEvent(clickEvent, \"tap\");\n }\n this.dispatchEvent(clickEvent, \"pointertap\");\n this.freeEvent(clickEvent);\n }\n this.freeEvent(e);\n }\n mapPointerUpOutside(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n console.warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from);\n if (pressTarget) {\n let currentTarget = pressTarget;\n while (currentTarget) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n this.notifyTarget(e, e.button === 2 ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n }\n this.freeEvent(e);\n }\n mapWheel(from) {\n if (!(from instanceof FederatedWheelEvent)) {\n console.warn(\"EventBoundary cannot map a non-wheel event as a wheel event\");\n return;\n }\n const wheelEvent = this.createWheelEvent(from);\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n }\n findMountedTarget(propagationPath) {\n if (!propagationPath) {\n return null;\n }\n let currentTarget = propagationPath[0];\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n return currentTarget;\n }\n createPointerEvent(from, type, target) {\n const event = this.allocateEvent(FederatedPointerEvent);\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target ?? this.hitTest(event.global.x, event.global.y) ?? this._hitElements[0];\n if (typeof type === \"string\") {\n event.type = type;\n }\n return event;\n }\n createWheelEvent(from) {\n const event = this.allocateEvent(FederatedWheelEvent);\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = this.hitTest(event.global.x, event.global.y);\n return event;\n }\n clonePointerEvent(from, type) {\n const event = this.allocateEvent(FederatedPointerEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n return event;\n }\n copyWheelData(from, to) {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n copyPointerData(from, to) {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent))\n return;\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n copyMouseData(from, to) {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent))\n return;\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.client.copyFrom(from.client);\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.movement.copyFrom(from.movement);\n to.screen.copyFrom(from.screen);\n to.shiftKey = from.shiftKey;\n to.global.copyFrom(from.global);\n }\n copyData(from, to) {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = performance.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n to.layer.copyFrom(from.layer);\n to.page.copyFrom(from.page);\n }\n trackingData(id) {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n return this.mappingState.trackingData[id];\n }\n allocateEvent(constructor) {\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n const event = this.eventPool.get(constructor).pop() || new constructor(this);\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = null;\n event.target = null;\n return event;\n }\n freeEvent(event) {\n if (event.manager !== this)\n throw new Error(\"It is illegal to free an event not managed by this EventBoundary!\");\n const constructor = event.constructor;\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n this.eventPool.get(constructor).push(event);\n }\n notifyListeners(e, type) {\n const listeners = e.currentTarget._events[type];\n if (!listeners)\n return;\n if (!e.currentTarget.isInteractive())\n return;\n if (\"fn\" in listeners) {\n if (listeners.once)\n e.currentTarget.removeListener(type, listeners.fn, void 0, true);\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n if (listeners[i].once)\n e.currentTarget.removeListener(type, listeners[i].fn, void 0, true);\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n}\n\nexport { EventBoundary };\n//# sourceMappingURL=EventBoundary.mjs.map\n","import { ExtensionType, extensions } from '@pixi/core';\nimport { EventBoundary } from './EventBoundary.mjs';\nimport { EventsTicker } from './EventTicker.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\n\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER = {\n touchstart: \"pointerdown\",\n touchend: \"pointerup\",\n touchendoutside: \"pointerupoutside\",\n touchmove: \"pointermove\",\n touchcancel: \"pointercancel\"\n};\nconst _EventSystem = class {\n constructor(renderer) {\n this.supportsTouchEvents = \"ontouchstart\" in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.domElement = null;\n this.resolution = 1;\n this.renderer = renderer;\n this.rootBoundary = new EventBoundary(null);\n EventsTicker.init(this);\n this.autoPreventDefault = true;\n this.eventsAdded = false;\n this.rootPointerEvent = new FederatedPointerEvent(null);\n this.rootWheelEvent = new FederatedWheelEvent(null);\n this.cursorStyles = {\n default: \"inherit\",\n pointer: \"pointer\"\n };\n this.features = new Proxy({ ..._EventSystem.defaultEventFeatures }, {\n set: (target, key, value) => {\n if (key === \"globalMove\") {\n this.rootBoundary.enableGlobalMoveEvents = value;\n }\n target[key] = value;\n return true;\n }\n });\n this.onPointerDown = this.onPointerDown.bind(this);\n this.onPointerMove = this.onPointerMove.bind(this);\n this.onPointerUp = this.onPointerUp.bind(this);\n this.onPointerOverOut = this.onPointerOverOut.bind(this);\n this.onWheel = this.onWheel.bind(this);\n }\n static get defaultEventMode() {\n return this._defaultEventMode;\n }\n init(options) {\n const { view, resolution } = this.renderer;\n this.setTargetElement(view);\n this.resolution = resolution;\n _EventSystem._defaultEventMode = options.eventMode ?? \"auto\";\n Object.assign(this.features, options.eventFeatures ?? {});\n this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;\n }\n resolutionChange(resolution) {\n this.resolution = resolution;\n }\n destroy() {\n this.setTargetElement(null);\n this.renderer = null;\n }\n setCursor(mode) {\n mode = mode || \"default\";\n let applyStyles = true;\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas) {\n applyStyles = false;\n }\n if (this.currentCursor === mode) {\n return;\n }\n this.currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n switch (typeof style) {\n case \"string\":\n if (applyStyles) {\n this.domElement.style.cursor = style;\n }\n break;\n case \"function\":\n style(mode);\n break;\n case \"object\":\n if (applyStyles) {\n Object.assign(this.domElement.style, style);\n }\n break;\n }\n } else if (applyStyles && typeof mode === \"string\" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode)) {\n this.domElement.style.cursor = mode;\n }\n }\n get pointer() {\n return this.rootPointerEvent;\n }\n onPointerDown(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const events = this.normalizeToPointerData(nativeEvent);\n if (this.autoPreventDefault && events[0].isNormalized) {\n const cancelable = nativeEvent.cancelable || !(\"cancelable\" in nativeEvent);\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent2 = events[i];\n const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent2);\n this.rootBoundary.mapEvent(federatedEvent);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerMove(nativeEvent) {\n if (!this.features.move)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n EventsTicker.pointerMoved();\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerUp(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n let target = nativeEvent.target;\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n const outside = target !== this.domElement ? \"outside\" : \"\";\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n event.type += outside;\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onPointerOverOut(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n if (this.supportsTouchEvents && nativeEvent.pointerType === \"touch\")\n return;\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n onWheel(nativeEvent) {\n if (!this.features.wheel)\n return;\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n this.rootBoundary.mapEvent(wheelEvent);\n }\n setTargetElement(element) {\n this.removeEvents();\n this.domElement = element;\n EventsTicker.domElement = element;\n this.addEvents();\n }\n addEvents() {\n if (this.eventsAdded || !this.domElement) {\n return;\n }\n EventsTicker.addTickerListener();\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"none\";\n style.msTouchAction = \"none\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"none\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.addEventListener(\"pointermove\", this.onPointerMove, true);\n this.domElement.addEventListener(\"pointerdown\", this.onPointerDown, true);\n this.domElement.addEventListener(\"pointerleave\", this.onPointerOverOut, true);\n this.domElement.addEventListener(\"pointerover\", this.onPointerOverOut, true);\n globalThis.addEventListener(\"pointerup\", this.onPointerUp, true);\n } else {\n globalThis.document.addEventListener(\"mousemove\", this.onPointerMove, true);\n this.domElement.addEventListener(\"mousedown\", this.onPointerDown, true);\n this.domElement.addEventListener(\"mouseout\", this.onPointerOverOut, true);\n this.domElement.addEventListener(\"mouseover\", this.onPointerOverOut, true);\n globalThis.addEventListener(\"mouseup\", this.onPointerUp, true);\n }\n if (this.supportsTouchEvents) {\n this.domElement.addEventListener(\"touchstart\", this.onPointerDown, true);\n this.domElement.addEventListener(\"touchend\", this.onPointerUp, true);\n this.domElement.addEventListener(\"touchmove\", this.onPointerMove, true);\n }\n this.domElement.addEventListener(\"wheel\", this.onWheel, {\n passive: true,\n capture: true\n });\n this.eventsAdded = true;\n }\n removeEvents() {\n if (!this.eventsAdded || !this.domElement) {\n return;\n }\n EventsTicker.removeTickerListener();\n const style = this.domElement.style;\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"\";\n style.msTouchAction = \"\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"\";\n }\n if (this.supportsPointerEvents) {\n globalThis.document.removeEventListener(\"pointermove\", this.onPointerMove, true);\n this.domElement.removeEventListener(\"pointerdown\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"pointerleave\", this.onPointerOverOut, true);\n this.domElement.removeEventListener(\"pointerover\", this.onPointerOverOut, true);\n globalThis.removeEventListener(\"pointerup\", this.onPointerUp, true);\n } else {\n globalThis.document.removeEventListener(\"mousemove\", this.onPointerMove, true);\n this.domElement.removeEventListener(\"mousedown\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"mouseout\", this.onPointerOverOut, true);\n this.domElement.removeEventListener(\"mouseover\", this.onPointerOverOut, true);\n globalThis.removeEventListener(\"mouseup\", this.onPointerUp, true);\n }\n if (this.supportsTouchEvents) {\n this.domElement.removeEventListener(\"touchstart\", this.onPointerDown, true);\n this.domElement.removeEventListener(\"touchend\", this.onPointerUp, true);\n this.domElement.removeEventListener(\"touchmove\", this.onPointerMove, true);\n }\n this.domElement.removeEventListener(\"wheel\", this.onWheel, true);\n this.domElement = null;\n this.eventsAdded = false;\n }\n mapPositionToPoint(point, x, y) {\n let rect;\n if (!this.domElement.parentElement) {\n rect = {\n x: 0,\n y: 0,\n width: this.domElement.width,\n height: this.domElement.height,\n left: 0,\n top: 0\n };\n } else {\n rect = this.domElement.getBoundingClientRect();\n }\n const resolutionMultiplier = 1 / this.resolution;\n point.x = (x - rect.left) * (this.domElement.width / rect.width) * resolutionMultiplier;\n point.y = (y - rect.top) * (this.domElement.height / rect.height) * resolutionMultiplier;\n }\n normalizeToPointerData(event) {\n const normalizedEvents = [];\n if (this.supportsTouchEvents && event instanceof TouchEvent) {\n for (let i = 0, li = event.changedTouches.length; i < li; i++) {\n const touch = event.changedTouches[i];\n if (typeof touch.button === \"undefined\")\n touch.button = 0;\n if (typeof touch.buttons === \"undefined\")\n touch.buttons = 1;\n if (typeof touch.isPrimary === \"undefined\") {\n touch.isPrimary = event.touches.length === 1 && event.type === \"touchstart\";\n }\n if (typeof touch.width === \"undefined\")\n touch.width = touch.radiusX || 1;\n if (typeof touch.height === \"undefined\")\n touch.height = touch.radiusY || 1;\n if (typeof touch.tiltX === \"undefined\")\n touch.tiltX = 0;\n if (typeof touch.tiltY === \"undefined\")\n touch.tiltY = 0;\n if (typeof touch.pointerType === \"undefined\")\n touch.pointerType = \"touch\";\n if (typeof touch.pointerId === \"undefined\")\n touch.pointerId = touch.identifier || 0;\n if (typeof touch.pressure === \"undefined\")\n touch.pressure = touch.force || 0.5;\n if (typeof touch.twist === \"undefined\")\n touch.twist = 0;\n if (typeof touch.tangentialPressure === \"undefined\")\n touch.tangentialPressure = 0;\n if (typeof touch.layerX === \"undefined\")\n touch.layerX = touch.offsetX = touch.clientX;\n if (typeof touch.layerY === \"undefined\")\n touch.layerY = touch.offsetY = touch.clientY;\n touch.isNormalized = true;\n touch.type = event.type;\n normalizedEvents.push(touch);\n }\n } else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) {\n const tempEvent = event;\n if (typeof tempEvent.isPrimary === \"undefined\")\n tempEvent.isPrimary = true;\n if (typeof tempEvent.width === \"undefined\")\n tempEvent.width = 1;\n if (typeof tempEvent.height === \"undefined\")\n tempEvent.height = 1;\n if (typeof tempEvent.tiltX === \"undefined\")\n tempEvent.tiltX = 0;\n if (typeof tempEvent.tiltY === \"undefined\")\n tempEvent.tiltY = 0;\n if (typeof tempEvent.pointerType === \"undefined\")\n tempEvent.pointerType = \"mouse\";\n if (typeof tempEvent.pointerId === \"undefined\")\n tempEvent.pointerId = MOUSE_POINTER_ID;\n if (typeof tempEvent.pressure === \"undefined\")\n tempEvent.pressure = 0.5;\n if (typeof tempEvent.twist === \"undefined\")\n tempEvent.twist = 0;\n if (typeof tempEvent.tangentialPressure === \"undefined\")\n tempEvent.tangentialPressure = 0;\n tempEvent.isNormalized = true;\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n return normalizedEvents;\n }\n normalizeWheelEvent(nativeEvent) {\n const event = this.rootWheelEvent;\n this.transferMouseData(event, nativeEvent);\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n event.deltaMode = nativeEvent.deltaMode;\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n return event;\n }\n bootstrapEvent(event, nativeEvent) {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n event.pointerId = nativeEvent.pointerId;\n event.width = nativeEvent.width;\n event.height = nativeEvent.height;\n event.isPrimary = nativeEvent.isPrimary;\n event.pointerType = nativeEvent.pointerType;\n event.pressure = nativeEvent.pressure;\n event.tangentialPressure = nativeEvent.tangentialPressure;\n event.tiltX = nativeEvent.tiltX;\n event.tiltY = nativeEvent.tiltY;\n event.twist = nativeEvent.twist;\n this.transferMouseData(event, nativeEvent);\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === \"pointerleave\") {\n event.type = \"pointerout\";\n }\n if (event.type.startsWith(\"mouse\")) {\n event.type = event.type.replace(\"mouse\", \"pointer\");\n }\n if (event.type.startsWith(\"touch\")) {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n return event;\n }\n transferMouseData(event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = performance.now();\n event.type = nativeEvent.type;\n event.altKey = nativeEvent.altKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.metaKey = nativeEvent.metaKey;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.relatedTarget = null;\n event.shiftKey = nativeEvent.shiftKey;\n }\n};\nlet EventSystem = _EventSystem;\nEventSystem.extension = {\n name: \"events\",\n type: [\n ExtensionType.RendererSystem,\n ExtensionType.CanvasRendererSystem\n ]\n};\nEventSystem.defaultEventFeatures = {\n move: true,\n globalMove: true,\n click: true,\n wheel: true\n};\nextensions.add(EventSystem);\n\nexport { EventSystem };\n//# sourceMappingURL=EventSystem.mjs.map\n","import { utils } from '@pixi/core';\nimport { DisplayObject } from '@pixi/display';\nimport { EventSystem } from './EventSystem.mjs';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\nfunction convertEventModeToInteractiveMode(mode) {\n return mode === \"dynamic\" || mode === \"static\";\n}\nconst FederatedDisplayObject = {\n onclick: null,\n onmousedown: null,\n onmouseenter: null,\n onmouseleave: null,\n onmousemove: null,\n onglobalmousemove: null,\n onmouseout: null,\n onmouseover: null,\n onmouseup: null,\n onmouseupoutside: null,\n onpointercancel: null,\n onpointerdown: null,\n onpointerenter: null,\n onpointerleave: null,\n onpointermove: null,\n onglobalpointermove: null,\n onpointerout: null,\n onpointerover: null,\n onpointertap: null,\n onpointerup: null,\n onpointerupoutside: null,\n onrightclick: null,\n onrightdown: null,\n onrightup: null,\n onrightupoutside: null,\n ontap: null,\n ontouchcancel: null,\n ontouchend: null,\n ontouchendoutside: null,\n ontouchmove: null,\n onglobaltouchmove: null,\n ontouchstart: null,\n onwheel: null,\n _internalInteractive: void 0,\n get interactive() {\n return this._internalInteractive ?? convertEventModeToInteractiveMode(EventSystem.defaultEventMode);\n },\n set interactive(value) {\n utils.deprecation(\"7.2.0\", `Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead.`);\n this._internalInteractive = value;\n this.eventMode = value ? \"static\" : \"auto\";\n },\n _internalEventMode: void 0,\n get eventMode() {\n return this._internalEventMode ?? EventSystem.defaultEventMode;\n },\n set eventMode(value) {\n this._internalInteractive = convertEventModeToInteractiveMode(value);\n this._internalEventMode = value;\n },\n isInteractive() {\n return this.eventMode === \"static\" || this.eventMode === \"dynamic\";\n },\n interactiveChildren: true,\n hitArea: null,\n addEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.on(type, listener, context);\n },\n removeEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.off(type, listener, context);\n },\n dispatchEvent(e) {\n if (!(e instanceof FederatedEvent)) {\n throw new Error(\"DisplayObject cannot propagate events outside of the Federated Events API\");\n }\n e.defaultPrevented = false;\n e.path = null;\n e.target = this;\n e.manager.dispatchEvent(e);\n return !e.defaultPrevented;\n }\n};\nDisplayObject.mixin(FederatedDisplayObject);\n\nexport { FederatedDisplayObject };\n//# sourceMappingURL=FederatedEventTarget.mjs.map\n","import { utils, ExtensionType, extensions } from '@pixi/core';\nimport { DisplayObject } from '@pixi/display';\nimport { FederatedEvent } from '@pixi/events';\nimport { accessibleTarget } from './accessibleTarget.mjs';\n\nDisplayObject.mixin(accessibleTarget);\nconst KEY_CODE_TAB = 9;\nconst DIV_TOUCH_SIZE = 100;\nconst DIV_TOUCH_POS_X = 0;\nconst DIV_TOUCH_POS_Y = 0;\nconst DIV_TOUCH_ZINDEX = 2;\nconst DIV_HOOK_SIZE = 1;\nconst DIV_HOOK_POS_X = -1e3;\nconst DIV_HOOK_POS_Y = -1e3;\nconst DIV_HOOK_ZINDEX = 2;\nclass AccessibilityManager {\n constructor(renderer) {\n this.debug = false;\n this._isActive = false;\n this._isMobileAccessibility = false;\n this.pool = [];\n this.renderId = 0;\n this.children = [];\n this.androidUpdateCount = 0;\n this.androidUpdateFrequency = 500;\n this._hookDiv = null;\n if (utils.isMobile.tablet || utils.isMobile.phone) {\n this.createTouchHook();\n }\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.position = \"absolute\";\n div.style.top = `${DIV_TOUCH_POS_X}px`;\n div.style.left = `${DIV_TOUCH_POS_Y}px`;\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n this.div = div;\n this.renderer = renderer;\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n }\n get isActive() {\n return this._isActive;\n }\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.height = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.position = \"absolute\";\n hookDiv.style.top = `${DIV_HOOK_POS_X}px`;\n hookDiv.style.left = `${DIV_HOOK_POS_Y}px`;\n hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString();\n hookDiv.style.backgroundColor = \"#FF0000\";\n hookDiv.title = \"select to enable accessibility for this content\";\n hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = true;\n this.activate();\n this.destroyTouchHook();\n });\n document.body.appendChild(hookDiv);\n this._hookDiv = hookDiv;\n }\n destroyTouchHook() {\n if (!this._hookDiv) {\n return;\n }\n document.body.removeChild(this._hookDiv);\n this._hookDiv = null;\n }\n activate() {\n if (this._isActive) {\n return;\n }\n this._isActive = true;\n globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown, false);\n this.renderer.on(\"postrender\", this.update, this);\n this.renderer.view.parentNode?.appendChild(this.div);\n }\n deactivate() {\n if (!this._isActive || this._isMobileAccessibility) {\n return;\n }\n this._isActive = false;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n this.renderer.off(\"postrender\", this.update);\n this.div.parentNode?.removeChild(this.div);\n }\n updateAccessibleObjects(displayObject) {\n if (!displayObject.visible || !displayObject.accessibleChildren) {\n return;\n }\n if (displayObject.accessible && displayObject.isInteractive()) {\n if (!displayObject._accessibleActive) {\n this.addChild(displayObject);\n }\n displayObject.renderId = this.renderId;\n }\n const children = displayObject.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this.updateAccessibleObjects(children[i]);\n }\n }\n }\n update() {\n const now = performance.now();\n if (utils.isMobile.android.device && now < this.androidUpdateCount) {\n return;\n }\n this.androidUpdateCount = now + this.androidUpdateFrequency;\n if (!this.renderer.renderingToScreen) {\n return;\n }\n if (this.renderer.lastObjectRendered) {\n this.updateAccessibleObjects(this.renderer.lastObjectRendered);\n }\n const { x, y, width, height } = this.renderer.view.getBoundingClientRect();\n const { width: viewWidth, height: viewHeight, resolution } = this.renderer;\n const sx = width / viewWidth * resolution;\n const sy = height / viewHeight * resolution;\n let div = this.div;\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${viewWidth}px`;\n div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child.renderId !== this.renderId) {\n child._accessibleActive = false;\n utils.removeItems(this.children, i, 1);\n this.div.removeChild(child._accessibleDiv);\n this.pool.push(child._accessibleDiv);\n child._accessibleDiv = null;\n i--;\n } else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n if (child.hitArea) {\n div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`;\n div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`;\n div.style.width = `${hitArea.width * wt.a * sx}px`;\n div.style.height = `${hitArea.height * wt.d * sy}px`;\n } else {\n hitArea = child.getBounds();\n this.capHitArea(hitArea);\n div.style.left = `${hitArea.x * sx}px`;\n div.style.top = `${hitArea.y * sy}px`;\n div.style.width = `${hitArea.width * sx}px`;\n div.style.height = `${hitArea.height * sy}px`;\n if (div.title !== child.accessibleTitle && child.accessibleTitle !== null) {\n div.title = child.accessibleTitle;\n }\n if (div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", child.accessibleHint);\n }\n }\n if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) {\n div.title = child.accessibleTitle;\n div.tabIndex = child.tabIndex;\n if (this.debug)\n this.updateDebugHTML(div);\n }\n }\n }\n this.renderId++;\n }\n updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type}
title : ${div.title}
tabIndex: ${div.tabIndex}`;\n }\n capHitArea(hitArea) {\n if (hitArea.x < 0) {\n hitArea.width += hitArea.x;\n hitArea.x = 0;\n }\n if (hitArea.y < 0) {\n hitArea.height += hitArea.y;\n hitArea.y = 0;\n }\n const { width: viewWidth, height: viewHeight } = this.renderer;\n if (hitArea.x + hitArea.width > viewWidth) {\n hitArea.width = viewWidth - hitArea.x;\n }\n if (hitArea.y + hitArea.height > viewHeight) {\n hitArea.height = viewHeight - hitArea.y;\n }\n }\n addChild(displayObject) {\n let div = this.pool.pop();\n if (!div) {\n div = document.createElement(\"button\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\";\n div.style.position = \"absolute\";\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n div.style.borderStyle = \"none\";\n if (navigator.userAgent.toLowerCase().includes(\"chrome\")) {\n div.setAttribute(\"aria-live\", \"off\");\n } else {\n div.setAttribute(\"aria-live\", \"polite\");\n }\n if (navigator.userAgent.match(/rv:.*Gecko\\//)) {\n div.setAttribute(\"aria-relevant\", \"additions\");\n } else {\n div.setAttribute(\"aria-relevant\", \"text\");\n }\n div.addEventListener(\"click\", this._onClick.bind(this));\n div.addEventListener(\"focus\", this._onFocus.bind(this));\n div.addEventListener(\"focusout\", this._onFocusOut.bind(this));\n }\n div.style.pointerEvents = displayObject.accessiblePointerEvents;\n div.type = displayObject.accessibleType;\n if (displayObject.accessibleTitle && displayObject.accessibleTitle !== null) {\n div.title = displayObject.accessibleTitle;\n } else if (!displayObject.accessibleHint || displayObject.accessibleHint === null) {\n div.title = `displayObject ${displayObject.tabIndex}`;\n }\n if (displayObject.accessibleHint && displayObject.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", displayObject.accessibleHint);\n }\n if (this.debug)\n this.updateDebugHTML(div);\n displayObject._accessibleActive = true;\n displayObject._accessibleDiv = div;\n div.displayObject = displayObject;\n this.children.push(displayObject);\n this.div.appendChild(displayObject._accessibleDiv);\n displayObject._accessibleDiv.tabIndex = displayObject.tabIndex;\n }\n _dispatchEvent(e, type) {\n const { displayObject: target } = e.target;\n const boundry = this.renderer.events.rootBoundary;\n const event = Object.assign(new FederatedEvent(boundry), { target });\n boundry.rootTarget = this.renderer.lastObjectRendered;\n type.forEach((type2) => boundry.dispatchEvent(event, type2));\n }\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n _onFocus(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"assertive\");\n }\n this._dispatchEvent(e, [\"mouseover\"]);\n }\n _onFocusOut(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"polite\");\n }\n this._dispatchEvent(e, [\"mouseout\"]);\n }\n _onKeyDown(e) {\n if (e.keyCode !== KEY_CODE_TAB) {\n return;\n }\n this.activate();\n }\n _onMouseMove(e) {\n if (e.movementX === 0 && e.movementY === 0) {\n return;\n }\n this.deactivate();\n }\n destroy() {\n this.destroyTouchHook();\n this.div = null;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown);\n this.pool = null;\n this.children = null;\n this.renderer = null;\n }\n}\nAccessibilityManager.extension = {\n name: \"accessibility\",\n type: [\n ExtensionType.RendererPlugin,\n ExtensionType.CanvasRendererPlugin\n ]\n};\nextensions.add(AccessibilityManager);\n\nexport { AccessibilityManager };\n//# sourceMappingURL=AccessibilityManager.mjs.map\n","const accessibleTarget = {\n accessible: false,\n accessibleTitle: null,\n accessibleHint: null,\n tabIndex: 0,\n _accessibleActive: false,\n _accessibleDiv: null,\n accessibleType: \"button\",\n accessiblePointerEvents: \"auto\",\n accessibleChildren: true,\n renderId: -1\n};\n\nexport { accessibleTarget };\n//# sourceMappingURL=accessibleTarget.mjs.map\n","var INTERNAL_FORMATS = /* @__PURE__ */ ((INTERNAL_FORMATS2) => {\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_S3TC_DXT1_EXT\"] = 33776] = \"COMPRESSED_RGB_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT1_EXT\"] = 33777] = \"COMPRESSED_RGBA_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT3_EXT\"] = 33778] = \"COMPRESSED_RGBA_S3TC_DXT3_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_S3TC_DXT5_EXT\"] = 33779] = \"COMPRESSED_RGBA_S3TC_DXT5_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\"] = 35917] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\"] = 35918] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\"] = 35919] = \"COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB_S3TC_DXT1_EXT\"] = 35916] = \"COMPRESSED_SRGB_S3TC_DXT1_EXT\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_R11_EAC\"] = 37488] = \"COMPRESSED_R11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SIGNED_R11_EAC\"] = 37489] = \"COMPRESSED_SIGNED_R11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RG11_EAC\"] = 37490] = \"COMPRESSED_RG11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SIGNED_RG11_EAC\"] = 37491] = \"COMPRESSED_SIGNED_RG11_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB8_ETC2\"] = 37492] = \"COMPRESSED_RGB8_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA8_ETC2_EAC\"] = 37496] = \"COMPRESSED_RGBA8_ETC2_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_ETC2\"] = 37493] = \"COMPRESSED_SRGB8_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\"] = 37497] = \"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\"] = 37494] = \"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\"] = 37495] = \"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\"] = 35840] = \"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\"] = 35842] = \"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\"] = 35841] = \"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\"] = 35843] = \"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_ETC1_WEBGL\"] = 36196] = \"COMPRESSED_RGB_ETC1_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGB_ATC_WEBGL\"] = 35986] = \"COMPRESSED_RGB_ATC_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\"] = 35986] = \"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\"] = 34798] = \"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\";\n INTERNAL_FORMATS2[INTERNAL_FORMATS2[\"COMPRESSED_RGBA_ASTC_4x4_KHR\"] = 37808] = \"COMPRESSED_RGBA_ASTC_4x4_KHR\";\n return INTERNAL_FORMATS2;\n})(INTERNAL_FORMATS || {});\nconst INTERNAL_FORMAT_TO_BYTES_PER_PIXEL = {\n [33776 /* COMPRESSED_RGB_S3TC_DXT1_EXT */]: 0.5,\n [33777 /* COMPRESSED_RGBA_S3TC_DXT1_EXT */]: 0.5,\n [33778 /* COMPRESSED_RGBA_S3TC_DXT3_EXT */]: 1,\n [33779 /* COMPRESSED_RGBA_S3TC_DXT5_EXT */]: 1,\n [35916 /* COMPRESSED_SRGB_S3TC_DXT1_EXT */]: 0.5,\n [35917 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT */]: 0.5,\n [35918 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT */]: 1,\n [35919 /* COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT */]: 1,\n [37488 /* COMPRESSED_R11_EAC */]: 0.5,\n [37489 /* COMPRESSED_SIGNED_R11_EAC */]: 0.5,\n [37490 /* COMPRESSED_RG11_EAC */]: 1,\n [37491 /* COMPRESSED_SIGNED_RG11_EAC */]: 1,\n [37492 /* COMPRESSED_RGB8_ETC2 */]: 0.5,\n [37496 /* COMPRESSED_RGBA8_ETC2_EAC */]: 1,\n [37493 /* COMPRESSED_SRGB8_ETC2 */]: 0.5,\n [37497 /* COMPRESSED_SRGB8_ALPHA8_ETC2_EAC */]: 1,\n [37494 /* COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5,\n [37495 /* COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 */]: 0.5,\n [35840 /* COMPRESSED_RGB_PVRTC_4BPPV1_IMG */]: 0.5,\n [35842 /* COMPRESSED_RGBA_PVRTC_4BPPV1_IMG */]: 0.5,\n [35841 /* COMPRESSED_RGB_PVRTC_2BPPV1_IMG */]: 0.25,\n [35843 /* COMPRESSED_RGBA_PVRTC_2BPPV1_IMG */]: 0.25,\n [36196 /* COMPRESSED_RGB_ETC1_WEBGL */]: 0.5,\n [35986 /* COMPRESSED_RGB_ATC_WEBGL */]: 0.5,\n [35986 /* COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL */]: 1,\n [34798 /* COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL */]: 1,\n [37808 /* COMPRESSED_RGBA_ASTC_4x4_KHR */]: 1\n};\n\nexport { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL };\n//# sourceMappingURL=const.mjs.map\n","import { ExtensionType, settings, extensions as extensions$1 } from '@pixi/core';\n\nlet storedGl;\nlet extensions;\nfunction getCompressedTextureExtensions() {\n extensions = {\n s3tc: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: storedGl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n etc: storedGl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: storedGl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: storedGl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || storedGl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: storedGl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: storedGl.getExtension(\"WEBGL_compressed_texture_astc\")\n };\n}\nconst detectCompressedTextures = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2\n },\n test: async () => {\n const canvas = settings.ADAPTER.createCanvas();\n const gl = canvas.getContext(\"webgl\");\n if (!gl) {\n console.warn(\"WebGL not available for compressed textures.\");\n return false;\n }\n storedGl = gl;\n return true;\n },\n add: async (formats) => {\n if (!extensions)\n getCompressedTextureExtensions();\n const textureFormats = [];\n for (const extensionName in extensions) {\n const extension = extensions[extensionName];\n if (!extension) {\n continue;\n }\n textureFormats.push(extensionName);\n }\n return [...textureFormats, ...formats];\n },\n remove: async (formats) => {\n if (!extensions)\n getCompressedTextureExtensions();\n return formats.filter((f) => !(f in extensions));\n }\n};\nextensions$1.add(detectCompressedTextures);\n\nexport { detectCompressedTextures };\n//# sourceMappingURL=detectCompressedTextures.mjs.map\n","import { BufferResource, ViewableBuffer } from '@pixi/core';\n\nclass BlobResource extends BufferResource {\n constructor(source, options = { width: 1, height: 1, autoLoad: true }) {\n let origin;\n let data;\n if (typeof source === \"string\") {\n origin = source;\n data = new Uint8Array();\n } else {\n origin = null;\n data = source;\n }\n super(data, options);\n this.origin = origin;\n this.buffer = data ? new ViewableBuffer(data) : null;\n this._load = null;\n this.loaded = false;\n if (this.origin !== null && options.autoLoad !== false) {\n this.load();\n }\n if (this.origin === null && this.buffer) {\n this._load = Promise.resolve(this);\n this.loaded = true;\n this.onBlobLoaded(this.buffer.rawBinaryData);\n }\n }\n onBlobLoaded(_data) {\n }\n load() {\n if (this._load) {\n return this._load;\n }\n this._load = fetch(this.origin).then((response) => response.blob()).then((blob) => blob.arrayBuffer()).then((arrayBuffer) => {\n this.data = new Uint32Array(arrayBuffer);\n this.buffer = new ViewableBuffer(arrayBuffer);\n this.loaded = true;\n this.onBlobLoaded(arrayBuffer);\n this.update();\n return this;\n });\n return this._load;\n }\n}\n\nexport { BlobResource };\n//# sourceMappingURL=BlobResource.mjs.map\n","import { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport { BlobResource } from './BlobResource.mjs';\n\nclass CompressedTextureResource extends BlobResource {\n constructor(source, options) {\n super(source, options);\n this.format = options.format;\n this.levels = options.levels || 1;\n this._width = options.width;\n this._height = options.height;\n this._extension = CompressedTextureResource._formatToExtension(this.format);\n if (options.levelBuffers || this.buffer) {\n this._levelBuffers = options.levelBuffers || CompressedTextureResource._createLevelBuffers(source instanceof Uint8Array ? source : this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);\n }\n }\n upload(renderer, _texture, _glTexture) {\n const gl = renderer.gl;\n const extension = renderer.context.extensions[this._extension];\n if (!extension) {\n throw new Error(`${this._extension} textures are not supported on the current machine`);\n }\n if (!this._levelBuffers) {\n return false;\n }\n for (let i = 0, j = this.levels; i < j; i++) {\n const { levelID, levelWidth, levelHeight, levelBuffer } = this._levelBuffers[i];\n gl.compressedTexImage2D(gl.TEXTURE_2D, levelID, this.format, levelWidth, levelHeight, 0, levelBuffer);\n }\n return true;\n }\n onBlobLoaded() {\n this._levelBuffers = CompressedTextureResource._createLevelBuffers(this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);\n }\n static _formatToExtension(format) {\n if (format >= 33776 && format <= 33779) {\n return \"s3tc\";\n } else if (format >= 37488 && format <= 37497) {\n return \"etc\";\n } else if (format >= 35840 && format <= 35843) {\n return \"pvrtc\";\n } else if (format >= 36196) {\n return \"etc1\";\n } else if (format >= 35986 && format <= 34798) {\n return \"atc\";\n }\n throw new Error(\"Invalid (compressed) texture format given!\");\n }\n static _createLevelBuffers(buffer, format, levels, blockWidth, blockHeight, imageWidth, imageHeight) {\n const buffers = new Array(levels);\n let offset = buffer.byteOffset;\n let levelWidth = imageWidth;\n let levelHeight = imageHeight;\n let alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1);\n let alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1);\n let levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n for (let i = 0; i < levels; i++) {\n buffers[i] = {\n levelID: i,\n levelWidth: levels > 1 ? levelWidth : alignedLevelWidth,\n levelHeight: levels > 1 ? levelHeight : alignedLevelHeight,\n levelBuffer: new Uint8Array(buffer.buffer, offset, levelSize)\n };\n offset += levelSize;\n levelWidth = levelWidth >> 1 || 1;\n levelHeight = levelHeight >> 1 || 1;\n alignedLevelWidth = levelWidth + blockWidth - 1 & ~(blockWidth - 1);\n alignedLevelHeight = levelHeight + blockHeight - 1 & ~(blockHeight - 1);\n levelSize = alignedLevelWidth * alignedLevelHeight * INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[format];\n }\n return buffers;\n }\n}\n\nexport { CompressedTextureResource };\n//# sourceMappingURL=CompressedTextureResource.mjs.map\n","import { INTERNAL_FORMATS, INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport '../resources/index.mjs';\nimport { CompressedTextureResource } from '../resources/CompressedTextureResource.mjs';\n\nconst DDS_MAGIC_SIZE = 4;\nconst DDS_HEADER_SIZE = 124;\nconst DDS_HEADER_PF_SIZE = 32;\nconst DDS_HEADER_DX10_SIZE = 20;\nconst DDS_MAGIC = 542327876;\nconst DDS_FIELDS = {\n SIZE: 1,\n FLAGS: 2,\n HEIGHT: 3,\n WIDTH: 4,\n MIPMAP_COUNT: 7,\n PIXEL_FORMAT: 19\n};\nconst DDS_PF_FIELDS = {\n SIZE: 0,\n FLAGS: 1,\n FOURCC: 2,\n RGB_BITCOUNT: 3,\n R_BIT_MASK: 4,\n G_BIT_MASK: 5,\n B_BIT_MASK: 6,\n A_BIT_MASK: 7\n};\nconst DDS_DX10_FIELDS = {\n DXGI_FORMAT: 0,\n RESOURCE_DIMENSION: 1,\n MISC_FLAG: 2,\n ARRAY_SIZE: 3,\n MISC_FLAGS2: 4\n};\nvar DXGI_FORMAT = /* @__PURE__ */ ((DXGI_FORMAT2) => {\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_UNKNOWN\"] = 0] = \"DXGI_FORMAT_UNKNOWN\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_TYPELESS\"] = 1] = \"DXGI_FORMAT_R32G32B32A32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_FLOAT\"] = 2] = \"DXGI_FORMAT_R32G32B32A32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_UINT\"] = 3] = \"DXGI_FORMAT_R32G32B32A32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32A32_SINT\"] = 4] = \"DXGI_FORMAT_R32G32B32A32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_TYPELESS\"] = 5] = \"DXGI_FORMAT_R32G32B32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_FLOAT\"] = 6] = \"DXGI_FORMAT_R32G32B32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_UINT\"] = 7] = \"DXGI_FORMAT_R32G32B32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32B32_SINT\"] = 8] = \"DXGI_FORMAT_R32G32B32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_TYPELESS\"] = 9] = \"DXGI_FORMAT_R16G16B16A16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_FLOAT\"] = 10] = \"DXGI_FORMAT_R16G16B16A16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_UNORM\"] = 11] = \"DXGI_FORMAT_R16G16B16A16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_UINT\"] = 12] = \"DXGI_FORMAT_R16G16B16A16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_SNORM\"] = 13] = \"DXGI_FORMAT_R16G16B16A16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16B16A16_SINT\"] = 14] = \"DXGI_FORMAT_R16G16B16A16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_TYPELESS\"] = 15] = \"DXGI_FORMAT_R32G32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_FLOAT\"] = 16] = \"DXGI_FORMAT_R32G32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_UINT\"] = 17] = \"DXGI_FORMAT_R32G32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G32_SINT\"] = 18] = \"DXGI_FORMAT_R32G32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32G8X24_TYPELESS\"] = 19] = \"DXGI_FORMAT_R32G8X24_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D32_FLOAT_S8X24_UINT\"] = 20] = \"DXGI_FORMAT_D32_FLOAT_S8X24_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS\"] = 21] = \"DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT\"] = 22] = \"DXGI_FORMAT_X32_TYPELESS_G8X24_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_TYPELESS\"] = 23] = \"DXGI_FORMAT_R10G10B10A2_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_UNORM\"] = 24] = \"DXGI_FORMAT_R10G10B10A2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10A2_UINT\"] = 25] = \"DXGI_FORMAT_R10G10B10A2_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R11G11B10_FLOAT\"] = 26] = \"DXGI_FORMAT_R11G11B10_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_TYPELESS\"] = 27] = \"DXGI_FORMAT_R8G8B8A8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UNORM\"] = 28] = \"DXGI_FORMAT_R8G8B8A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB\"] = 29] = \"DXGI_FORMAT_R8G8B8A8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_UINT\"] = 30] = \"DXGI_FORMAT_R8G8B8A8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_SNORM\"] = 31] = \"DXGI_FORMAT_R8G8B8A8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8B8A8_SINT\"] = 32] = \"DXGI_FORMAT_R8G8B8A8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_TYPELESS\"] = 33] = \"DXGI_FORMAT_R16G16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_FLOAT\"] = 34] = \"DXGI_FORMAT_R16G16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_UNORM\"] = 35] = \"DXGI_FORMAT_R16G16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_UINT\"] = 36] = \"DXGI_FORMAT_R16G16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_SNORM\"] = 37] = \"DXGI_FORMAT_R16G16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16G16_SINT\"] = 38] = \"DXGI_FORMAT_R16G16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_TYPELESS\"] = 39] = \"DXGI_FORMAT_R32_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D32_FLOAT\"] = 40] = \"DXGI_FORMAT_D32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_FLOAT\"] = 41] = \"DXGI_FORMAT_R32_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_UINT\"] = 42] = \"DXGI_FORMAT_R32_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R32_SINT\"] = 43] = \"DXGI_FORMAT_R32_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R24G8_TYPELESS\"] = 44] = \"DXGI_FORMAT_R24G8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D24_UNORM_S8_UINT\"] = 45] = \"DXGI_FORMAT_D24_UNORM_S8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R24_UNORM_X8_TYPELESS\"] = 46] = \"DXGI_FORMAT_R24_UNORM_X8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_X24_TYPELESS_G8_UINT\"] = 47] = \"DXGI_FORMAT_X24_TYPELESS_G8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_TYPELESS\"] = 48] = \"DXGI_FORMAT_R8G8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_UNORM\"] = 49] = \"DXGI_FORMAT_R8G8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_UINT\"] = 50] = \"DXGI_FORMAT_R8G8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_SNORM\"] = 51] = \"DXGI_FORMAT_R8G8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_SINT\"] = 52] = \"DXGI_FORMAT_R8G8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_TYPELESS\"] = 53] = \"DXGI_FORMAT_R16_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_FLOAT\"] = 54] = \"DXGI_FORMAT_R16_FLOAT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_D16_UNORM\"] = 55] = \"DXGI_FORMAT_D16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_UNORM\"] = 56] = \"DXGI_FORMAT_R16_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_UINT\"] = 57] = \"DXGI_FORMAT_R16_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_SNORM\"] = 58] = \"DXGI_FORMAT_R16_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R16_SINT\"] = 59] = \"DXGI_FORMAT_R16_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_TYPELESS\"] = 60] = \"DXGI_FORMAT_R8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_UNORM\"] = 61] = \"DXGI_FORMAT_R8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_UINT\"] = 62] = \"DXGI_FORMAT_R8_UINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_SNORM\"] = 63] = \"DXGI_FORMAT_R8_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8_SINT\"] = 64] = \"DXGI_FORMAT_R8_SINT\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_A8_UNORM\"] = 65] = \"DXGI_FORMAT_A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R1_UNORM\"] = 66] = \"DXGI_FORMAT_R1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R9G9B9E5_SHAREDEXP\"] = 67] = \"DXGI_FORMAT_R9G9B9E5_SHAREDEXP\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R8G8_B8G8_UNORM\"] = 68] = \"DXGI_FORMAT_R8G8_B8G8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_G8R8_G8B8_UNORM\"] = 69] = \"DXGI_FORMAT_G8R8_G8B8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_TYPELESS\"] = 70] = \"DXGI_FORMAT_BC1_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_UNORM\"] = 71] = \"DXGI_FORMAT_BC1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC1_UNORM_SRGB\"] = 72] = \"DXGI_FORMAT_BC1_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_TYPELESS\"] = 73] = \"DXGI_FORMAT_BC2_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_UNORM\"] = 74] = \"DXGI_FORMAT_BC2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC2_UNORM_SRGB\"] = 75] = \"DXGI_FORMAT_BC2_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_TYPELESS\"] = 76] = \"DXGI_FORMAT_BC3_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_UNORM\"] = 77] = \"DXGI_FORMAT_BC3_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC3_UNORM_SRGB\"] = 78] = \"DXGI_FORMAT_BC3_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_TYPELESS\"] = 79] = \"DXGI_FORMAT_BC4_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_UNORM\"] = 80] = \"DXGI_FORMAT_BC4_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC4_SNORM\"] = 81] = \"DXGI_FORMAT_BC4_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_TYPELESS\"] = 82] = \"DXGI_FORMAT_BC5_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_UNORM\"] = 83] = \"DXGI_FORMAT_BC5_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC5_SNORM\"] = 84] = \"DXGI_FORMAT_BC5_SNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B5G6R5_UNORM\"] = 85] = \"DXGI_FORMAT_B5G6R5_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B5G5R5A1_UNORM\"] = 86] = \"DXGI_FORMAT_B5G5R5A1_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_UNORM\"] = 87] = \"DXGI_FORMAT_B8G8R8A8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_UNORM\"] = 88] = \"DXGI_FORMAT_B8G8R8X8_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM\"] = 89] = \"DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_TYPELESS\"] = 90] = \"DXGI_FORMAT_B8G8R8A8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB\"] = 91] = \"DXGI_FORMAT_B8G8R8A8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_TYPELESS\"] = 92] = \"DXGI_FORMAT_B8G8R8X8_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB\"] = 93] = \"DXGI_FORMAT_B8G8R8X8_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_TYPELESS\"] = 94] = \"DXGI_FORMAT_BC6H_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_UF16\"] = 95] = \"DXGI_FORMAT_BC6H_UF16\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC6H_SF16\"] = 96] = \"DXGI_FORMAT_BC6H_SF16\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_TYPELESS\"] = 97] = \"DXGI_FORMAT_BC7_TYPELESS\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_UNORM\"] = 98] = \"DXGI_FORMAT_BC7_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_BC7_UNORM_SRGB\"] = 99] = \"DXGI_FORMAT_BC7_UNORM_SRGB\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_AYUV\"] = 100] = \"DXGI_FORMAT_AYUV\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y410\"] = 101] = \"DXGI_FORMAT_Y410\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y416\"] = 102] = \"DXGI_FORMAT_Y416\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_NV12\"] = 103] = \"DXGI_FORMAT_NV12\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P010\"] = 104] = \"DXGI_FORMAT_P010\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P016\"] = 105] = \"DXGI_FORMAT_P016\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_420_OPAQUE\"] = 106] = \"DXGI_FORMAT_420_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_YUY2\"] = 107] = \"DXGI_FORMAT_YUY2\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y210\"] = 108] = \"DXGI_FORMAT_Y210\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_Y216\"] = 109] = \"DXGI_FORMAT_Y216\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_NV11\"] = 110] = \"DXGI_FORMAT_NV11\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_AI44\"] = 111] = \"DXGI_FORMAT_AI44\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_IA44\"] = 112] = \"DXGI_FORMAT_IA44\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P8\"] = 113] = \"DXGI_FORMAT_P8\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_A8P8\"] = 114] = \"DXGI_FORMAT_A8P8\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_B4G4R4A4_UNORM\"] = 115] = \"DXGI_FORMAT_B4G4R4A4_UNORM\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_P208\"] = 116] = \"DXGI_FORMAT_P208\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_V208\"] = 117] = \"DXGI_FORMAT_V208\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_V408\"] = 118] = \"DXGI_FORMAT_V408\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE\"] = 119] = \"DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE\"] = 120] = \"DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE\";\n DXGI_FORMAT2[DXGI_FORMAT2[\"DXGI_FORMAT_FORCE_UINT\"] = 121] = \"DXGI_FORMAT_FORCE_UINT\";\n return DXGI_FORMAT2;\n})(DXGI_FORMAT || {});\nvar D3D10_RESOURCE_DIMENSION = /* @__PURE__ */ ((D3D10_RESOURCE_DIMENSION2) => {\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE1D\"] = 2] = \"DDS_DIMENSION_TEXTURE1D\";\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE2D\"] = 3] = \"DDS_DIMENSION_TEXTURE2D\";\n D3D10_RESOURCE_DIMENSION2[D3D10_RESOURCE_DIMENSION2[\"DDS_DIMENSION_TEXTURE3D\"] = 6] = \"DDS_DIMENSION_TEXTURE3D\";\n return D3D10_RESOURCE_DIMENSION2;\n})(D3D10_RESOURCE_DIMENSION || {});\nconst PF_FLAGS = 1;\nconst DDPF_ALPHA = 2;\nconst DDPF_FOURCC = 4;\nconst DDPF_RGB = 64;\nconst DDPF_YUV = 512;\nconst DDPF_LUMINANCE = 131072;\nconst FOURCC_DXT1 = 827611204;\nconst FOURCC_DXT3 = 861165636;\nconst FOURCC_DXT5 = 894720068;\nconst FOURCC_DX10 = 808540228;\nconst DDS_RESOURCE_MISC_TEXTURECUBE = 4;\nconst FOURCC_TO_FORMAT = {\n [FOURCC_DXT1]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [FOURCC_DXT3]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [FOURCC_DXT5]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n};\nconst DXGI_TO_FORMAT = {\n [70 /* DXGI_FORMAT_BC1_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [71 /* DXGI_FORMAT_BC1_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n [73 /* DXGI_FORMAT_BC2_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [74 /* DXGI_FORMAT_BC2_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n [76 /* DXGI_FORMAT_BC3_TYPELESS */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n [77 /* DXGI_FORMAT_BC3_UNORM */]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n [72 /* DXGI_FORMAT_BC1_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n [75 /* DXGI_FORMAT_BC2_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n [78 /* DXGI_FORMAT_BC3_UNORM_SRGB */]: INTERNAL_FORMATS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n};\nfunction parseDDS(arrayBuffer) {\n const data = new Uint32Array(arrayBuffer);\n const magicWord = data[0];\n if (magicWord !== DDS_MAGIC) {\n throw new Error(\"Invalid DDS file magic word\");\n }\n const header = new Uint32Array(arrayBuffer, 0, DDS_HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const height = header[DDS_FIELDS.HEIGHT];\n const width = header[DDS_FIELDS.WIDTH];\n const mipmapCount = header[DDS_FIELDS.MIPMAP_COUNT];\n const pixelFormat = new Uint32Array(arrayBuffer, DDS_FIELDS.PIXEL_FORMAT * Uint32Array.BYTES_PER_ELEMENT, DDS_HEADER_PF_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const formatFlags = pixelFormat[PF_FLAGS];\n if (formatFlags & DDPF_FOURCC) {\n const fourCC = pixelFormat[DDS_PF_FIELDS.FOURCC];\n if (fourCC !== FOURCC_DX10) {\n const internalFormat2 = FOURCC_TO_FORMAT[fourCC];\n const dataOffset2 = DDS_MAGIC_SIZE + DDS_HEADER_SIZE;\n const texData = new Uint8Array(arrayBuffer, dataOffset2);\n const resource = new CompressedTextureResource(texData, {\n format: internalFormat2,\n width,\n height,\n levels: mipmapCount\n });\n return [resource];\n }\n const dx10Offset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE;\n const dx10Header = new Uint32Array(data.buffer, dx10Offset, DDS_HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n const dxgiFormat = dx10Header[DDS_DX10_FIELDS.DXGI_FORMAT];\n const resourceDimension = dx10Header[DDS_DX10_FIELDS.RESOURCE_DIMENSION];\n const miscFlag = dx10Header[DDS_DX10_FIELDS.MISC_FLAG];\n const arraySize = dx10Header[DDS_DX10_FIELDS.ARRAY_SIZE];\n const internalFormat = DXGI_TO_FORMAT[dxgiFormat];\n if (internalFormat === void 0) {\n throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`);\n }\n if (miscFlag === DDS_RESOURCE_MISC_TEXTURECUBE) {\n throw new Error(\"DDSParser does not support cubemap textures\");\n }\n if (resourceDimension === 6 /* DDS_DIMENSION_TEXTURE3D */) {\n throw new Error(\"DDSParser does not supported 3D texture data\");\n }\n const imageBuffers = new Array();\n const dataOffset = DDS_MAGIC_SIZE + DDS_HEADER_SIZE + DDS_HEADER_DX10_SIZE;\n if (arraySize === 1) {\n imageBuffers.push(new Uint8Array(arrayBuffer, dataOffset));\n } else {\n const pixelSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[internalFormat];\n let imageSize = 0;\n let levelWidth = width;\n let levelHeight = height;\n for (let i = 0; i < mipmapCount; i++) {\n const alignedLevelWidth = Math.max(1, levelWidth + 3 & ~3);\n const alignedLevelHeight = Math.max(1, levelHeight + 3 & ~3);\n const levelSize = alignedLevelWidth * alignedLevelHeight * pixelSize;\n imageSize += levelSize;\n levelWidth = levelWidth >>> 1;\n levelHeight = levelHeight >>> 1;\n }\n let imageOffset = dataOffset;\n for (let i = 0; i < arraySize; i++) {\n imageBuffers.push(new Uint8Array(arrayBuffer, imageOffset, imageSize));\n imageOffset += imageSize;\n }\n }\n return imageBuffers.map((buffer) => new CompressedTextureResource(buffer, {\n format: internalFormat,\n width,\n height,\n levels: mipmapCount\n }));\n }\n if (formatFlags & DDPF_RGB) {\n throw new Error(\"DDSParser does not support uncompressed texture data.\");\n }\n if (formatFlags & DDPF_YUV) {\n throw new Error(\"DDSParser does not supported YUV uncompressed texture data.\");\n }\n if (formatFlags & DDPF_LUMINANCE) {\n throw new Error(\"DDSParser does not support single-channel (lumninance) texture data!\");\n }\n if (formatFlags & DDPF_ALPHA) {\n throw new Error(\"DDSParser does not support single-channel (alpha) texture data!\");\n }\n throw new Error(\"DDSParser failed to load a texture file due to an unknown reason!\");\n}\n\nexport { parseDDS };\n//# sourceMappingURL=parseDDS.mjs.map\n","import { TYPES, FORMATS, BufferResource } from '@pixi/core';\nimport { INTERNAL_FORMAT_TO_BYTES_PER_PIXEL } from '../const.mjs';\nimport '../resources/index.mjs';\nimport { CompressedTextureResource } from '../resources/CompressedTextureResource.mjs';\n\nconst FILE_IDENTIFIER = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10];\nconst ENDIANNESS = 67305985;\nconst KTX_FIELDS = {\n FILE_IDENTIFIER: 0,\n ENDIANNESS: 12,\n GL_TYPE: 16,\n GL_TYPE_SIZE: 20,\n GL_FORMAT: 24,\n GL_INTERNAL_FORMAT: 28,\n GL_BASE_INTERNAL_FORMAT: 32,\n PIXEL_WIDTH: 36,\n PIXEL_HEIGHT: 40,\n PIXEL_DEPTH: 44,\n NUMBER_OF_ARRAY_ELEMENTS: 48,\n NUMBER_OF_FACES: 52,\n NUMBER_OF_MIPMAP_LEVELS: 56,\n BYTES_OF_KEY_VALUE_DATA: 60\n};\nconst FILE_HEADER_SIZE = 64;\nconst TYPES_TO_BYTES_PER_COMPONENT = {\n [TYPES.UNSIGNED_BYTE]: 1,\n [TYPES.UNSIGNED_SHORT]: 2,\n [TYPES.INT]: 4,\n [TYPES.UNSIGNED_INT]: 4,\n [TYPES.FLOAT]: 4,\n [TYPES.HALF_FLOAT]: 8\n};\nconst FORMATS_TO_COMPONENTS = {\n [FORMATS.RGBA]: 4,\n [FORMATS.RGB]: 3,\n [FORMATS.RG]: 2,\n [FORMATS.RED]: 1,\n [FORMATS.LUMINANCE]: 1,\n [FORMATS.LUMINANCE_ALPHA]: 2,\n [FORMATS.ALPHA]: 1\n};\nconst TYPES_TO_BYTES_PER_PIXEL = {\n [TYPES.UNSIGNED_SHORT_4_4_4_4]: 2,\n [TYPES.UNSIGNED_SHORT_5_5_5_1]: 2,\n [TYPES.UNSIGNED_SHORT_5_6_5]: 2\n};\nfunction parseKTX(url, arrayBuffer, loadKeyValueData = false) {\n const dataView = new DataView(arrayBuffer);\n if (!validate(url, dataView)) {\n return null;\n }\n const littleEndian = dataView.getUint32(KTX_FIELDS.ENDIANNESS, true) === ENDIANNESS;\n const glType = dataView.getUint32(KTX_FIELDS.GL_TYPE, littleEndian);\n const glFormat = dataView.getUint32(KTX_FIELDS.GL_FORMAT, littleEndian);\n const glInternalFormat = dataView.getUint32(KTX_FIELDS.GL_INTERNAL_FORMAT, littleEndian);\n const pixelWidth = dataView.getUint32(KTX_FIELDS.PIXEL_WIDTH, littleEndian);\n const pixelHeight = dataView.getUint32(KTX_FIELDS.PIXEL_HEIGHT, littleEndian) || 1;\n const pixelDepth = dataView.getUint32(KTX_FIELDS.PIXEL_DEPTH, littleEndian) || 1;\n const numberOfArrayElements = dataView.getUint32(KTX_FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;\n const numberOfFaces = dataView.getUint32(KTX_FIELDS.NUMBER_OF_FACES, littleEndian);\n const numberOfMipmapLevels = dataView.getUint32(KTX_FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);\n const bytesOfKeyValueData = dataView.getUint32(KTX_FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);\n if (pixelHeight === 0 || pixelDepth !== 1) {\n throw new Error(\"Only 2D textures are supported\");\n }\n if (numberOfFaces !== 1) {\n throw new Error(\"CubeTextures are not supported by KTXLoader yet!\");\n }\n if (numberOfArrayElements !== 1) {\n throw new Error(\"WebGL does not support array textures\");\n }\n const blockWidth = 4;\n const blockHeight = 4;\n const alignedWidth = pixelWidth + 3 & ~3;\n const alignedHeight = pixelHeight + 3 & ~3;\n const imageBuffers = new Array(numberOfArrayElements);\n let imagePixels = pixelWidth * pixelHeight;\n if (glType === 0) {\n imagePixels = alignedWidth * alignedHeight;\n }\n let imagePixelByteSize;\n if (glType !== 0) {\n if (TYPES_TO_BYTES_PER_COMPONENT[glType]) {\n imagePixelByteSize = TYPES_TO_BYTES_PER_COMPONENT[glType] * FORMATS_TO_COMPONENTS[glFormat];\n } else {\n imagePixelByteSize = TYPES_TO_BYTES_PER_PIXEL[glType];\n }\n } else {\n imagePixelByteSize = INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat];\n }\n if (imagePixelByteSize === void 0) {\n throw new Error(\"Unable to resolve the pixel format stored in the *.ktx file!\");\n }\n const kvData = loadKeyValueData ? parseKvData(dataView, bytesOfKeyValueData, littleEndian) : null;\n const imageByteSize = imagePixels * imagePixelByteSize;\n let mipByteSize = imageByteSize;\n let mipWidth = pixelWidth;\n let mipHeight = pixelHeight;\n let alignedMipWidth = alignedWidth;\n let alignedMipHeight = alignedHeight;\n let imageOffset = FILE_HEADER_SIZE + bytesOfKeyValueData;\n for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++) {\n const imageSize = dataView.getUint32(imageOffset, littleEndian);\n let elementOffset = imageOffset + 4;\n for (let arrayElement = 0; arrayElement < numberOfArrayElements; arrayElement++) {\n let mips = imageBuffers[arrayElement];\n if (!mips) {\n mips = imageBuffers[arrayElement] = new Array(numberOfMipmapLevels);\n }\n mips[mipmapLevel] = {\n levelID: mipmapLevel,\n levelWidth: numberOfMipmapLevels > 1 || glType !== 0 ? mipWidth : alignedMipWidth,\n levelHeight: numberOfMipmapLevels > 1 || glType !== 0 ? mipHeight : alignedMipHeight,\n levelBuffer: new Uint8Array(arrayBuffer, elementOffset, mipByteSize)\n };\n elementOffset += mipByteSize;\n }\n imageOffset += imageSize + 4;\n imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - imageOffset % 4 : imageOffset;\n mipWidth = mipWidth >> 1 || 1;\n mipHeight = mipHeight >> 1 || 1;\n alignedMipWidth = mipWidth + blockWidth - 1 & ~(blockWidth - 1);\n alignedMipHeight = mipHeight + blockHeight - 1 & ~(blockHeight - 1);\n mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;\n }\n if (glType !== 0) {\n return {\n uncompressed: imageBuffers.map((levelBuffers) => {\n let buffer = levelBuffers[0].levelBuffer;\n let convertToInt = false;\n if (glType === TYPES.FLOAT) {\n buffer = new Float32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n } else if (glType === TYPES.UNSIGNED_INT) {\n convertToInt = true;\n buffer = new Uint32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n } else if (glType === TYPES.INT) {\n convertToInt = true;\n buffer = new Int32Array(levelBuffers[0].levelBuffer.buffer, levelBuffers[0].levelBuffer.byteOffset, levelBuffers[0].levelBuffer.byteLength / 4);\n }\n return {\n resource: new BufferResource(buffer, {\n width: levelBuffers[0].levelWidth,\n height: levelBuffers[0].levelHeight\n }),\n type: glType,\n format: convertToInt ? convertFormatToInteger(glFormat) : glFormat\n };\n }),\n kvData\n };\n }\n return {\n compressed: imageBuffers.map((levelBuffers) => new CompressedTextureResource(null, {\n format: glInternalFormat,\n width: pixelWidth,\n height: pixelHeight,\n levels: numberOfMipmapLevels,\n levelBuffers\n })),\n kvData\n };\n}\nfunction validate(url, dataView) {\n for (let i = 0; i < FILE_IDENTIFIER.length; i++) {\n if (dataView.getUint8(i) !== FILE_IDENTIFIER[i]) {\n console.error(`${url} is not a valid *.ktx file!`);\n return false;\n }\n }\n return true;\n}\nfunction convertFormatToInteger(format) {\n switch (format) {\n case FORMATS.RGBA:\n return FORMATS.RGBA_INTEGER;\n case FORMATS.RGB:\n return FORMATS.RGB_INTEGER;\n case FORMATS.RG:\n return FORMATS.RG_INTEGER;\n case FORMATS.RED:\n return FORMATS.RED_INTEGER;\n default:\n return format;\n }\n}\nfunction parseKvData(dataView, bytesOfKeyValueData, littleEndian) {\n const kvData = /* @__PURE__ */ new Map();\n let bytesIntoKeyValueData = 0;\n while (bytesIntoKeyValueData < bytesOfKeyValueData) {\n const keyAndValueByteSize = dataView.getUint32(FILE_HEADER_SIZE + bytesIntoKeyValueData, littleEndian);\n const keyAndValueByteOffset = FILE_HEADER_SIZE + bytesIntoKeyValueData + 4;\n const valuePadding = 3 - (keyAndValueByteSize + 3) % 4;\n if (keyAndValueByteSize === 0 || keyAndValueByteSize > bytesOfKeyValueData - bytesIntoKeyValueData) {\n console.error(\"KTXLoader: keyAndValueByteSize out of bounds\");\n break;\n }\n let keyNulByte = 0;\n for (; keyNulByte < keyAndValueByteSize; keyNulByte++) {\n if (dataView.getUint8(keyAndValueByteOffset + keyNulByte) === 0) {\n break;\n }\n }\n if (keyNulByte === -1) {\n console.error(\"KTXLoader: Failed to find null byte terminating kvData key\");\n break;\n }\n const key = new TextDecoder().decode(new Uint8Array(dataView.buffer, keyAndValueByteOffset, keyNulByte));\n const value = new DataView(dataView.buffer, keyAndValueByteOffset + keyNulByte + 1, keyAndValueByteSize - keyNulByte - 1);\n kvData.set(key, value);\n bytesIntoKeyValueData += 4 + keyAndValueByteSize + valuePadding;\n }\n return kvData;\n}\n\nexport { FORMATS_TO_COMPONENTS, TYPES_TO_BYTES_PER_COMPONENT, TYPES_TO_BYTES_PER_PIXEL, parseKTX };\n//# sourceMappingURL=parseKTX.mjs.map\n","import { LoaderParserPriority, checkExtension, createTexture } from '@pixi/assets';\nimport { ExtensionType, settings, BaseTexture, MIPMAP_MODES, ALPHA_MODES, utils, extensions } from '@pixi/core';\nimport '../parsers/index.mjs';\nimport { parseDDS } from '../parsers/parseDDS.mjs';\n\nconst loadDDS = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n name: \"loadDDS\",\n test(url) {\n return checkExtension(url, \".dds\");\n },\n async load(url, asset, loader) {\n const response = await settings.ADAPTER.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const resources = parseDDS(arrayBuffer);\n const textures = resources.map((resource) => {\n const base = new BaseTexture(resource, {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n });\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n if (Array.isArray(texture)) {\n texture.forEach((t) => t.destroy(true));\n } else {\n texture.destroy(true);\n }\n }\n};\nextensions.add(loadDDS);\n\nexport { loadDDS };\n//# sourceMappingURL=loadDDS.mjs.map\n","import { LoaderParserPriority, checkExtension, createTexture } from '@pixi/assets';\nimport { ExtensionType, settings, MIPMAP_MODES, ALPHA_MODES, utils, BaseTexture, extensions } from '@pixi/core';\nimport '../parsers/index.mjs';\nimport { parseKTX } from '../parsers/parseKTX.mjs';\n\nconst loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High\n },\n name: \"loadKTX\",\n test(url) {\n return checkExtension(url, \".ktx\");\n },\n async load(url, asset, loader) {\n const response = await settings.ADAPTER.fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n const { compressed, uncompressed, kvData } = parseKTX(url, arrayBuffer);\n const resources = compressed ?? uncompressed;\n const options = {\n mipmap: MIPMAP_MODES.OFF,\n alphaMode: ALPHA_MODES.NO_PREMULTIPLIED_ALPHA,\n resolution: utils.getResolutionOfUrl(url),\n ...asset.data\n };\n const textures = resources.map((resource) => {\n if (resources === uncompressed) {\n Object.assign(options, {\n type: resource.type,\n format: resource.format\n });\n }\n const base = new BaseTexture(resource, options);\n base.ktxKeyValueData = kvData;\n return createTexture(base, loader, url);\n });\n return textures.length === 1 ? textures[0] : textures;\n },\n unload(texture) {\n if (Array.isArray(texture)) {\n texture.forEach((t) => t.destroy(true));\n } else {\n texture.destroy(true);\n }\n }\n};\nextensions.add(loadKTX);\n\nexport { loadKTX };\n//# sourceMappingURL=loadKTX.mjs.map\n","import { ExtensionType, settings, extensions } from '@pixi/core';\n\nconst resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value) => {\n const temp = value.split(\"?\")[0];\n const extension = temp.split(\".\").pop();\n return [\"basis\", \"ktx\", \"dds\"].includes(extension);\n },\n parse: (value) => {\n const temp = value.split(\"?\")[0];\n const extension = temp.split(\".\").pop();\n if (extension === \"ktx\") {\n const extensions2 = [\n \".s3tc.ktx\",\n \".s3tc_sRGB.ktx\",\n \".etc.ktx\",\n \".etc1.ktx\",\n \".pvrt.ktx\",\n \".atc.ktx\",\n \".astc.ktx\"\n ];\n if (extensions2.some((ext) => value.endsWith(ext))) {\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: extensions2.find((ext) => value.endsWith(ext)),\n src: value\n };\n }\n }\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: value.split(\".\").pop(),\n src: value\n };\n }\n};\nextensions.add(resolveCompressedTextureUrl);\n\nexport { resolveCompressedTextureUrl };\n//# sourceMappingURL=resolveCompressedTextureUrl.mjs.map\n","import { Rectangle, utils, RenderTexture, ExtensionType, extensions } from '@pixi/core';\n\nconst TEMP_RECT = new Rectangle();\nconst BYTES_PER_PIXEL = 4;\nconst _Extract = class {\n constructor(renderer) {\n this.renderer = renderer;\n }\n async image(target, format, quality) {\n const image = new Image();\n image.src = await this.base64(target, format, quality);\n return image;\n }\n async base64(target, format, quality) {\n const canvas = this.canvas(target);\n if (canvas.toBlob !== void 0) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject(new Error(\"ICanvas.toBlob failed!\"));\n return;\n }\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n }, format, quality);\n });\n }\n if (canvas.toDataURL !== void 0) {\n return canvas.toDataURL(format, quality);\n }\n if (canvas.convertToBlob !== void 0) {\n const blob = await canvas.convertToBlob({ type: format, quality });\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n throw new Error(\"Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented\");\n }\n canvas(target, frame) {\n const { pixels, width, height, flipY } = this._rawPixels(target, frame);\n if (flipY) {\n _Extract._flipY(pixels, width, height);\n }\n _Extract._unpremultiplyAlpha(pixels);\n const canvasBuffer = new utils.CanvasRenderTarget(width, height, 1);\n const imageData = new ImageData(new Uint8ClampedArray(pixels.buffer), width, height);\n canvasBuffer.context.putImageData(imageData, 0, 0);\n return canvasBuffer.canvas;\n }\n pixels(target, frame) {\n const { pixels, width, height, flipY } = this._rawPixels(target, frame);\n if (flipY) {\n _Extract._flipY(pixels, width, height);\n }\n _Extract._unpremultiplyAlpha(pixels);\n return pixels;\n }\n _rawPixels(target, frame) {\n const renderer = this.renderer;\n if (!renderer) {\n throw new Error(\"The Extract has already been destroyed\");\n }\n let resolution;\n let flipY = false;\n let renderTexture;\n let generated = false;\n if (target) {\n if (target instanceof RenderTexture) {\n renderTexture = target;\n } else {\n renderTexture = renderer.generateTexture(target, {\n resolution: renderer.resolution,\n multisample: renderer.multisample\n });\n generated = true;\n }\n }\n if (renderTexture) {\n resolution = renderTexture.baseTexture.resolution;\n frame = frame ?? renderTexture.frame;\n flipY = false;\n if (!generated) {\n renderer.renderTexture.bind(renderTexture);\n const fbo = renderTexture.framebuffer.glFramebuffers[renderer.CONTEXT_UID];\n if (fbo.blitFramebuffer) {\n renderer.framebuffer.bind(fbo.blitFramebuffer);\n }\n }\n } else {\n resolution = renderer.resolution;\n if (!frame) {\n frame = TEMP_RECT;\n frame.width = renderer.width / resolution;\n frame.height = renderer.height / resolution;\n }\n flipY = true;\n renderer.renderTexture.bind();\n }\n const width = Math.round(frame.width * resolution);\n const height = Math.round(frame.height * resolution);\n const pixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const gl = renderer.gl;\n gl.readPixels(Math.round(frame.x * resolution), Math.round(frame.y * resolution), width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n if (generated) {\n renderTexture?.destroy(true);\n }\n return { pixels, width, height, flipY };\n }\n destroy() {\n this.renderer = null;\n }\n static _flipY(pixels, width, height) {\n const w = width << 2;\n const h = height >> 1;\n const temp = new Uint8Array(w);\n for (let y = 0; y < h; y++) {\n const t = y * w;\n const b = (height - y - 1) * w;\n temp.set(pixels.subarray(t, t + w));\n pixels.copyWithin(t, b, b + w);\n pixels.set(temp, b);\n }\n }\n static _unpremultiplyAlpha(pixels) {\n if (pixels instanceof Uint8ClampedArray) {\n pixels = new Uint8Array(pixels.buffer);\n }\n const n = pixels.length;\n for (let i = 0; i < n; i += 4) {\n const alpha = pixels[i + 3];\n if (alpha !== 0) {\n const a = 255.001 / alpha;\n pixels[i] = pixels[i] * a + 0.5;\n pixels[i + 1] = pixels[i + 1] * a + 0.5;\n pixels[i + 2] = pixels[i + 2] * a + 0.5;\n }\n }\n }\n};\nlet Extract = _Extract;\nExtract.extension = {\n name: \"extract\",\n type: ExtensionType.RendererSystem\n};\nextensions.add(Extract);\n\nexport { Extract };\n//# sourceMappingURL=Extract.mjs.map\n","import { Texture, BaseTexture, utils, Rectangle } from '@pixi/core';\n\nconst _Spritesheet = class {\n constructor(texture, data, resolutionFilename = null) {\n this.linkedSheets = [];\n this._texture = texture instanceof Texture ? texture : null;\n this.baseTexture = texture instanceof BaseTexture ? texture : this._texture.baseTexture;\n this.textures = {};\n this.animations = {};\n this.data = data;\n const resource = this.baseTexture.resource;\n this.resolution = this._updateResolution(resolutionFilename || (resource ? resource.url : null));\n this._frames = this.data.frames;\n this._frameKeys = Object.keys(this._frames);\n this._batchIndex = 0;\n this._callback = null;\n }\n _updateResolution(resolutionFilename = null) {\n const { scale } = this.data.meta;\n let resolution = utils.getResolutionOfUrl(resolutionFilename, null);\n if (resolution === null) {\n resolution = parseFloat(scale ?? \"1\");\n }\n if (resolution !== 1) {\n this.baseTexture.setResolution(resolution);\n }\n return resolution;\n }\n parse() {\n return new Promise((resolve) => {\n this._callback = resolve;\n this._batchIndex = 0;\n if (this._frameKeys.length <= _Spritesheet.BATCH_SIZE) {\n this._processFrames(0);\n this._processAnimations();\n this._parseComplete();\n } else {\n this._nextBatch();\n }\n });\n }\n _processFrames(initialFrameIndex) {\n let frameIndex = initialFrameIndex;\n const maxFrames = _Spritesheet.BATCH_SIZE;\n while (frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length) {\n const i = this._frameKeys[frameIndex];\n const data = this._frames[i];\n const rect = data.frame;\n if (rect) {\n let frame = null;\n let trim = null;\n const sourceSize = data.trimmed !== false && data.sourceSize ? data.sourceSize : data.frame;\n const orig = new Rectangle(0, 0, Math.floor(sourceSize.w) / this.resolution, Math.floor(sourceSize.h) / this.resolution);\n if (data.rotated) {\n frame = new Rectangle(Math.floor(rect.x) / this.resolution, Math.floor(rect.y) / this.resolution, Math.floor(rect.h) / this.resolution, Math.floor(rect.w) / this.resolution);\n } else {\n frame = new Rectangle(Math.floor(rect.x) / this.resolution, Math.floor(rect.y) / this.resolution, Math.floor(rect.w) / this.resolution, Math.floor(rect.h) / this.resolution);\n }\n if (data.trimmed !== false && data.spriteSourceSize) {\n trim = new Rectangle(Math.floor(data.spriteSourceSize.x) / this.resolution, Math.floor(data.spriteSourceSize.y) / this.resolution, Math.floor(rect.w) / this.resolution, Math.floor(rect.h) / this.resolution);\n }\n this.textures[i] = new Texture(this.baseTexture, frame, orig, trim, data.rotated ? 2 : 0, data.anchor, data.borders);\n Texture.addToCache(this.textures[i], i);\n }\n frameIndex++;\n }\n }\n _processAnimations() {\n const animations = this.data.animations || {};\n for (const animName in animations) {\n this.animations[animName] = [];\n for (let i = 0; i < animations[animName].length; i++) {\n const frameName = animations[animName][i];\n this.animations[animName].push(this.textures[frameName]);\n }\n }\n }\n _parseComplete() {\n const callback = this._callback;\n this._callback = null;\n this._batchIndex = 0;\n callback.call(this, this.textures);\n }\n _nextBatch() {\n this._processFrames(this._batchIndex * _Spritesheet.BATCH_SIZE);\n this._batchIndex++;\n setTimeout(() => {\n if (this._batchIndex * _Spritesheet.BATCH_SIZE < this._frameKeys.length) {\n this._nextBatch();\n } else {\n this._processAnimations();\n this._parseComplete();\n }\n }, 0);\n }\n destroy(destroyBase = false) {\n for (const i in this.textures) {\n this.textures[i].destroy();\n }\n this._frames = null;\n this._frameKeys = null;\n this.data = null;\n this.textures = null;\n if (destroyBase) {\n this._texture?.destroy();\n this.baseTexture.destroy();\n }\n this._texture = null;\n this.baseTexture = null;\n this.linkedSheets = [];\n }\n};\nlet Spritesheet = _Spritesheet;\nSpritesheet.BATCH_SIZE = 1e3;\n\nexport { Spritesheet };\n//# sourceMappingURL=Spritesheet.mjs.map\n","import { LoaderParserPriority, copySearchParams } from '@pixi/assets';\nimport { utils, ExtensionType, settings, extensions } from '@pixi/core';\nimport { Spritesheet } from './Spritesheet.mjs';\n\nconst validImages = [\"jpg\", \"png\", \"jpeg\", \"avif\", \"webp\"];\nfunction getCacheableAssets(keys, asset, ignoreMultiPack) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n Object.keys(asset.textures).forEach((key) => {\n out[key] = asset.textures[key];\n });\n if (!ignoreMultiPack) {\n const basePath = utils.path.dirname(keys[0]);\n asset.linkedSheets.forEach((item, i) => {\n const out2 = getCacheableAssets([`${basePath}/${asset.data.meta.related_multi_packs[i]}`], item, true);\n Object.assign(out, out2);\n });\n }\n return out;\n}\nconst spritesheetAsset = {\n extension: ExtensionType.Asset,\n cache: {\n test: (asset) => asset instanceof Spritesheet,\n getCacheableAssets: (keys, asset) => getCacheableAssets(keys, asset, false)\n },\n resolver: {\n test: (value) => {\n const tempURL = value.split(\"?\")[0];\n const split = tempURL.split(\".\");\n const extension = split.pop();\n const format = split.pop();\n return extension === \"json\" && validImages.includes(format);\n },\n parse: (value) => {\n const split = value.split(\".\");\n return {\n resolution: parseFloat(settings.RETINA_PREFIX.exec(value)?.[1] ?? \"1\"),\n format: split[split.length - 2],\n src: value\n };\n }\n },\n loader: {\n name: \"spritesheetLoader\",\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n async testParse(asset, options) {\n return utils.path.extname(options.src).toLowerCase() === \".json\" && !!asset.frames;\n },\n async parse(asset, options, loader) {\n let basePath = utils.path.dirname(options.src);\n if (basePath && basePath.lastIndexOf(\"/\") !== basePath.length - 1) {\n basePath += \"/\";\n }\n let imagePath = basePath + asset.meta.image;\n imagePath = copySearchParams(imagePath, options.src);\n const assets = await loader.load([imagePath]);\n const texture = assets[imagePath];\n const spritesheet = new Spritesheet(texture.baseTexture, asset, options.src);\n await spritesheet.parse();\n const multiPacks = asset?.meta?.related_multi_packs;\n if (Array.isArray(multiPacks)) {\n const promises = [];\n for (const item of multiPacks) {\n if (typeof item !== \"string\") {\n continue;\n }\n let itemUrl = basePath + item;\n if (options.data?.ignoreMultiPack) {\n continue;\n }\n itemUrl = copySearchParams(itemUrl, options.src);\n promises.push(loader.load({\n src: itemUrl,\n data: {\n ignoreMultiPack: true\n }\n }));\n }\n const res = await Promise.all(promises);\n spritesheet.linkedSheets = res;\n res.forEach((item) => {\n item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => sp !== item));\n });\n }\n return spritesheet;\n },\n unload(spritesheet) {\n spritesheet.destroy(true);\n }\n }\n};\nextensions.add(spritesheetAsset);\n\nexport { spritesheetAsset };\n//# sourceMappingURL=spritesheetAsset.mjs.map\n","import { settings, utils } from '@pixi/core';\nimport { TextStyle } from '@pixi/text';\n\nconst _HTMLTextStyle = class extends TextStyle {\n constructor() {\n super(...arguments);\n this._fonts = [];\n this._overrides = [];\n this._stylesheet = \"\";\n this.fontsDirty = false;\n }\n static from(originalStyle) {\n return new _HTMLTextStyle(Object.keys(_HTMLTextStyle.defaultOptions).reduce((obj, prop) => ({ ...obj, [prop]: originalStyle[prop] }), {}));\n }\n cleanFonts() {\n if (this._fonts.length > 0) {\n this._fonts.forEach((font) => {\n URL.revokeObjectURL(font.src);\n font.refs--;\n if (font.refs === 0) {\n if (font.fontFace) {\n document.fonts.delete(font.fontFace);\n }\n delete _HTMLTextStyle.availableFonts[font.originalUrl];\n }\n });\n this.fontFamily = \"Arial\";\n this._fonts.length = 0;\n this.styleID++;\n this.fontsDirty = true;\n }\n }\n loadFont(url, options = {}) {\n const { availableFonts } = _HTMLTextStyle;\n if (availableFonts[url]) {\n const font = availableFonts[url];\n this._fonts.push(font);\n font.refs++;\n this.styleID++;\n this.fontsDirty = true;\n return Promise.resolve();\n }\n return settings.ADAPTER.fetch(url).then((response) => response.blob()).then(async (blob) => new Promise((resolve, reject) => {\n const src = URL.createObjectURL(blob);\n const reader = new FileReader();\n reader.onload = () => resolve([src, reader.result]);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n })).then(async ([src, dataSrc]) => {\n const font = Object.assign({\n family: utils.path.basename(url, utils.path.extname(url)),\n weight: \"normal\",\n style: \"normal\",\n src,\n dataSrc,\n refs: 1,\n originalUrl: url,\n fontFace: null\n }, options);\n availableFonts[url] = font;\n this._fonts.push(font);\n this.styleID++;\n const fontFace = new FontFace(font.family, `url(${font.src})`, {\n weight: font.weight,\n style: font.style\n });\n font.fontFace = fontFace;\n await fontFace.load();\n document.fonts.add(fontFace);\n await document.fonts.ready;\n this.styleID++;\n this.fontsDirty = true;\n });\n }\n addOverride(...value) {\n const toAdd = value.filter((v) => !this._overrides.includes(v));\n if (toAdd.length > 0) {\n this._overrides.push(...toAdd);\n this.styleID++;\n }\n }\n removeOverride(...value) {\n const toRemove = value.filter((v) => this._overrides.includes(v));\n if (toRemove.length > 0) {\n this._overrides = this._overrides.filter((v) => !toRemove.includes(v));\n this.styleID++;\n }\n }\n toCSS(scale) {\n return [\n `transform: scale(${scale})`,\n `transform-origin: top left`,\n \"display: inline-block\",\n `color: ${this.normalizeColor(this.fill)}`,\n `font-size: ${this.fontSize}px`,\n `font-family: ${this.fontFamily}`,\n `font-weight: ${this.fontWeight}`,\n `font-style: ${this.fontStyle}`,\n `font-variant: ${this.fontVariant}`,\n `letter-spacing: ${this.letterSpacing}px`,\n `text-align: ${this.align}`,\n `padding: ${this.padding}px`,\n `white-space: ${this.whiteSpace}`,\n ...this.lineHeight ? [`line-height: ${this.lineHeight}px`] : [],\n ...this.wordWrap ? [\n `word-wrap: ${this.breakWords ? \"break-all\" : \"break-word\"}`,\n `max-width: ${this.wordWrapWidth}px`\n ] : [],\n ...this.strokeThickness ? [\n `-webkit-text-stroke-width: ${this.strokeThickness}px`,\n `-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,\n `text-stroke-width: ${this.strokeThickness}px`,\n `text-stroke-color: ${this.normalizeColor(this.stroke)}`,\n \"paint-order: stroke\"\n ] : [],\n ...this.dropShadow ? [this.dropShadowToCSS()] : [],\n ...this._overrides\n ].join(\";\");\n }\n toGlobalCSS() {\n return this._fonts.reduce((result, font) => `${result}\n @font-face {\n font-family: \"${font.family}\";\n src: url('${font.dataSrc}');\n font-weight: ${font.weight};\n font-style: ${font.style}; \n }`, this._stylesheet);\n }\n get stylesheet() {\n return this._stylesheet;\n }\n set stylesheet(value) {\n if (this._stylesheet !== value) {\n this._stylesheet = value;\n this.styleID++;\n }\n }\n normalizeColor(color) {\n if (Array.isArray(color)) {\n color = utils.rgb2hex(color);\n }\n if (typeof color === \"number\") {\n return utils.hex2string(color);\n }\n return color;\n }\n dropShadowToCSS() {\n let color = this.normalizeColor(this.dropShadowColor);\n const alpha = this.dropShadowAlpha;\n const x = Math.round(Math.cos(this.dropShadowAngle) * this.dropShadowDistance);\n const y = Math.round(Math.sin(this.dropShadowAngle) * this.dropShadowDistance);\n if (color.startsWith(\"#\") && alpha < 1) {\n color += (alpha * 255 | 0).toString(16).padStart(2, \"0\");\n }\n const position = `${x}px ${y}px`;\n if (this.dropShadowBlur > 0) {\n return `text-shadow: ${position} ${this.dropShadowBlur}px ${color}`;\n }\n return `text-shadow: ${position} ${color}`;\n }\n reset() {\n Object.assign(this, _HTMLTextStyle.defaultOptions);\n }\n onBeforeDraw() {\n const { fontsDirty: prevFontsDirty } = this;\n this.fontsDirty = false;\n if (this.isSafari && this._fonts.length > 0 && prevFontsDirty) {\n return new Promise((resolve) => setTimeout(resolve, 100));\n }\n return Promise.resolve();\n }\n get isSafari() {\n const { userAgent } = settings.ADAPTER.getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n }\n set fillGradientStops(_value) {\n console.warn(\"[HTMLTextStyle] fillGradientStops is not supported by HTMLText\");\n }\n get fillGradientStops() {\n return super.fillGradientStops;\n }\n set fillGradientType(_value) {\n console.warn(\"[HTMLTextStyle] fillGradientType is not supported by HTMLText\");\n }\n get fillGradientType() {\n return super.fillGradientType;\n }\n set miterLimit(_value) {\n console.warn(\"[HTMLTextStyle] miterLimit is not supported by HTMLText\");\n }\n get miterLimit() {\n return super.miterLimit;\n }\n set trim(_value) {\n console.warn(\"[HTMLTextStyle] trim is not supported by HTMLText\");\n }\n get trim() {\n return super.trim;\n }\n set textBaseline(_value) {\n console.warn(\"[HTMLTextStyle] textBaseline is not supported by HTMLText\");\n }\n get textBaseline() {\n return super.textBaseline;\n }\n set leading(_value) {\n console.warn(\"[HTMLTextStyle] leading is not supported by HTMLText\");\n }\n get leading() {\n return super.leading;\n }\n set lineJoin(_value) {\n console.warn(\"[HTMLTextStyle] lineJoin is not supported by HTMLText\");\n }\n get lineJoin() {\n return super.lineJoin;\n }\n};\nlet HTMLTextStyle = _HTMLTextStyle;\nHTMLTextStyle.availableFonts = {};\nHTMLTextStyle.defaultOptions = {\n align: \"left\",\n breakWords: false,\n dropShadow: false,\n dropShadowAlpha: 1,\n dropShadowAngle: Math.PI / 6,\n dropShadowBlur: 0,\n dropShadowColor: \"black\",\n dropShadowDistance: 5,\n fill: \"black\",\n fontFamily: \"Arial\",\n fontSize: 26,\n fontStyle: \"normal\",\n fontVariant: \"normal\",\n fontWeight: \"normal\",\n letterSpacing: 0,\n lineHeight: 0,\n padding: 0,\n stroke: \"black\",\n strokeThickness: 0,\n whiteSpace: \"normal\",\n wordWrap: false,\n wordWrapWidth: 100\n};\n\nexport { HTMLTextStyle };\n//# sourceMappingURL=HTMLTextStyle.mjs.map\n","import { Texture, settings, Rectangle, utils } from '@pixi/core';\nimport { Sprite } from '@pixi/sprite';\nimport { TextStyle } from '@pixi/text';\nimport { HTMLTextStyle } from './HTMLTextStyle.mjs';\n\nconst _HTMLText = class extends Sprite {\n constructor(text = \"\", style = {}) {\n super(Texture.EMPTY);\n this._text = null;\n this._style = null;\n this._autoResolution = true;\n this._loading = false;\n this.localStyleID = -1;\n this.dirty = false;\n this.ownsStyle = false;\n const image = new Image();\n const texture = Texture.from(image, {\n scaleMode: settings.SCALE_MODE,\n resourceOptions: {\n autoLoad: false\n }\n });\n texture.orig = new Rectangle();\n texture.trim = new Rectangle();\n this.texture = texture;\n const nssvg = \"http://www.w3.org/2000/svg\";\n const nsxhtml = \"http://www.w3.org/1999/xhtml\";\n const svgRoot = document.createElementNS(nssvg, \"svg\");\n const foreignObject = document.createElementNS(nssvg, \"foreignObject\");\n const domElement = document.createElementNS(nsxhtml, \"div\");\n const styleElement = document.createElementNS(nsxhtml, \"style\");\n foreignObject.setAttribute(\"width\", \"10000\");\n foreignObject.setAttribute(\"height\", \"10000\");\n foreignObject.style.overflow = \"hidden\";\n svgRoot.appendChild(foreignObject);\n this.maxWidth = _HTMLText.defaultMaxWidth;\n this.maxHeight = _HTMLText.defaultMaxHeight;\n this._domElement = domElement;\n this._styleElement = styleElement;\n this._svgRoot = svgRoot;\n this._foreignObject = foreignObject;\n this._foreignObject.appendChild(styleElement);\n this._foreignObject.appendChild(domElement);\n this._image = image;\n this._loadImage = new Image();\n this._autoResolution = _HTMLText.defaultAutoResolution;\n this._resolution = _HTMLText.defaultResolution ?? settings.RESOLUTION;\n this.text = text;\n this.style = style;\n }\n measureText(overrides) {\n const { text, style, resolution } = Object.assign({\n text: this._text,\n style: this._style,\n resolution: this._resolution\n }, overrides);\n Object.assign(this._domElement, {\n innerHTML: text,\n style: style.toCSS(resolution)\n });\n this._styleElement.textContent = style.toGlobalCSS();\n document.body.appendChild(this._svgRoot);\n const contentBounds = this._domElement.getBoundingClientRect();\n this._svgRoot.remove();\n const contentWidth = Math.min(this.maxWidth, Math.ceil(contentBounds.width));\n const contentHeight = Math.min(this.maxHeight, Math.ceil(contentBounds.height));\n this._svgRoot.setAttribute(\"width\", contentWidth.toString());\n this._svgRoot.setAttribute(\"height\", contentHeight.toString());\n if (text !== this._text) {\n this._domElement.innerHTML = this._text;\n }\n if (style !== this._style) {\n Object.assign(this._domElement, { style: this._style?.toCSS(resolution) });\n this._styleElement.textContent = this._style?.toGlobalCSS();\n }\n return {\n width: contentWidth + style.padding * 2,\n height: contentHeight + style.padding * 2\n };\n }\n async updateText(respectDirty = true) {\n const { style, _image: image, _loadImage: loadImage } = this;\n if (this.localStyleID !== style.styleID) {\n this.dirty = true;\n this.localStyleID = style.styleID;\n }\n if (!this.dirty && respectDirty) {\n return;\n }\n const { width, height } = this.measureText();\n image.width = loadImage.width = Math.ceil(Math.max(1, width));\n image.height = loadImage.height = Math.ceil(Math.max(1, height));\n if (!this._loading) {\n this._loading = true;\n await new Promise((resolve) => {\n loadImage.onload = async () => {\n await style.onBeforeDraw();\n this._loading = false;\n image.src = loadImage.src;\n loadImage.onload = null;\n loadImage.src = \"\";\n this.updateTexture();\n resolve();\n };\n const svgURL = new XMLSerializer().serializeToString(this._svgRoot);\n loadImage.src = `data:image/svg+xml;charset=utf8,${encodeURIComponent(svgURL)}`;\n });\n }\n }\n get source() {\n return this._image;\n }\n updateTexture() {\n const { style, texture, _image: image, resolution } = this;\n const { padding } = style;\n const { baseTexture } = texture;\n texture.trim.width = texture._frame.width = image.width / resolution;\n texture.trim.height = texture._frame.height = image.height / resolution;\n texture.trim.x = -padding;\n texture.trim.y = -padding;\n texture.orig.width = texture._frame.width - padding * 2;\n texture.orig.height = texture._frame.height - padding * 2;\n this._onTextureUpdate();\n baseTexture.setRealSize(image.width, image.height, resolution);\n this.dirty = false;\n }\n _render(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n this.updateText(true);\n super._render(renderer);\n }\n _renderCanvas(renderer) {\n if (this._autoResolution && this._resolution !== renderer.resolution) {\n this._resolution = renderer.resolution;\n this.dirty = true;\n }\n this.updateText(true);\n super._renderCanvas(renderer);\n }\n getLocalBounds(rect) {\n this.updateText(true);\n return super.getLocalBounds(rect);\n }\n _calculateBounds() {\n this.updateText(true);\n this.calculateVertices();\n this._bounds.addQuad(this.vertexData);\n }\n _onStyleChange() {\n this.dirty = true;\n }\n destroy(options) {\n if (typeof options === \"boolean\") {\n options = { children: options };\n }\n options = Object.assign({}, _HTMLText.defaultDestroyOptions, options);\n super.destroy(options);\n const forceClear = null;\n if (this.ownsStyle) {\n this._style?.cleanFonts();\n }\n this._style = forceClear;\n this._svgRoot?.remove();\n this._svgRoot = forceClear;\n this._domElement?.remove();\n this._domElement = forceClear;\n this._foreignObject?.remove();\n this._foreignObject = forceClear;\n this._styleElement?.remove();\n this._styleElement = forceClear;\n this._loadImage.src = \"\";\n this._loadImage.onload = null;\n this._loadImage = forceClear;\n this._image.src = \"\";\n this._image = forceClear;\n }\n get width() {\n this.updateText(true);\n return Math.abs(this.scale.x) * this._image.width / this.resolution;\n }\n set width(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.x) || 1;\n this.scale.x = s * value / this._image.width / this.resolution;\n this._width = value;\n }\n get height() {\n this.updateText(true);\n return Math.abs(this.scale.y) * this._image.height / this.resolution;\n }\n set height(value) {\n this.updateText(true);\n const s = utils.sign(this.scale.y) || 1;\n this.scale.y = s * value / this._image.height / this.resolution;\n this._height = value;\n }\n get style() {\n return this._style;\n }\n set style(style) {\n if (this._style === style) {\n return;\n }\n style = style || {};\n if (style instanceof HTMLTextStyle) {\n this.ownsStyle = false;\n this._style = style;\n } else if (style instanceof TextStyle) {\n console.warn(\"[HTMLText] Cloning TextStyle, if this is not what you want, use HTMLTextStyle\");\n this.ownsStyle = true;\n this._style = HTMLTextStyle.from(style);\n } else {\n this.ownsStyle = true;\n this._style = new HTMLTextStyle(style);\n }\n this.localStyleID = -1;\n this.dirty = true;\n }\n get text() {\n return this._text;\n }\n set text(text) {\n text = String(text === \"\" || text === null || text === void 0 ? \" \" : text);\n text = this.sanitiseText(text);\n if (this._text === text) {\n return;\n }\n this._text = text;\n this.dirty = true;\n }\n get resolution() {\n return this._resolution;\n }\n set resolution(value) {\n this._autoResolution = false;\n if (this._resolution === value) {\n return;\n }\n this._resolution = value;\n this.dirty = true;\n }\n sanitiseText(text) {\n return text.replace(/

/gi, \"
\").replace(/
/gi, \"
\").replace(/ /gi, \" \");\n }\n};\nlet HTMLText = _HTMLText;\nHTMLText.defaultDestroyOptions = {\n texture: true,\n children: false,\n baseTexture: true\n};\nHTMLText.defaultMaxWidth = 2024;\nHTMLText.defaultMaxHeight = 2024;\nHTMLText.defaultAutoResolution = true;\n\nexport { HTMLText };\n//# sourceMappingURL=HTMLText.mjs.map\n"],"names":["earcut","data","holeIndices","dim","minX","minY","maxX","maxY","x","y","invSize","hasHoles","length","outerLen","outerNode","linkedList","triangles","next","prev","i","len","list","queue","steiner","push","getLeftmost","sort","compareX","eliminateHole","eliminateHoles","Math","max","earcutLinked","start","end","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","p","area","ear","pass","z","zOrder","prevZ","nextZ","q","e","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","stop","isEarHashed","isEar","cureLocalIntersections","splitEarcut","a","b","c","ax","bx","cx","ay","by","cy","x0","y0","x1","y1","pointInTriangle","minZ","maxZ","n","intersects","locallyInside","isValidDiagonal","splitPolygon","hole","bridge","m","hx","hy","qx","Infinity","tan","mx","my","tanMin","abs","sectorContainsSector","findHoleBridge","bridgeReverse","leftmost","px","py","intersectsPolygon","inside","middleInside","r","p1","p2","q1","q2","o1","sign","o2","o3","o4","onSegment","min","num","a2","Node","b2","an","bp","this","sum","j","module","exports","deviation","polygonArea","trianglesArea","flatten","result","vertices","holes","dimensions","holeIndex","d","has","Object","prototype","hasOwnProperty","prefix","Events","EE","fn","context","once","addListener","emitter","event","TypeError","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","events","name","names","call","slice","getOwnPropertySymbols","concat","listeners","handlers","l","ee","Array","listenerCount","emit","a1","a3","a4","a5","args","arguments","removeListener","undefined","apply","on","removeAllListeners","off","prefixed","appleIphone","appleIpod","appleTablet","appleUniversal","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","isAppleTabletOnIos13","navigator","platform","maxTouchPoints","MSStream","isMobile","param","nav","userAgent","tmp","split","match","regex","test","createMatch","apple","phone","ipod","tablet","universal","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","any","_Application","constructor","options","stage","assign","forceCanvas","renderer","_plugins","forEach","plugin","init","render","view","screen","destroy","removeView","stageOptions","plugins","reverse","Application","ResizePlugin","static","defineProperty","set","dom","globalThis","removeEventListener","queueResize","_resizeTo","addEventListener","resize","get","cancelResize","_resizeId","requestAnimationFrame","cancelAnimationFrame","width","height","window","innerWidth","innerHeight","clientWidth","clientHeight","resizeTo","extension","assetKeyMap","loader","resolver","cache","detection","ref","entries","filter","key","type","keys","BackgroundLoader","verbose","_loader","_assetList","_isLoading","_maxConcurrent","add","assetUrls","console","log","_isActive","_next","async","toLoad","toLoadAmount","pop","load","active","value","checkExtension","url","tempURL","ext","toLowerCase","isArray","includes","convertToList","input","transform","map","item","Cache","_parsers","_cache","Map","_cacheMap","reset","clear","warn","cacheableAssets","parsers","parser","getCacheableAssets","key2","cacheKeys","cachedAssets","texture","baseTexture","remove","cacheMap","delete","isSingleItem","Loader","_parsersValidated","Proxy","target","promiseCache","_getLoadPromiseAndParser","promise","asset","loadParser","_parserHash","parserX","parser2","parse","testParse","assetsToLoadIn","onProgress","_validateParsers","count","assets","singleAsset","assetsToLoad","src","total","promises","Error","Promise","all","assetsToUnloadIn","loadPromise","loadedAsset","unload","reduce","hash","LoaderParserPriority","LoaderParserPriority2","checkDataUrl","mimes","mime","startsWith","loadJson","priority","Low","response","json","loadTxt","text","validWeights","validFontExtensions","validFontMIMEs","CSS_IDENT_TOKEN_REGEX","loadWebFont","fonts","fontFaces","family","nameTokens","replace","word","charAt","toUpperCase","valid","token","fontFamilyName","join","getFontFamilyName","weights","weight","font","FontFace","encodeURI","t","MAX_WORKERS","UUID","checkImageBitmapCode","id","code","workerCode","workerURL","WorkerManager","_initialized","_createdWorkers","workerPool","resolveHash","isImageBitmapSupported","_isImageBitmapSupported","resolve","workerURL2","URL","createObjectURL","Blob","worker","Worker","terminate","revokeObjectURL","loadImageBitmap","_run","getWorker","hardwareConcurrency","complete","returnWorker","error","uuid","reject","_initWorkers","toDo","postMessage","createTexture","base","validImageExtensions","validImageMIMEs","loadTextures","High","config","preferWorkers","preferCreateImageBitmap","crossOrigin","createImageBitmap","ok","status","statusText","imageBlob","blob","Image","onload","resolution","resource","loadSVG","resourceOptions","_options","processX","ids","depth","tags","createStringVariations","string","vars","substring","Resolver","_defaultBundleIdentifierOptions","connector","createBundleAssetId","bundleId","assetId","_bundleIdConnector","extractAssetIdFromBundle","assetBundleId","_createBundleAssetId","_extractAssetIdFromBundle","_assetMap","_preferredOrder","_resolverHash","_bundles","setBundleIdentifier","bundleIdentifier","prefer","preferOrders","params","basePath","_basePath","rootPath","_rootPath","_manifest","_defaultSearchParams","setDefaultSearchParams","searchParams","queryValues","encodeURIComponent","addManifest","manifest","bundles","bundle","addBundle","assetNames","bundleAssetId","srcs","bundleIds","bundleId2","keysIn","assetsIn","hasKey","assetMap","formattedAsset","parsed","format","alias","_appendDefaultSearchParams","resolveBundle","out","results","resolveUrl","preferredOrder","_getPreferredOrder","bestAsset","priorityKey","filteredAssets","hasBundle","preferred","find","preference","Assets","_detections","_backgroundLoader","defaultSearchParams","resolutionPref","texturePreference","formats","formatPref","preferences","setPreferences","urls","urlArray","resolveResults","_mapLoadToResolve","_onProgress","resolveResult","then","resolveResult2","values","resolveArray","resolveKeys","loadedAssets","_unloadFromResolved","detections","handleByList","cacheTextureArray","every","detectAvif","f","detectWebp","imageFormats","detectDefaults","resolveTextureUrl","parseFloat","copySearchParams","targetUrl","sourceUrl","grad","turn","rad","PI","pow","round","u","isFinite","g","o","s","toString","h","v","floor","exec","parseInt","substr","Number","object","N","trim","M","H","$","rgba","isValid","brightness","isDark","isLight","toHex","toRgb","toRgbString","toHsl","toHslString","toHsv","invert","w","saturate","desaturate","grayscale","lighten","darken","rotate","hue","alpha","isEqual","S","indexOf","white","bisque","blue","cadetblue","chartreuse","chocolate","coral","antiquewhite","aqua","azure","whitesmoke","papayawhip","plum","blanchedalmond","black","gold","goldenrod","gainsboro","cornsilk","cornflowerblue","burlywood","aquamarine","beige","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkkhaki","darkgray","darkgreen","darkgrey","peachpuff","darkmagenta","darkred","darkorchid","darkorange","darkslateblue","gray","darkslategray","darkslategrey","deeppink","deepskyblue","wheat","firebrick","floralwhite","ghostwhite","darkviolet","magenta","green","dodgerblue","grey","honeydew","hotpink","blueviolet","forestgreen","lawngreen","indianred","indigo","fuchsia","brown","maroon","mediumblue","lightcoral","darkturquoise","lightcyan","ivory","lightyellow","lightsalmon","lightseagreen","linen","mediumaquamarine","lemonchiffon","lime","khaki","mediumseagreen","limegreen","mediumspringgreen","lightskyblue","lightblue","midnightblue","lightpink","mistyrose","moccasin","mintcream","lightslategray","lightslategrey","navajowhite","navy","mediumvioletred","powderblue","palegoldenrod","oldlace","paleturquoise","mediumturquoise","mediumorchid","rebeccapurple","lightsteelblue","mediumslateblue","thistle","orchid","mediumpurple","purple","pink","skyblue","springgreen","palegreen","red","yellow","slateblue","lavenderblush","peru","palevioletred","violet","teal","slategray","slategrey","aliceblue","darkseagreen","darkolivegreen","greenyellow","seagreen","seashell","tomato","silver","sienna","lavender","lightgreen","orange","orangered","steelblue","royalblue","turquoise","yellowgreen","salmon","saddlebrown","sandybrown","rosybrown","darksalmon","lightgoldenrodyellow","snow","lightgrey","lightgray","dimgray","dimgrey","olivedrab","olive","toName","closest","_Color","_value","_components","Float32Array","fill","_int","setValue","cloneSource","isSourceEqual","normalize","ArrayBuffer","isView","value1","value2","type1","keys1","keys2","toRgba","toRgbaString","toUint8RgbArray","toRgbArray","toNumber","toLittleEndianNumber","multiply","temp","refreshInt","premultiply","applyToRGB","toPremultiplied","hexString","toHexa","alphaString","setAlpha","_clamp","steps","toArray","Uint8Array","Uint8ClampedArray","HEX_PATTERN","color","Color","shared","ENV","ENV2","RENDERER_TYPE","RENDERER_TYPE2","BUFFER_BITS","BUFFER_BITS2","BLEND_MODES","BLEND_MODES2","DRAW_MODES","DRAW_MODES2","FORMATS","FORMATS2","TARGETS","TARGETS2","TYPES","TYPES2","SAMPLER_TYPES","SAMPLER_TYPES2","SCALE_MODES","SCALE_MODES2","WRAP_MODES","WRAP_MODES2","MIPMAP_MODES","MIPMAP_MODES2","ALPHA_MODES","ALPHA_MODES2","CLEAR_MODES","CLEAR_MODES2","GC_MODES","GC_MODES2","PRECISION","PRECISION2","MASK_TYPES","MASK_TYPES2","MSAA_QUALITY","MSAA_QUALITY2","BUFFER_TYPE","BUFFER_TYPE2","ViewableBuffer","sizeOrBuffer","rawBinaryData","buffer","uint32View","Uint32Array","float32View","int8View","_int8View","Int8Array","uint8View","_uint8View","int16View","_int16View","Int16Array","uint16View","_uint16View","Uint16Array","int32View","_int32View","Int32Array","fragTemplate","generateIfTestSrc","maxIfs","State","blendMode","polygonOffset","blend","depthMask","offsets","culling","depthTest","clockwiseFrontFace","_blendMode","_polygonOffset","state","INSTALLED","autoDetectResource","source","ResourcePlugin","items","_name","_aliasCount","a0","a6","a7","ensureNonAliasedItems","index","splice","contains","removeAll","empty","defineProperties","dispatch","run","Resource","_width","_height","destroyed","internal","onResize","onUpdate","onError","bind","unbind","update","style","_renderer","_baseTexture","_glTexture","dispose","_source","_extension","BufferResource","super","upload","glTexture","gl","pixelStorei","UNPACK_PREMULTIPLY_ALPHA_WEBGL","alphaMode","realWidth","realHeight","texSubImage2D","texImage2D","internalFormat","defaultBufferOptions","scaleMode","_BaseTexture","defaultOptions","mipmap","anisotropicLevel","wrapMode","_mipmap","_wrapMode","_scaleMode","uid","touched","isPowerOfTwo","_refreshPOT","_glTextures","dirtyId","dirtyStyleId","cacheId","textureCacheIds","_batchEnabled","_batchLocation","parentTextureArray","setResource","setStyle","dirty","setSize","desiredWidth","desiredHeight","setRealSize","isPow2","setResolution","oldResolution","BaseTextureCache","TextureCache","removeFromCache","castToBaseTexture","strict","isFrame","_pixiId","pixiIdPrefix","addToCache","baseTextureFromCache","BaseTexture","_globalBatch","BatchDrawCall","texArray","size","UID","Buffer","_static","_glBuffers","_updateID","disposeRunner","Attribute","normalized","stride","instance","divisor","byteSizeMap","Geometry","buffers","attributes","indexBuffer","glVertexArrayObjects","instanced","instanceCount","refCount","addAttribute","bufferIndex","getAttribute","getBuffer","addIndex","getIndex","interleave","arrays","sizes","interleavedBuffer","attribute","outSize","views","littleOffset","array","getBufferType","interleaveTypedArrays","getSize","clone","geometry","attrib","geometries","geometryOut","offset","offset2","bufferIndexToCount","indexBufferData","BatchGeometry","_buffer","_indexBuffer","uniformParsers","uniform","codeUbo","GLSL_TO_SINGLE_SETTERS_CACHED","float","vec2","vec3","vec4","int","ivec2","ivec3","ivec4","uint","uvec2","uvec3","uvec4","bool","bvec2","bvec3","bvec4","mat2","mat3","mat4","sampler2D","samplerCube","sampler2DArray","GLSL_TO_ARRAY_SETTERS","unknownContext","maxFragmentPrecision","getMaxFragmentPrecision","isContextLost","canvas","getContext","getExtension","getTestContext","getShaderPrecisionFormat","shaderFragment","FRAGMENT_SHADER","HIGH_FLOAT","precision","GLSL_TO_SIZE","mapSize","GL_TABLE","GL_TO_GLSL_TYPES","FLOAT","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","INT","INT_VEC2","INT_VEC3","INT_VEC4","UNSIGNED_INT","UNSIGNED_INT_VEC2","UNSIGNED_INT_VEC3","UNSIGNED_INT_VEC4","BOOL","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","FLOAT_MAT2","FLOAT_MAT3","FLOAT_MAT4","SAMPLER_2D","INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_2D","SAMPLER_CUBE","INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_CUBE","SAMPLER_2D_ARRAY","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D_ARRAY","mapType","typeNames","tn","setPrecision","requestedPrecision","maxSupportedPrecision","nameCache","_Program","vertexSrc","fragmentSrc","extra","defaultVertexSrc","defaultFragmentSrc","defaultVertexPrecision","defaultFragmentPrecision","glPrograms","syncUniforms","program","ProgramCache","Program","UniformGroup","uniforms","isStatic","isUbo","group","ubo","autoManage","_ubo","Shader","uniformBindCount","uniformGroup","checkUniformExists","from","BatchShaderGenerator","programCache","defaultGroupCache","generateShader","maxTextures","sampleValues","uSamplers","generateSampleSrc","tint","translationMatrix","default","BatchTextureArray","elements","ObjectRenderer","flush","_object","_BatchRenderer","setShaderGenerator","geometryClass","vertexSize","for2d","defaultBatchSize","_vertexCount","_indexCount","_bufferedElements","_bufferedTextures","_bufferSize","_shader","_packedGeometries","_packedGeometryPoolSize","_flushId","_aBuffers","_iBuffers","onPrerender","runners","contextChange","_dcIndex","_aIndex","_iIndex","_attributeBuffer","_tempBoundTextures","defaultMaxTextures","_defaultMaxTextures","allowMax","maxRecommendedTextures","canUploadSameBuffer","_canUploadSameBuffer","MAX_TEXTURES","deprecation","defaultFragmentTemplate","vertex","fragment","shaderGenerator","getParameter","MAX_TEXTURE_IMAGE_UNITS","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","checkMaxIfStatementsInShader","initFlushBuffers","_drawCallPool","_textureArrayPool","MAX_SPRITES","MAX_TA","element","_texture","vertexData","indices","buildTexturesAndDrawCalls","textures","textureArrays","batch","boundTextures","touch","textureGC","TICK","countTexArrays","copyBoundTextures","tex","boundArray","buildDrawCalls","finish","drawCalls","dcIndex","aIndex","iIndex","drawCall","sprite","spriteBlendMode","premultiplyBlendMode","packInterleavedGeometry","bindAndClearTexArray","textureSystem","updateGeometry","packedGeometries","attributeBuffer","updateBuffers","drawBatches","dcCount","stateSystem","curTexArray","drawElements","UNSIGNED_SHORT","getAttributeBuffer","getIndexBuffer","ensureSamplerType","roundedP2","nextPow2","ceil","roundedSizeIndex","log2","roundedSize","packedVertices","uvs","indicies","textureId","worldAlpha","argb","_tintRGB","BatchRenderer","_Filter","padding","defaultResolution","multisample","defaultMultisample","enabled","autoFit","filterManager","output","clearMode","_currentState","applyFilter","_resolution","Filter","BackgroundSystem","clearBeforeRender","_backgroundColor","backgroundColor","background","backgroundAlpha","BatchSystem","emptyRenderer","currentRenderer","setObjectRenderer","objectRenderer","arr","batchId","loc","bound","CONTEXT_UID_COUNTER","ContextSystem","webGLVersion","extensions","supports","uint32Indices","handleContextLost","handleContextRestored","isLost","CONTEXT_UID","initFromContext","premultipliedAlpha","preserveDrawingBuffer","useContextAlpha","powerPreference","initFromOptions","antialias","stencil","validateContext","createContext","getExtensions","common","loseContext","anisotropicFiltering","floatTextureLinear","s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","drawBuffers","depthTexture","vertexArrayObject","uint32ElementIndex","floatTexture","textureHalfFloat","textureHalfFloatLinear","colorBufferFloat","preventDefault","setTimeout","restoreContext","useProgram","postrender","renderingToScreen","getContextAttributes","isWebGl2","WebGL2RenderingContext","hasuint32","DepthResource","Framebuffer","dirtyFormat","dirtySize","colorTextures","glFramebuffers","colorTexture","addColorTexture","addDepthTexture","enableDepth","enableStencil","destroyDepthTexture","BaseRenderTexture","_clear","framebuffer","maskStack","filterStack","clearColor","BaseImageResource","sourceAny","naturalWidth","videoWidth","naturalHeight","videoHeight","noSubImage","crossorigin","determineCrossOrigin","HTMLImageElement","HTMLVideoElement","readyState","buffered","TEXTURE_2D","ImageResource","imageElement","_process","preserveBitmap","createBitmap","bitmap","_load","autoLoad","completed","onerror","process","cors","fetch","mode","premultiplyAlpha","flag","glTextures","otherTex","close","TextureUvs","x2","y2","x3","y3","uvsFloat32","frame","baseFrame","tw","th","w2","h2","cX","cY","DEFAULT_UVS","removeAllHandlers","Texture","orig","anchor","borders","noFrame","_frame","_uvs","uvMatrix","_rotate","defaultAnchor","defaultBorders","onBaseTextureUpdated","updateUvs","destroyBase","clonedFrame","clonedOrig","clonedTexture","getResolutionOfUrl","fromBuffer","imageUrl","textureFromCache","xNotFit","yNotFit","relationship","errorX","errorY","EMPTY","_EMPTY","WHITE","_WHITE","fillStyle","fillRect","RenderTexture","baseRenderTexture","filterFrame","filterPoolKey","resizeBaseTexture","RenderTexturePool","textureOptions","texturePool","enableFullScreen","_pixelsWidth","_pixelsHeight","getOptimalTexture","minWidth","minHeight","renderTexture","getFilterTexture","filterTexture","returnTexture","returnFilterTexture","destroyTextures","setScreenSize","SCREEN_KEY","Quad","QuadUv","vertexBuffer","uvBuffer","targetTextureFrame","destinationFrame","invalidate","FilterState","legacy","sourceFrame","bindingSourceFrame","bindingDestinationFrame","filters","tempPoints","tempMatrix","FilterSystem","defaultFilterStack","statePool","quad","quadUv","tempRect","activeState","globalUniforms","outputFrame","inputSize","inputPixel","inputClamp","filterArea","filterClamp","forceClear","useMaxPadding","renderTextureSystem","current","copyFrom","getBounds","pad","sourceFrameProjected","projection","transformAABB","fit","roundFrame","getOptimalFilterTexture","lastState","blit","flip","flop","CLEAR","bindAndClear","autoClear","stateId","uSampler","filterGlobals","attributeData","aTextureCoord","draw","calculateSpriteMatrix","outputMatrix","mappedMatrix","worldTransform","copyTo","prepend","scale","translate","swap","emptyPool","matrix","rect","lt","lb","rt","rb","left","top","bottom","right","identity","GLFramebuffer","msaaBuffer","blitFramebuffer","mipLevel","tempRectangle","FramebufferSystem","managedFramebuffers","unknownFramebuffer","msaaSamples","disposeAll","viewport","hasMRT","writeDepthTexture","nativeDrawBuffersExtension","nativeDepthTextureExtension","activeTextures","drawBuffersWEBGL","getInternalformatParameter","RENDERBUFFER","RGBA8","SAMPLES","fbo","initFramebuffer","bindFramebuffer","FRAMEBUFFER","updateFramebuffer","resizeFramebuffer","mipWidth","mipHeight","setViewport","mask","createFramebuffer","detectSamples","bindRenderbuffer","renderbufferStorageMultisample","DEPTH24_STENCIL8","renderbufferStorage","DEPTH_STENCIL","parentTexture","canMultisampleFramebuffer","createRenderbuffer","deleteRenderbuffer","framebufferRenderbuffer","COLOR_ATTACHMENT0","framebufferTexture2D","DEPTH_ATTACHMENT","DEPTH_STENCIL_ATTACHMENT","samples","res","sourcePixels","destPixels","sameSize","READ_FRAMEBUFFER","COLOR_BUFFER_BIT","NEAREST","LINEAR","disposeFramebuffer","contextLost","deleteFramebuffer","forceStencil","GeometrySystem","_activeGeometry","_activeVao","hasVao","hasInstance","canUseUInt32ElementIndex","managedGeometries","nativeVaoExtension","createVertexArray","createVertexArrayOES","bindVertexArray","vao","bindVertexArrayOES","deleteVertexArray","deleteVertexArrayOES","instanceExt","vertexAttribDivisor","vertexAttribDivisorANGLE","drawElementsInstanced","drawElementsInstancedANGLE","drawArraysInstanced","drawArraysInstancedANGLE","vaos","incRefCount","initGeometryVao","activateVao","bufferSystem","checkCompatibility","geometryAttributes","shaderAttributes","getSignature","attribs","strings","location","generateProgram","signature","vaoObjectHash","tempStride","tempStart","attribSize","disposeGeometry","buf","vaoId","lastBuffer","glBuffer","enableVertexAttribArray","vertexAttribPointer","byteSize","BYTES_PER_ELEMENT","glType","drawArrays","tempMat","TextureMatrix","clampMargin","mapCoord","uClampFrame","uClampOffset","_textureID","clampOffset","isSimple","multiplyUvs","mat","tx","ty","forceUpdate","append","texBase","margin","SpriteMaskFilter","maskSprite","maskMatrix","_maskSprite","renderable","npmAlpha","otherMatrix","maskClamp","MaskData","maskObject","autoDetect","pooled","isMaskData","colorMask","_filters","_stencilCounter","_scissorCounter","_scissorRect","_scissorRectLocal","_colorMask","_target","copyCountersOrReset","maskAbove","MaskSystem","enableScissor","alphaMaskPool","maskDataPool","alphaMaskIndex","setMaskStack","scissor","maskDataOrTarget","maskData","detect","pushSpriteMask","pushColorMask","popSpriteMask","popColorMask","maskCurrent","isSprite","testScissor","alphaMaskFilter","stashFilterArea","currColorMask","nextColorMask","AbstractMaskSystem","glConst","getStackLength","curStackLen","newStackLen","disable","enable","_useCurrent","rectPool","_ScissorSystem","SCISSOR_TEST","calcScissorRect","prevData","roundFrameToPixels","isFastRect","isMatrixRotated","ScissorSystem","StencilSystem","STENCIL_TEST","prevMaskCount","clearStencil","STENCIL_BUFFER_BIT","stencilFunc","EQUAL","stencilOp","KEEP","INCR","DECR","PluginSystem","extract","enumerable","prepare","interaction","staticMap","rendererPlugins","ProjectionSystem","defaultFrame","projectionMatrix","root","calculateProjection","syncUniformGroup","globals","_destinationFrame","pm","setTransform","_matrix","tempTransform","GenerateTextureSystem","_tempMatrix","generateTexture","displayObject","region","manualRegion","getLocalBounds","skipUpdateTransform","parent","tempRect2","RenderTextureSystem","defaultMaskStack","viewportFrame","_rendererPremultipliedAlpha","_view","fallbackColor","clearMask","GLProgram","uniformData","uniformGroups","uniformDirtyGroups","uniformBufferBindings","booleanArray","defaultValue","logPrettyShaderError","shaderSrc","getShaderSource","line","shaderLog","getShaderInfoLog","splitShader","dedupe","lineNumbers","logArgs","number","fragmentSourceToLog","groupCollapsed","groupEnd","glVertShader","VERTEX_SHADER","glFragShader","webGLProgram","createProgram","attachShader","transformFeedbackVaryings","bufferMode","SEPARATE_ATTRIBS","INTERLEAVED_ATTRIBS","linkProgram","getProgramParameter","LINK_STATUS","vertexShader","fragmentShader","getProgramInfoLog","logProgramError","totalAttributes","ACTIVE_ATTRIBUTES","attribData","getActiveAttrib","getAttribLocation","getAttributeData","totalUniforms","ACTIVE_UNIFORMS","getActiveUniform","getUniformData","bindAttribLocation","deleteShader","getUniformLocation","uboUpdate","_ud","_uv","_syncData","UBO_TO_SINGLE_SETTERS","GLSL_TO_STD40_SIZE","generateUniformBufferSync","syncFunc","usedUniformDatas","getUBOData","uboElements","dataLen","chunkSize","uboElement","lineUpValue","createUBOElements","funcFragments","uniformParser","size2","rowSize","elementSize","remainder","template","Function","unsafeEval","defaultSyncData","textureCount","uboCount","ShaderSystem","systemCheck","_uboCache","func","unsafeEvalSupported","dontSync","glProgram","setUniforms","syncData","getGlProgram","createSyncGroups","generateUniformsSync","syncUniformBufferGroup","createSyncBufferGroup","bindBufferBase","uniformBlockIndex","getUniformBlockIndex","uniformBlockBinding","uboData","preFix","disposeShader","StartupSystem","hello","rendererLogId","_StateSystem","_blendEq","setBlend","setOffset","setCullFace","setDepthTest","setFrontFace","setDepthMask","checks","defaultState","blendModes","ONE","ONE_MINUS_SRC_ALPHA","DST_COLOR","ONE_MINUS_SRC_COLOR","SRC_ALPHA","DST_ALPHA","ZERO","ONE_MINUS_DST_ALPHA","FUNC_REVERSE_SUBTRACT","FUNC_ADD","mapWebGLBlendModesToPixi","diff","forceState","updateCheck","checkBlendMode","BLEND","checkPolygonOffset","POLYGON_OFFSET_FILL","DEPTH_TEST","CULL_FACE","frontFace","setBlendMode","blendFunc","blendFuncSeparate","blendEquationSeparate","setPolygonOffset","UNPACK_FLIP_Y_WEBGL","system","StateSystem","SystemManager","_systemsHash","setup","addRunners","systems","orderByPriority","addSystem","runnerIds","runnerId","ClassRef","emitWithCustomOptions","runner","systemHashKeys","systemName","systemId","_TextureGCSystem","checkCount","maxIdle","defaultMaxIdle","checkCountMax","defaultCheckCountMax","defaultMode","tm","managedTextures","wasRemoved","destroyTexture","children","TextureGCSystem","GLTexture","samplerType","TextureSystem","currentLocation","_unknownBoundTextures","unknownTexture","hasIntegerTextures","internalFormats","table","RGB8","RG8","R8","RGBA8UI","RGB8UI","RG8UI","R8UI","ALPHA","LUMINANCE","LUMINANCE_ALPHA","RGBA8_SNORM","RGB8_SNORM","RG8_SNORM","R8_SNORM","RGBA8I","RGB8I","RG8I","R8I","RGBA16UI","RGB16UI","RG16UI","R16UI","DEPTH_COMPONENT16","RGBA16I","RGB16I","RG16I","R16I","RGBA32UI","RGB32UI","RG32UI","R32UI","DEPTH_COMPONENT24","RGBA32I","RGB32I","RG32I","R32I","RGBA32F","RGB32F","RG32F","R32F","DEPTH_COMPONENT32F","RGBA16F","RGB16F","RG16F","R16F","RGB565","RGBA4","RGB5_A1","RGB10_A2","RGB10_A2UI","R11F_G11F_B10F","RGB9_E5","DEPTH32F_STENCIL8","RGBA","RGB","mapTypeAndFormatToInternalFormat","emptyTextures","emptyTexture2D","bindTexture","UNSIGNED_BYTE","TEXTURE_CUBE_MAP","TEXTURE_CUBE_MAP_POSITIVE_X","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","initTexture","activeTexture","TEXTURE0","updateTexture","updateTextureStyle","initTextureType","HALF_FLOAT","skipRemove","deleteTexture","removeItems","generateMipmap","TEXTURE_WRAP_S","TEXTURE_WRAP_T","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","anisotropicExt","level","MAX_TEXTURE_MAX_ANISOTROPY_EXT","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","TransformFeedbackSystem","transformFeedback","glTransformFeedback","_glTransformFeedbacks","createGLTransformFeedback","bindTransformFeedback","TRANSFORM_FEEDBACK","beginTransformFeedback","drawMode","endTransformFeedback","tf","createTransformFeedback","TRANSFORM_FEEDBACK_BUFFER","disposeTransformFeedback","glTF","deleteTransformFeedback","ViewSystem","autoDensity","resizeView","desiredScreenWidth","desiredScreenHeight","screenWidth","screenHeight","parentNode","removeChild","WRAP_MODE","SCALE_MODE","MIPMAP_TEXTURES","ANISOTROPIC_LEVEL","FILTER_RESOLUTION","FILTER_MULTISAMPLE","SPRITE_MAX_TEXTURES","SPRITE_BATCH_SIZE","CAN_UPLOAD_SAME_BUFFER","GC_MODE","GC_MAX_IDLE","GC_MAX_CHECK_COUNT","PRECISION_VERTEX","PRECISION_FRAGMENT","renderers","autoDetectRenderer","RendererType","defaultFilterVertex","MultisampleSystem","FRAMEBUFFER_BINDING","DRAW_FRAMEBUFFER_BINDING","DRAW_FRAMEBUFFER","GLBuffer","updateID","byteLength","BufferSystem","managedBuffers","boundBufferBases","createGLBuffer","bindBuffer","UNIFORM_BUFFER","bindBufferRange","bufferSubData","drawType","STATIC_DRAW","DYNAMIC_DRAW","bufferData","deleteBuffer","createBuffer","ObjectRendererSystem","prerender","lastObjectRendered","cacheParent","enableTempParent","updateTransform","disableTempParent","_Renderer","systemConfig","__systems","_plugin","__plugins","startup","isWebGLSupported","_multisample","resolutionChange","textureGenerator","Renderer","AbstractMultiResource","itemDirtyIds","partTexture","initFromArray","resources","addBaseTextureAt","addResourceAt","CanvasResource","OffscreenCanvas","HTMLCanvasElement","_CubeResource","linkBaseTexture","SIDES","side","CubeResource","ImageBitmapResource","baseSource","imageBitmap","ImageBitmap","_SVGResource","sourceBase64","svg","_overrideWidth","_overrideHeight","_resolve","_crossorigin","SVG_XML","btoa","unescape","_loadSvg","tempImage","svgWidth","svgHeight","drawImage","svgString","sizeMatch","SVG_SIZE","SVGResource","_VideoResource","videoElement","document","createElement","setAttribute","firstSrc","sourceElement","baseSrc","shift","lastIndexOf","MIME_TYPES","appendChild","_autoUpdate","_isConnectedToTicker","_updateFPS","updateFPS","_msToNextUpdate","autoPlay","_onCanPlay","_onError","_deltaTime","elapsedMS","playbackRate","HAVE_ENOUGH_DATA","HAVE_FUTURE_DATA","_onPlayStart","_onPlayStop","_isSourceReady","_isSourcePlaying","paused","ended","autoUpdate","play","pause","VideoResource","ogv","mov","m4v","texImage3D","TEXTURE_2D_ARRAY","texSubImage3D","Bounds","isEmpty","getRectangle","addPoint","point","addPointMatrix","addQuad","addFrame","addFrameMatrix","addVertexData","beginOffset","endOffset","addVertices","addVerticesMatrix","padX","padY","rawX","rawY","addBounds","bounds","addBoundsMask","_minX","_minY","_maxX","_maxY","addBoundsMatrix","addBoundsArea","paddingX","paddingY","addFramePad","DisplayObject","tempDisplayObjectParent","visible","cullable","cullArea","_lastSortedIndex","_zIndex","_enabledFilters","_bounds","_localBounds","_boundsID","_boundsRect","_localBoundsRect","_mask","_maskRefCount","_destroyed","isMask","propertyName","getOwnPropertyDescriptor","_recursivePostUpdateTransform","_tempDisplayObjectParent","skipUpdate","calculateBounds","transformRef","parentRef","worldBounds","worldBoundsID","toGlobal","position","displayObjectUpdateTransform","toLocal","applyInverse","setParent","container","addChild","removeFromParent","scaleX","scaleY","rotation","skewX","skewY","pivotX","pivotY","skew","pivot","hitArea","eventMode","interactiveChildren","TemporaryDisplayObject","myParent","localTransform","angle","zIndex","sortDirty","worldVisible","sortChildren","_Container","sortableChildren","defaultSortableChildren","onChildrenChange","_length","child","_parentID","addChildAt","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeChildren","beginIndex","endIndex","begin","range","removed","RangeError","sortRequired","_calculateBounds","skipChildrenUpdate","_renderWithCulling","_render","projectionTransform","childCullable","renderAdvanced","destroyChildren","oldChildren","Container","containerUpdateTransform","SORTABLE_CHILDREN","ExtensionType","ExtensionType2","normalizeExtension","normalizePriority","defaultPriority","_addHandlers","_removeHandlers","_queue","extensions2","handle","onAdd","onRemove","addHandlers","removeHandlers","handleByMap","buildCircle","build","graphicsData","points","dx","dy","rx","ry","circle","shape","radius","ellipse","roundedRect","halfWidth","halfHeight","sqrt","j1","j2","j3","j4","cos","sin","triangulate","graphicsGeometry","verts","vertPos","center","fixOrientation","i1","i2","i3","i4","buildPoly","holeArray","buildRectangle","rectData","buildRoundedRectangle","LINE_JOIN","LINE_JOIN2","LINE_CAP","LINE_CAP2","curves","adaptive","maxLength","minSegments","maxSegments","epsilon","_segmentsCount","defaultSegments","isNaN","ArcUtils","fromX","b1","mm","dd","cc","tt","k1","k2","qy","startAngle","atan2","endAngle","anticlockwise","_startX","_startY","_anticlockwise","sweep","theta","theta2","cTheta","sTheta","segMinus","BezierUtils","fromY","cpX","cpY","cpX2","cpY2","toX","toY","t2","t3","nt","nt2","nt3","prevX","prevY","curveLength","dt","dt2","dt3","square","nx","ny","innerWeight","outerWeight","exx","eyy","eix","eiy","eox","eoy","sx","sy","ex","ey","cx2p0x","cy2p0y","angle0","angle1","angleDiff","absAngleDiff","segCount","angleInc","buildLine","lineStyle","native","closedShape","closeStroke","startIndex","buildNativeLine","eps","closePointEps","firstPoint","lastPoint","closedPath","midPointX","midPointY","unshift","indexCount","indexStart","widthSquared","miterLimitSquared","miterLimit","perpx","perpy","perp1x","perp1y","dist","ratio","alignment","cap","ROUND","SQUARE","dx0","dy0","dx1","dy1","dot","cross","c1","c2","pdist","imx","imy","omx","omy","insideWeight","insideMiterOk","MITER","BEVEL","eps2","buildNonNativeLine","QuadraticUtils","a32","ba","xa","ya","FILL_COMMANDS","BATCH_POOL","DRAW_CALL_POOL","GraphicsData","BatchPart","attribStart","endAttrib","tmpPoint","_GraphicsGeometry","boundsPadding","indicesUint16","batchable","colors","textureIds","batchDirty","batches","cacheDirty","clearDirty","shapeIndex","boundsDirty","updateBatches","batchPart","drawShape","drawHole","lastShape","containsPoint","hitHole","validateBatching","currentStyle","transformPoints","processHoles","nextTexture","attribIndex","processFill","processLine","_compareStyles","addUvs","need32","isBatchable","packBatches","styleA","styleB","BATCHABLE_SIZE","currentGroup","currentTexture","addColors","addTextureIds","packAttributes","glPoints","f32","u32","bgr","uvsStart","adjustUvs","offsetX","offsetY","GraphicsGeometry","FillStyle","obj","LineStyle","BUTT","DEFAULT_SHADERS","_Graphics","pluginName","currentPath","batchTint","_fillStyle","_lineStyle","_holeMode","_geometry","_transformID","_tintColor","finishPoly","lineTextureStyle","defaultLineStyleOptions","normalizeColor","startPoly","moveTo","lineTo","_initCurve","quadraticCurveTo","curveTo","bezierCurveTo","arcTo","radius2","arc","startX","startY","xDiff","yDiff","beginFill","beginTextureFill","endFill","drawRect","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","poly","_populateBatches","_renderBatched","_renderDirect","gI","_batchRGB","calculateVertices","calculateTints","_resolveDirectShader","_renderDrawCallDirect","groupTextureCount","_TEMP_POINT","wtID","_worldID","wt","closePath","setMatrix","beginHole","endHole","Graphics","PI_2","RAD_TO_DEG","DEG_TO_RAD","SHAPES","SHAPES2","Point","Rectangle","RECT","rectangle","x02","y02","n00","n10","n01","n11","m00","m10","m01","m11","enlarge","Circle","CIRC","r2","Ellipse","ELIP","normx","normy","Polygon","flat","il","POLY","polygon","xi","yi","xj","yj","pointsDesc","currentPoint","RoundedRectangle","RREC","Matrix","fromArray","transpose","pos","newPos","tx1","d1","decompose","delta","IDENTITY","TEMP_MATRIX","ux","uy","vx","vy","rotationCayley","rotationMatrices","signum","row","_ux","_uy","_vx","_vy","k","groupD8","E","SE","SW","W","NW","NE","MIRROR_VERTICAL","MAIN_DIAGONAL","MIRROR_HORIZONTAL","REVERSE_DIAGONAL","uX","ind","uY","vX","vY","inv","rotationSecond","rotationFirst","sub","rotate180","isVertical","byDirection","matrixAppendRotationInv","ObservablePoint","cb","scope","_x","_y","_Transform","onChange","updateSkew","_rotation","_cx","_sx","_cy","_sy","_localID","_currentLocalID","updateLocalTransform","parentTransform","pt","setFromMatrix","Transform","PlaneGeometry","segWidth","segHeight","segmentsX","segmentsY","sizeX","sizeY","totalSub","xpos","ypos","value3","value4","RopeGeometry","textureScale","amount","textureWidth","distance","updateVertices","nextPoint","perpX","perpY","perpLength","SimplePlane","verticesX","verticesY","autoResize","textureUpdated","NineSlicePlane","leftWidth","topHeight","rightWidth","bottomHeight","_origWidth","_origHeight","_leftWidth","_rightWidth","_topHeight","_bottomHeight","_refresh","updateHorizontalVertices","_getMinScale","updateVerticalVertices","scaleW","scaleH","_uvw","_uvh","SimpleMesh","SimpleRope","ropeGeometry","meshMaterial","MeshBatchUvs","_bufferUpdateId","_textureUpdateId","tempPoint","tempPolygon","_Mesh","vertexDirty","_roundPixels","batchUvs","verticesBuffer","material","roundPixels","tintValue","_renderToBatch","_renderDefault","calculateUvs","vertexDirtyId","geomUvs","step","ind0","ind1","ind2","_cachedTexture","Mesh","MeshGeometry","uvsBuffer","_updateId","MeshMaterial","uTextureMatrix","uColor","_colorDirty","_alpha","applyToChannels","ParticleContainer","maxSize","properties","batchSize","_properties","_maxSize","_batchSize","_buffers","_bufferUpdateIDs","setProperties","tintRgb","particle","smallestChildIndex","ParticleBuffer","dynamicPropertyFlags","dynamicProperties","staticProperties","property","attributeName","uploadFunction","staticStride","staticBuffer","staticData","staticDataUint32","dynamicStride","dynamicBuffer","dynamicData","dynamicDataUint32","initBuffers","dynamicOffset","dynBuffer","staticOffset","statBuffer","uploadDynamic","uploadStatic","ParticleRenderer","uploadVertices","uploadPosition","uploadRotation","uploadUvs","uploadTint","totalChildren","generateBuffers","premultiplied","updateStatic","_generateOneMoreBuffer","bid","TRIANGLES","w0","w1","h0","h1","spritePosition","spriteRotation","textureUvs","CountLimiter","maxItemsPerFrame","itemsLeft","beginFrame","allowedToUpload","findMultipleBaseTextures","_textures","findBaseTexture","findTexture","drawText","_helper","updateText","calculateTextStyle","toFontString","findText","findTextStyle","_BasePrepare","limiter","uploadsPerFrame","uploadHookHelper","addHooks","uploadHooks","completes","ticking","delayedTick","prepareItems","registerFindHook","registerUploadHook","tick","uploaded","addHook","uploadHook","BasePrepare","UPLOADS_PER_FRAME","uploadBaseTextures","uploadGraphics","findGraphics","Prepare","settings","ADAPTER","createCanvas","getCanvasRenderingContext2D","CanvasRenderingContext2D","getWebGLRenderingContext","WebGLRenderingContext","getNavigator","getBaseUrl","baseURI","href","getFontFaceSet","parseXML","xml","DOMParser","parseFromString","RESOLUTION","CREATE_IMAGE_BITMAP","ROUND_PIXELS","AnimatedSprite","_durations","animationSpeed","loop","updateAnchor","onComplete","onFrameChange","onLoop","_currentTime","_playing","_previousFrame","gotoAndStop","frameNumber","currentFrame","gotoAndPlay","deltaTime","elapsed","previousFrame","lag","_textureTrimmedID","_cachedTint","_anchor","frames","images","totalFrames","time","playing","TilingSprite","tileTransform","uvRespectAnchor","tileScale","tilePosition","_onTextureUpdate","gl1VertexSrc","TilingSpriteRenderer","simpleShader","ts","anchorX","anchorY","baseTex","uv","uMapCoord","uTransform","Sprite","_onAnchorUpdate","vertexTrimmedData","_transformTrimmedID","calculateTrimmedVertices","destroyBaseTexture","BitmapFontData","info","page","char","kerning","distanceField","TextFormat","txt","rawData","chars","kernings","attributeList","itemData","strValue","floatValue","face","lineHeight","file","xoffset","yoffset","xadvance","first","second","df","distanceRange","fieldType","XMLFormat","getElementsByTagName","letter","XMLStringFormat","xmlTxt","drawGlyph","metrics","fontProperties","strokeThickness","lineWidth","textBaseline","lineJoin","lines","gradient","dropShadowCorrection","dropShadow","dropShadowDistance","fillGradientStops","lengthPlus1","fillGradientType","createLinearGradient","lastIterationStop","gradStopLineHeight","fontSize","thisLineTop","lineStop","globalStop","clampedStop","addColorStop","totalIterations","currentIteration","generateFillStyle","strokeStyle","stroke","dropShadowColor","dropShadowBlur","shadowColor","dropShadowAlpha","shadowBlur","shadowOffsetX","dropShadowAngle","shadowOffsetY","strokeText","descent","fillText","splitTextToCharacters","extractCharCode","str","codePointAt","charCodeAt","_BitmapFont","ownsTextures","pageTextures","_ownsTextures","page2","xOffset","yOffset","xAdvance","distanceFieldRange","distanceFieldType","fontData","autoDetectFormat","available","textStyle","textureHeight","baseOptions","charsList","startCode","endCode","String","fromCharCode","resolveCharacters","fontFamily","positionX","positionY","maxCharHeight","baseTextures","character","textureGlyphWidth","fontStyle","measureText","uninstall","BitmapFont","NUMERIC","ALPHANUMERIC","ASCII","pageMeshDataDefaultPageMeshData","pageMeshDataMSDFPageMeshData","charRenderDataPool","_BitmapText","align","maxWidth","letterSpacing","fontName","styleDefaults","_activePagesMeshData","_textWidth","_textHeight","_align","_font","_fontName","_fontSize","_maxWidth","_maxLineHeight","_letterSpacing","_autoResolution","_textureCache","lineWidths","lineSpaces","charsInput","_text","pageMeshDataPool","prevCharCode","lastLineWidth","maxLineWidth","lastBreakPos","lastBreakWidth","spacesRemoved","maxLineHeight","spaceCount","charCode","charData","charRenderData","prevSpaces","lastChar","lineAlignOffsets","alignOffset","lenChars","pagesMeshData","newPagesMeshData","activePagesMeshData","baseTextureUid","pageMeshData","meshBlendMode","uFWidth","mesh","vertexCount","uvsCount","total2","xPos","yPos","pageMesh","textureFrame","anchorOffsetX","anchorOffsetY","textureBuffer","validate","worldScale","fontScale","textWidth","textHeight","BitmapText","validExtensions","loadBitmapFont","pages","textureUrls","pageFile","imagePath","loadedTextures","install","bitmapFont","TEXT_GRADIENT","TEXT_GRADIENT2","contextSettings","willReadFrequently","_TextMetrics","experimentalLetterSpacingSupported","_experimentalLetterSpacingSupported","proto","wordWrap","_canvas","measureFont","ascent","_measureText","leading","useExperimentalLetterSpacing","experimentalLetterSpacing","textLetterSpacing","graphemeSegmenter","whiteSpace","collapseSpaces","collapseNewlines","canPrependSpaces","wordWrapWidth","tokens","tokenize","isNewline","addLine","currIsBreakingSpace","isBreakingSpace","lastIsBreakingSpace","tokenWidth","getFromCache","canBreakWords","breakWords","characters","wordWrapSplit","nextChar","canBreakChars","characterWidth","isLastToken","newLine","trimRight","_newlines","_nextChar","_breakingSpaces","_token","_char","_index","_breakWords","_fonts","_context","metricsString","METRICS_STRING","BASELINE_SYMBOL","baseline","HEIGHT_MULTIPLIER","BASELINE_MULTIPLIER","imagedata","getImageData","pixels","idx","__canvas","__context","TextMetrics","Intl","Segmenter","segmenter","segment","genericFontFamilies","_TextStyle","styleID","deepCopyProperties","clonedProperties","defaultStyle","_dropShadow","_dropShadowAlpha","_dropShadowAngle","_dropShadowBlur","_dropShadowColor","outputColor","getColor","_dropShadowDistance","_fill","_fillGradientType","_fillGradientStops","array1","array2","areArraysEqual","_fontFamily","_fontStyle","fontVariant","_fontVariant","fontWeight","_fontWeight","_lineHeight","_leading","_lineJoin","_miterLimit","_padding","_stroke","_strokeThickness","_textBaseline","_trim","_whiteSpace","_wordWrap","_wordWrapWidth","fontSizeString","fontFamilies","TextStyle","propertyObj","prop","LINEAR_VERTICAL","defaultDestroyOptions","_Text","ownCanvas","_ownCanvas","defaultAutoResolution","_style","_styleListener","localStyleID","respectDirty","measured","linePositionX","linePositionY","clearRect","passesCount","isShadowPass","dsOffsetText","dsOffsetShadow","_generateFillStyle","linePositionYShift","drawLetterSpacing","isStroke","currentPosition","stringArray","previousWidth","currentWidth","currentChar","textStr","trimmed","putImageData","lastLineBottom","thisLineGradientStart","thisLineBottom","nextLineTop","thisLineGradientEnd","toFixed","Text","UPDATE_PRIORITY","UPDATE_PRIORITY2","TickerListener","previous","redirect","connect","hard","_Ticker","autoStart","lastTime","speed","started","_requestId","_maxElapsedMS","_minElapsedMS","_protected","_lastFrame","_head","deltaMS","targetFPMS","_tick","_requestIfNeeded","performance","now","_cancelIfNeeded","_startIfPossible","NORMAL","_addListener","addOnce","currentTime","head","FPS","minFPS","fps","maxFPS","minFPMS","_shared","_system","Ticker","TARGET_FPMS","TickerPlugin","sharedTicker","ticker","_ticker","LOW","oldTicker","assertPath","path2","JSON","stringify","removeUrlParams","toPosix","RegExp","isUrl","isDataUrl","hasProtocol","getProtocol","protocol","isFile","isHttp","isWindows","toAbsolute","customBaseUrl","customRootUrl","baseUrl","rootUrl","rootname","isAbsolute","trailingSeparator","endsWith","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","normalizeStringPosix","segments","joined","arg","prevArg","extname","dirname","hasRoot","matchedSlash","origpath","basename","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","ret","dir","sep","delimiter","warnings","version","message","ignoreDepth","stack","skipHello","sayHello","supported","contextOptions","failIfMajorPerformanceCaveat","success","hex2rgb","hex","hex2string","string2hex","rgb2hex","rgb","npm","mapPremultipliedBlendModes","correctBlendMode","premultiplyRgba","premultiplyTint","premultiplyTintToRgba","DATA_URI","createIndicesForQuads","outBuffer","totalIndices","startIdx","removeCount","nextUid","_BoundingBox","BoundingBox","destroyTextureCache","clearTextureCache","CanvasRenderTarget","_checkDestroyed","val","checkRow","checkColumn","getCanvasBoundingBox","trimCanvas","boundingBox","decomposeDataUri","dataUri","dataUriMatch","mediaType","subType","charset","encoding","tempAnchor","url$1","parsedUrl","samePort","port","hostname","CacheData","textureCacheId","originalRender","originalRenderCanvas","originalCalculateBounds","originalGetLocalBounds","originalUpdateTransform","originalDestroy","originalMask","originalFilterArea","originalContainsPoint","cacheAsBitmapResolution","_cacheAsBitmapResolution","cacheAsBitmap","cacheAsBitmapMultisample","_cacheAsBitmapMultisample","_cacheAsBitmap","_cacheData","renderCanvas","_renderCached","_renderCachedCanvas","_cacheAsBitmapDestroy","_destroyCachedDisplayObject","_initCachedDisplayObject","cacheAlpha","cachedRenderTexture","cachedSourceFrame","cachedDestinationFrame","cachedProjectionTransform","_calculateCachedBounds","_getCachedLocalBounds","cachedSprite","_initCachedDisplayObjectCanvas","_renderCanvas","cachedRenderTarget","canvasContext","activeContext","_projTransform","deep","getChildByName","AlphaFilter","uAlpha","GAUSSIAN_VALUES","BlurFilterPass","horizontal","strength","quality","kernelSize","vertSrc","halfLength","vertSource","blurLoop","blur","generateBlurVertSource","fragSrc","kernel","fragSource","generateBlurFragSource","_quality","passes","renderTarget","BlurFilter","_repeatEdgePixels","blurXFilter","blurYFilter","repeatEdgePixels","xStrength","yStrength","updatePadding","blurX","blurY","ColorMatrixFilter","_loadMatrix","newMatrix","_multiply","_colorMatrix","greyscale","blackAndWhite","cosR","sinR","sqrW","contrast","negative","sepia","technicolor","polaroid","toBGR","kodachrome","browni","vintage","colorTone","desaturation","toned","lightColor","darkColor","lR","lG","lB","dR","dG","dB","night","intensity","predator","lsd","DisplacementFilter","mapSampler","filterMatrix","lenX","lenY","FXAAFilter","NoiseFilter","noise","seed","random","uNoise","uSeed","FilterClass","EventsTicker","interactionFrequency","_didMove","tickerAdded","_pauseUpdate","removeTickerListener","pauseUpdate","addTickerListener","domElement","tickerUpdate","pointerMoved","rootPointerEvent","supportsTouchEvents","pointerType","dispatchEvent","PointerEvent","clientX","clientY","FederatedEvent","manager","bubbles","cancelBubble","cancelable","composed","defaultPrevented","eventPhase","NONE","propagationStopped","propagationImmediatelyStopped","layer","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","layerX","layerY","pageX","pageY","composedPath","propagationPath","initEvent","_type","_bubbles","_cancelable","initUIEvent","_typeArg","_bubblesArg","_cancelableArg","_viewArg","_detailArg","nativeEvent","Event","stopImmediatePropagation","stopPropagation","FederatedMouseEvent","client","movement","global","movementX","movementY","globalX","globalY","screenX","screenY","getLocalPosition","globalPos","getModifierState","initMouseEvent","_canBubbleArg","_screenXArg","_screenYArg","_clientXArg","_clientYArg","_ctrlKeyArg","_altKeyArg","_shiftKeyArg","_metaKeyArg","_buttonArg","_relatedTargetArg","FederatedPointerEvent","isPrimary","getCoalescedEvents","getPredictedEvents","FederatedWheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","DOM_DELTA_PAGE","tempHitLocation","tempLocalMapping","EventBoundary","rootTarget","moveOnAll","enableGlobalMoveEvents","mappingState","trackingData","eventPool","_allInteractiveElements","_hitElements","_isPointerMoveEvent","hitPruneFn","hitTestFn","mapPointerDown","mapPointerMove","mapPointerOut","mapPointerOver","mapPointerUp","mapPointerUpOutside","mapWheel","mappingTable","addEventMapping","propagate","mapEvent","mappers","hitTest","invertedPath","currentTarget","notifyTarget","targets","hitTestMoveRecursive","testFn","pruneFn","ignore","shouldReturn","_interactivePrune","nestedHit","_isInteractive","isInteractive","isInteractiveMode","isInteractiveTarget","hitTestRecursive","handlerKey","notifyListeners","createPointerEvent","isRightButton","button","pointerId","pressTargetsByButton","freeEvent","isMouse","outTarget","findMountedTarget","overTargets","outType","outEvent","leaveEvent","overType","overEvent","clonePointerEvent","overTargetAncestor","enterEvent","allMethods","allowGlobalPointerEvents","cursor","pressTarget","clickTarget","clickEvent","clicksByButton","clickCount","timeStamp","clickHistory","detail","wheelEvent","createWheelEvent","allocateEvent","copyPointerData","copyMouseData","copyData","originalEvent","copyWheelData","to","deltaMode","deltaX","deltaY","deltaZ","pressure","tangentialPressure","tiltX","tiltY","twist","altKey","buttons","ctrlKey","metaKey","shiftKey","isTrusted","srcElement","which","overTarget","TOUCH_TO_POINTER","touchstart","touchend","touchendoutside","touchmove","touchcancel","_EventSystem","supportsPointerEvents","rootBoundary","autoPreventDefault","eventsAdded","rootWheelEvent","cursorStyles","pointer","features","defaultEventFeatures","onPointerDown","onPointerMove","onPointerUp","onPointerOverOut","onWheel","defaultEventMode","_defaultEventMode","setTargetElement","eventFeatures","globalMove","setCursor","applyStyles","currentCursor","click","normalizeToPointerData","isNormalized","nativeEvent2","federatedEvent","bootstrapEvent","move","normalizedEvents","outside","wheel","normalizeWheelEvent","removeEvents","addEvents","msPointerEnabled","msContentZooming","msTouchAction","touchAction","passive","capture","mapPositionToPoint","parentElement","getBoundingClientRect","resolutionMultiplier","TouchEvent","li","changedTouches","touches","radiusX","radiusY","identifier","force","MouseEvent","tempEvent","transferMouseData","relatedTarget","EventSystem","convertEventModeToInteractiveMode","FederatedDisplayObject","onclick","onmousedown","onmouseenter","onmouseleave","onmousemove","onglobalmousemove","onmouseout","onmouseover","onmouseup","onmouseupoutside","onpointercancel","onpointerdown","onpointerenter","onpointerleave","onpointermove","onglobalpointermove","onpointerout","onpointerover","onpointertap","onpointerup","onpointerupoutside","onrightclick","onrightdown","onrightup","onrightupoutside","ontap","ontouchcancel","ontouchend","ontouchendoutside","ontouchmove","onglobaltouchmove","ontouchstart","onwheel","_internalInteractive","interactive","_internalEventMode","handleEvent","accessible","accessibleTitle","accessibleHint","tabIndex","_accessibleActive","_accessibleDiv","accessibleType","accessiblePointerEvents","accessibleChildren","renderId","AccessibilityManager","debug","_isMobileAccessibility","pool","androidUpdateCount","androidUpdateFrequency","_hookDiv","createTouchHook","div","_onKeyDown","_onMouseMove","isActive","isMobileAccessibility","hookDiv","title","activate","destroyTouchHook","body","deactivate","updateAccessibleObjects","viewWidth","viewHeight","capHitArea","updateDebugHTML","innerHTML","borderStyle","_onClick","_onFocus","_onFocusOut","pointerEvents","_dispatchEvent","boundry","type2","keyCode","INTERNAL_FORMATS","INTERNAL_FORMATS2","INTERNAL_FORMAT_TO_BYTES_PER_PIXEL","storedGl","getCompressedTextureExtensions","detectCompressedTextures","textureFormats","extensionName","BlobResource","origin","loaded","onBlobLoaded","_data","arrayBuffer","CompressedTextureResource","levels","_formatToExtension","levelBuffers","_levelBuffers","_createLevelBuffers","levelID","levelWidth","levelHeight","levelBuffer","compressedTexImage2D","blockWidth","blockHeight","imageWidth","imageHeight","byteOffset","alignedLevelWidth","alignedLevelHeight","levelSize","DDS_HEADER_SIZE","DDS_FIELDS","DDS_PF_FIELDS","DDS_DX10_FIELDS","FOURCC_TO_FORMAT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","DXGI_TO_FORMAT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","FILE_IDENTIFIER","KTX_FIELDS","TYPES_TO_BYTES_PER_COMPONENT","FORMATS_TO_COMPONENTS","TYPES_TO_BYTES_PER_PIXEL","parseKTX","loadKeyValueData","dataView","DataView","getUint8","littleEndian","getUint32","glFormat","glInternalFormat","pixelWidth","pixelHeight","pixelDepth","numberOfArrayElements","numberOfFaces","numberOfMipmapLevels","bytesOfKeyValueData","alignedWidth","alignedHeight","imageBuffers","imagePixelByteSize","imagePixels","kvData","bytesIntoKeyValueData","keyAndValueByteSize","keyAndValueByteOffset","valuePadding","keyNulByte","TextDecoder","decode","parseKvData","mipByteSize","alignedMipWidth","alignedMipHeight","imageOffset","mipmapLevel","imageSize","elementOffset","arrayElement","mips","uncompressed","convertToInt","convertFormatToInteger","compressed","loadDDS","header","mipmapCount","pixelFormat","formatFlags","fourCC","internalFormat2","texData","DDS_MAGIC_SIZE","dx10Offset","dx10Header","dxgiFormat","resourceDimension","miscFlag","arraySize","dataOffset","pixelSize","parseDDS","loadKTX","ktxKeyValueData","resolveCompressedTextureUrl","some","TEMP_RECT","_Extract","image","base64","toBlob","reader","FileReader","readAsDataURL","toDataURL","convertToBlob","flipY","_rawPixels","_flipY","_unpremultiplyAlpha","canvasBuffer","imageData","ImageData","generated","readPixels","subarray","copyWithin","Extract","_Spritesheet","resolutionFilename","linkedSheets","animations","_updateResolution","_frames","_frameKeys","_batchIndex","_callback","meta","BATCH_SIZE","_processFrames","_processAnimations","_parseComplete","_nextBatch","initialFrameIndex","frameIndex","maxFrames","sourceSize","rotated","spriteSourceSize","animName","frameName","callback","Spritesheet","validImages","ignoreMultiPack","out2","related_multi_packs","spritesheetAsset","spritesheet","multiPacks","itemUrl","sp","_HTMLTextStyle","_overrides","_stylesheet","fontsDirty","originalStyle","cleanFonts","refs","fontFace","availableFonts","originalUrl","loadFont","dataSrc","ready","addOverride","toAdd","removeOverride","toRemove","toCSS","dropShadowToCSS","toGlobalCSS","stylesheet","padStart","onBeforeDraw","prevFontsDirty","isSafari","HTMLTextStyle","_HTMLText","_loading","ownsStyle","nssvg","nsxhtml","svgRoot","createElementNS","foreignObject","styleElement","overflow","defaultMaxWidth","maxHeight","defaultMaxHeight","_domElement","_styleElement","_svgRoot","_foreignObject","_image","_loadImage","overrides","textContent","contentBounds","contentWidth","contentHeight","loadImage","svgURL","XMLSerializer","serializeToString","_onStyleChange","sanitiseText","HTMLText"],"mappings":"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,EACA,EACA,EACAA,EACAA,EACAD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFqH,KAAKw1G,YAAYx9D,EAAQ7tB,GAE3BtL,aACE7e,KAAK4e,UAAU,GAEjBs3F,SAAS/rF,GAuBPnqB,KAAKw1G,YAtBU,EACZ,EACD,EACA,EACA,EACA,EACA,GACC,EACD,EACA,EACA,EACA,EACA,GACC,EACD,EACA,EACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BgsF,MAAMhsF,GAuBJnqB,KAAKw1G,YAtBU,CACb,KACA,SACA,UACA,EACA,EACA,KACA,SACA,UACA,EACA,EACA,KACA,SACA,UACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BisF,YAAYjsF,GAuBVnqB,KAAKw1G,YAtBU,CACb,oBACC,mBACA,mBACD,EACA,oBACC,kBACD,oBACC,mBACD,GACC,mBACA,kBACA,kBACD,kBACA,EACA,mBACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BksF,SAASlsF,GAuBPnqB,KAAKw1G,YAtBU,CACb,OACC,MACA,KACD,EACA,GACC,KACD,OACC,KACD,EACA,GACC,MACA,KACD,MACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BmsF,MAAMnsF,GAuBJnqB,KAAKw1G,YAtBU,CACb,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BosF,WAAWpsF,GAuBTnqB,KAAKw1G,YAtBU,CACb,oBACC,mBACA,mBACD,EACA,mBACC,mBACD,oBACC,mBACD,EACA,oBACC,oBACA,kBACD,mBACA,EACA,kBACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BqsF,OAAOrsF,GAuBLnqB,KAAKw1G,YAtBU,CACb,kBACA,oBACC,kBACD,EACA,mBACC,oBACD,kBACA,mBACA,GACC,kBACD,oBACC,mBACD,mBACA,GACC,kBACD,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BssF,QAAQtsF,GAuBNnqB,KAAKw1G,YAtBU,CACb,kBACA,mBACC,mBACD,EACA,kBACA,mBACA,kBACA,mBACA,EACA,kBACA,mBACC,kBACD,kBACA,EACA,kBACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3BusF,UAAUC,EAAcC,EAAOC,EAAYC,EAAW3sF,GACpDwsF,EAAeA,GAAgB,GAC/BC,EAAQA,GAAS,IACjBC,EAAaA,GAAc,SAC3BC,EAAYA,GAAa,QACzB,MAAM1sF,EAAO,aACN2sF,EAAIC,EAAIC,GAAM7sF,EAAKlB,SAAS2tF,GAAY9rF,WACxCmsF,EAAIC,EAAIC,GAAMhtF,EAAKlB,SAAS4tF,GAAW/rF,UACxCitB,EAAS,CACb,GACA,IACA,IACA,EACA,EACA++D,EACAC,EACAC,EACAN,EACA,EACAO,EACAC,EACAC,EACAR,EACA,EACAG,EAAKG,EACLF,EAAKG,EACLF,EAAKG,EACL,EACA,GAEFp3G,KAAKw1G,YAAYx9D,EAAQ7tB,GAE3BktF,MAAMC,EAAWntF,GAEf,MAAM6tB,EAAS,EACA,GAFfs/D,EAAYA,GAAa,KAGtBA,EACD,EACA,EACA,GACCA,EACD,EACAA,EACA,EACA,EACA,EACAA,EACY,EAAZA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFt3G,KAAKw1G,YAAYx9D,EAAQ7tB,GAE3BotF,SAASlzB,EAAQl6D,GACf,MAAM6tB,EAAS,CACb,mBAAqBqsC,GACpB,kBAAoBA,GACpB,mBAAqBA,EACtB,EAAIA,EACJ,mBAAsBA,GACrB,mBAAqBA,EACtB,kBAAoBA,GACnB,kBAAoBA,EACrB,EAAIA,GACH,kBAAoBA,GACpB,mBAAqBA,GACrB,mBAAqBA,EACtB,kBAAoBA,EACpB,EAAIA,EACJ,kBAAqBA,EACrB,EACA,EACA,EACA,EACA,GAEFrkF,KAAKw1G,YAAYx9D,EAAQ7tB,GAE3BqtF,IAAIrtF,GAuBFnqB,KAAKw1G,YAtBU,CACb,GACC,GACD,GACA,EACA,GACC,GACD,GACC,GACD,EACA,GACC,IACA,GACD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEuBrrF,GAE3Bxd,QAuBE3M,KAAKw1G,YAtBU,CACb,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEuB,GAEvBx9D,aACF,OAAOh4C,KAAKg/B,SAASrhC,EAEnBq6C,WAAOvsC,GACTzL,KAAKg/B,SAASrhC,EAAI8N,EAEhB0T,YACF,OAAOnf,KAAKg/B,SAASy0E,OAEnBt0F,UAAM1T,GACRzL,KAAKg/B,SAASy0E,OAAShoG,GAG3B8pG,EAAkBt0G,UAAU6d,UAAYy2F,EAAkBt0G,UAAU20G,UEpmBpE,MAAM6B,UAA2B,KAC/BzwG,YAAYs+B,EAAQsS,GAClB,MAAMiJ,EAAa,IAAI,KACvBvb,EAAOyb,YAAa,EACpBzuB,MCRS,urBCAE,8fFQa,CACtBolF,WAAYpyE,EAAOtB,SACnB2zE,aAAc92D,EACdjJ,MAAO,CAAEj/C,EAAG,EAAGC,EAAG,GAClBytE,SAAU,IAAIt9C,aAAa,CAAC,EAAG,EAAG,EAAG,MAEvC/oB,KAAK4gD,WAAatb,EAClBtlC,KAAK6gD,WAAaA,EACJ,OAAVjJ,QAA4B,IAAVA,IACpBA,EAAQ,IAEV53C,KAAK43C,MAAQ,IAAI,KAAMA,EAAOA,GAEhCh0C,MAAMkkC,EAAe57B,EAAO67B,EAAQC,GAClChoC,KAAKg/B,SAAS24E,aAAe7vE,EAAcwP,sBAAsBt3C,KAAK6gD,WAAY7gD,KAAK4gD,YACvF5gD,KAAKg/B,SAAS4Y,MAAMj/C,EAAIqH,KAAK43C,MAAMj/C,EACnCqH,KAAKg/B,SAAS4Y,MAAMh/C,EAAIoH,KAAK43C,MAAMh/C,EACnC,MAAMyjF,EAAKr8E,KAAK4gD,WAAWnJ,eACrBmgE,EAAO39G,KAAKyxE,KAAK2Q,EAAGjgF,EAAIigF,EAAGjgF,EAAIigF,EAAGhgF,EAAIggF,EAAGhgF,GACzCw7G,EAAO59G,KAAKyxE,KAAK2Q,EAAG//E,EAAI+/E,EAAG//E,EAAI+/E,EAAGv7E,EAAIu7E,EAAGv7E,GAClC,IAAT82G,GAAuB,IAATC,IAChB73G,KAAKg/B,SAASqnC,SAAS,GAAKgW,EAAGjgF,EAAIw7G,EACnC53G,KAAKg/B,SAASqnC,SAAS,GAAKgW,EAAGhgF,EAAIu7G,EACnC53G,KAAKg/B,SAASqnC,SAAS,GAAKgW,EAAG//E,EAAIu7G,EACnC73G,KAAKg/B,SAASqnC,SAAS,GAAKgW,EAAGv7E,EAAI+2G,GAErC/vE,EAAcI,YAAYloC,KAAMkM,EAAO67B,EAAQC,GAE7C57B,UACF,OAAOpM,KAAKg/B,SAAS04E,WAEnBtrG,QAAIX,GACNzL,KAAKg/B,SAAS04E,WAAajsG,GGpC/B,MAAMqsG,UAAmB,KACvB9wG,cACEsrB,MCNS,8nCCAE,wzICGf,MAAMylF,UAAoB,KACxB/wG,YAAYgxG,EAAQ,GAAKC,EAAOh+G,KAAKi+G,UACnC5lF,MAAM,KCLK,quBDK0B,CACnC6lF,OAAQ,EACRC,MAAO,IAETp4G,KAAKg4G,MAAQA,EACbh4G,KAAKi4G,KAAOA,EAEVD,YACF,OAAOh4G,KAAKg/B,SAASm5E,OAEnBH,UAAMvsG,GACRzL,KAAKg/B,SAASm5E,OAAS1sG,EAErBwsG,WACF,OAAOj4G,KAAKg/B,SAASo5E,MAEnBH,SAAKxsG,GACPzL,KAAKg/B,SAASo5E,MAAQ3sG,GEd1B,MAAMkpC,EAAU,CACd6+D,YAAW,EACXqB,WAAU,EACVlB,eAAc,EACd4B,kBAAiB,EACjBkC,mBAAkB,EAClBK,WAAU,EACVC,YAAW,GAEb/2G,OAAOkJ,QAAQyqC,GAASptC,SAAQ,EAAE6C,EAAKiuG,MACrCr3G,OAAOqH,eAAessC,EAASvqC,EAAK,CAClCtB,IAAG,KACD,iBAAkB,QAAS,WAAWsB,kBAAoBA,KACnDiuG,QC+Cb,MAAMC,EAAe,IAlErB,MACEtxG,cACEhH,KAAKu4G,qBAAuB,GAC5Bv4G,KAAK4gE,WAAa,EAClB5gE,KAAKw4G,UAAW,EAChBx4G,KAAKy4G,aAAc,EACnBz4G,KAAK04G,cAAe,EAEtBjxG,KAAKnF,GACHtC,KAAK24G,uBACL34G,KAAKsC,OAASA,EACdtC,KAAKu4G,qBAAuB,GAC5Bv4G,KAAK4gE,WAAa,EAClB5gE,KAAKw4G,UAAW,EAChBx4G,KAAKy4G,aAAc,EACnBz4G,KAAK04G,cAAe,EAElBE,kBACF,OAAO54G,KAAK04G,aAEVE,gBAAYv3C,GACdrhE,KAAK04G,aAAer3C,EAEtBw3C,qBACM74G,KAAKy4G,aAAgBz4G,KAAK84G,aAG9B,gBAAkB94G,KAAK+4G,aAAc/4G,KAAM,kBAC3CA,KAAKy4G,aAAc,GAErBE,uBACO34G,KAAKy4G,cAGV,mBAAqBz4G,KAAK+4G,aAAc/4G,MACxCA,KAAKy4G,aAAc,GAErBO,eACEh5G,KAAKw4G,UAAW,EAElB3mF,SACE,IAAK7xB,KAAK84G,YAAc94G,KAAK04G,aAC3B,OAEF,GAAI14G,KAAKw4G,SAEP,YADAx4G,KAAKw4G,UAAW,GAGlB,MAAMS,EAAmBj5G,KAAKsC,OAAyB,iBACnDtC,KAAKsC,OAAO42G,qBAAwD,UAAjCD,EAAiBE,aAGxD3wG,WAAWk3D,SAAS05C,cAAc,IAAIC,aAAa,cAAe,CAChEC,QAASL,EAAiBK,QAC1BC,QAASN,EAAiBM,WAG9BR,aAAatoB,GACXzwF,KAAK4gE,YAAc6vB,EACfzwF,KAAK4gE,WAAa5gE,KAAKu4G,uBAG3Bv4G,KAAK4gE,WAAa,EAClB5gE,KAAK6xB,YC/DT,MAAM2nF,EACJxyG,YAAYyyG,GACVz5G,KAAK05G,SAAU,EACf15G,KAAK25G,cAAe,EACpB35G,KAAK45G,YAAa,EAClB55G,KAAK65G,UAAW,EAChB75G,KAAK85G,kBAAmB,EACxB95G,KAAK+5G,WAAaP,EAAev4G,UAAU+4G,KAC3Ch6G,KAAKi6G,oBAAqB,EAC1Bj6G,KAAKk6G,+BAAgC,EACrCl6G,KAAKm6G,MAAQ,IAAI,KACjBn6G,KAAK6yF,KAAO,IAAI,KAChB7yF,KAAKg6G,KAAO,EACZh6G,KAAKo6G,gBAAkB,EACvBp6G,KAAKq6G,UAAY,EACjBr6G,KAAKs6G,eAAiB,EACtBt6G,KAAKy5G,QAAUA,EAEbc,aACF,OAAOv6G,KAAKm6G,MAAMxhH,EAEhB6hH,aACF,OAAOx6G,KAAKm6G,MAAMvhH,EAEhB6hH,YACF,OAAOz6G,KAAK6yF,KAAKl6F,EAEf+hH,YACF,OAAO16G,KAAK6yF,KAAKj6F,EAEfR,WACF,OAAO4H,KAET26G,eAIE,OAHI36G,KAAKy5G,SAAaz5G,KAAKs7E,MAAQt7E,KAAKs7E,KAAKt7E,KAAKs7E,KAAKviF,OAAS,KAAOiH,KAAK8N,SAC1E9N,KAAKs7E,KAAOt7E,KAAK8N,OAAS9N,KAAKy5G,QAAQmB,gBAAgB56G,KAAK8N,QAAU,IAEjE9N,KAAKs7E,KAEdu/B,UAAUC,EAAOC,EAAUC,GACzB,MAAM,IAAI7rG,MAAM,uFAElB8rG,YAAYC,EAAUC,EAAaC,EAAgBC,EAAUC,GAC3D,MAAM,IAAInsG,MAAM,yFAElBy8B,iBACM5rC,KAAKu7G,uBAAuBC,OAASx7G,KAAKu7G,YAAY3B,YACxD55G,KAAKu7G,YAAY3vE,iBAEnB5rC,KAAK85G,kBAAmB,EAE1B2B,2BACEz7G,KAAKk6G,+BAAgC,EAEvCwB,kBACE17G,KAAKi6G,oBAAqB,GCtD9B,MAAM0B,UAA4BnC,EAChCxyG,cACEsrB,SAAS7uB,WACTzD,KAAK47G,OAAS,IAAI,KAClB57G,KAAK67G,SAAW,IAAI,KACpB77G,KAAK44B,OAAS,IAAI,KAClB54B,KAAK87G,OAAS,IAAI,KAClB97G,KAAK4H,OAAS,IAAI,KAEhB0xG,cACF,OAAOt5G,KAAK47G,OAAOjjH,EAEjB4gH,cACF,OAAOv5G,KAAK47G,OAAOhjH,EAEjBD,QACF,OAAOqH,KAAKs5G,QAEV1gH,QACF,OAAOoH,KAAKu5G,QAEVwC,gBACF,OAAO/7G,KAAK67G,SAASljH,EAEnBqjH,gBACF,OAAOh8G,KAAK67G,SAASjjH,EAEnB8/E,cACF,OAAO14E,KAAK44B,OAAOjgC,EAEjBggF,cACF,OAAO34E,KAAK44B,OAAOhgC,EAEjBqjH,cACF,OAAOj8G,KAAK87G,OAAOnjH,EAEjBujH,cACF,OAAOl8G,KAAK87G,OAAOljH,EAEjBujH,cACF,OAAOn8G,KAAK4H,OAAOjP,EAEjByjH,cACF,OAAOp8G,KAAK4H,OAAOhP,EAErByjH,iBAAiB51D,EAAe4b,EAAOi6C,GACrC,OAAO71D,EAAchP,eAAequB,aAAaw2C,GAAat8G,KAAK87G,OAAQz5C,GAE7Ek6C,iBAAiBnyG,GACf,MAAO,qBAAsBpK,KAAKu7G,aAAev7G,KAAKu7G,YAAYgB,iBAAiBnyG,GAErFoyG,eAAetB,EAAUuB,EAAerB,EAAgBC,EAAUC,EAAYoB,EAAaC,EAAaC,EAAaC,EAAaC,EAAaC,EAAYC,EAAcC,EAAaC,EAAYC,GAChM,MAAM,IAAIhuG,MAAM,4BCrDpB,MAAMiuG,UAA8BzB,EAClC30G,cACEsrB,SAAS7uB,WACTzD,KAAKmJ,MAAQ,EACbnJ,KAAKoJ,OAAS,EACdpJ,KAAKq9G,WAAY,EAEnBC,qBACE,MAAkB,gBAAdt9G,KAAKqK,MAAwC,cAAdrK,KAAKqK,MAAsC,cAAdrK,KAAKqK,KAC5D,CAACrK,MAEH,GAETu9G,qBACE,MAAM,IAAIpuG,MAAM,yCCdpB,MAAMquG,UAA4B7B,EAChC30G,cACEsrB,SAAS7uB,WACTzD,KAAKy9G,gBAAkB,EACvBz9G,KAAK09G,eAAiB,EACtB19G,KAAK29G,eAAiB,GAG1BH,EAAoBC,gBAAkB,EACtCD,EAAoBE,eAAiB,EACrCF,EAAoBG,eAAiB,ECNrC,MACMC,EAAkB,IAAI,KACtBC,EAAmB,IAAI,KAC7B,MAAMC,EACJ92G,YAAY+2G,GACV/9G,KAAKixB,SAAW,IAAI,kBACpBjxB,KAAKg+G,WAAY,EACjBh+G,KAAKi+G,wBAAyB,EAC9Bj+G,KAAKk+G,aAAe,CAClBC,aAAc,IAEhBn+G,KAAKo+G,UAA4B,IAAI3xG,IACrCzM,KAAKq+G,wBAA0B,GAC/Br+G,KAAKs+G,aAAe,GACpBt+G,KAAKu+G,qBAAsB,EAC3Bv+G,KAAK+9G,WAAaA,EAClB/9G,KAAKw+G,WAAax+G,KAAKw+G,WAAW7sF,KAAK3xB,MACvCA,KAAKy+G,UAAYz+G,KAAKy+G,UAAU9sF,KAAK3xB,MACrCA,KAAK0+G,eAAiB1+G,KAAK0+G,eAAe/sF,KAAK3xB,MAC/CA,KAAK2+G,eAAiB3+G,KAAK2+G,eAAehtF,KAAK3xB,MAC/CA,KAAK4+G,cAAgB5+G,KAAK4+G,cAAcjtF,KAAK3xB,MAC7CA,KAAK6+G,eAAiB7+G,KAAK6+G,eAAeltF,KAAK3xB,MAC/CA,KAAK8+G,aAAe9+G,KAAK8+G,aAAantF,KAAK3xB,MAC3CA,KAAK++G,oBAAsB/+G,KAAK++G,oBAAoBptF,KAAK3xB,MACzDA,KAAKg/G,SAAWh/G,KAAKg/G,SAASrtF,KAAK3xB,MACnCA,KAAKi/G,aAAe,GACpBj/G,KAAKk/G,gBAAgB,cAAel/G,KAAK0+G,gBACzC1+G,KAAKk/G,gBAAgB,cAAel/G,KAAK2+G,gBACzC3+G,KAAKk/G,gBAAgB,aAAcl/G,KAAK4+G,eACxC5+G,KAAKk/G,gBAAgB,eAAgBl/G,KAAK4+G,eAC1C5+G,KAAKk/G,gBAAgB,cAAel/G,KAAK6+G,gBACzC7+G,KAAKk/G,gBAAgB,YAAal/G,KAAK8+G,cACvC9+G,KAAKk/G,gBAAgB,mBAAoBl/G,KAAK++G,qBAC9C/+G,KAAKk/G,gBAAgB,QAASl/G,KAAKg/G,UAErCE,gBAAgB70G,EAAM/I,GACftB,KAAKi/G,aAAa50G,KACrBrK,KAAKi/G,aAAa50G,GAAQ,IAE5BrK,KAAKi/G,aAAa50G,GAAM1Q,KAAK,CAC3B2H,KACA6O,SAAU,IAEZnQ,KAAKi/G,aAAa50G,GAAMxQ,MAAK,CAACuC,EAAGC,IAAMD,EAAE+T,SAAW9T,EAAE8T,WAExDipG,cAAc79G,EAAG8O,GACf9O,EAAE0+G,oBAAqB,EACvB1+G,EAAE2+G,+BAAgC,EAClCl6G,KAAKm/G,UAAU5jH,EAAG8O,GAClBrK,KAAKixB,SAAS9tB,KAAKkH,GAAQ9O,EAAE8O,KAAM9O,GAErC6jH,SAAS7jH,GACP,IAAKyE,KAAK+9G,WACR,OAEF,MAAMsB,EAAUr/G,KAAKi/G,aAAa1jH,EAAE8O,MACpC,GAAIg1G,EACF,IAAK,IAAI/lH,EAAI,EAAG4G,EAAIm/G,EAAQtmH,OAAQO,EAAI4G,EAAG5G,IACzC+lH,EAAQ/lH,GAAGgI,GAAG/F,QAGhBwP,QAAQ8B,KAAK,kDAAkDtR,EAAE8O,QAGrEi1G,QAAQ3mH,EAAGC,GACT0/G,EAAaM,aAAc,EAC3B,MAEM2G,EAAev/G,KAFLA,KAAKu+G,qBAAuBv+G,KAAKi+G,uBAC5B,uBAAyB,oBAChBj+G,KAAK+9G,WAAY/9G,KAAK+9G,WAAWl3C,UAAW+2C,EAAgBt1G,IAAI3P,EAAGC,GAAIoH,KAAKy+G,UAAWz+G,KAAKw+G,YAC1H,OAAOe,GAAgBA,EAAa,GAEtCJ,UAAU5jH,EAAG8O,GACX,IAAK9O,EAAEuS,OACL,OAEF,MAAM6sG,EAAep/G,EAAEo/G,eACvBp/G,EAAEw+G,WAAax+G,EAAE6+G,gBACjB,IAAK,IAAI9gH,EAAI,EAAG4G,EAAIy6G,EAAa5hH,OAAS,EAAGO,EAAI4G,EAAG5G,IAGlD,GAFAiC,EAAEikH,cAAgB7E,EAAarhH,GAC/B0G,KAAKy/G,aAAalkH,EAAG8O,GACjB9O,EAAE0+G,oBAAsB1+G,EAAE2+G,8BAC5B,OAKJ,GAHA3+G,EAAEw+G,WAAax+G,EAAE8+G,UACjB9+G,EAAEikH,cAAgBjkH,EAAEuS,OACpB9N,KAAKy/G,aAAalkH,EAAG8O,IACjB9O,EAAE0+G,qBAAsB1+G,EAAE2+G,8BAA9B,CAEA3+G,EAAEw+G,WAAax+G,EAAE++G,eACjB,IAAK,IAAIhhH,EAAIqhH,EAAa5hH,OAAS,EAAGO,GAAK,EAAGA,IAG5C,GAFAiC,EAAEikH,cAAgB7E,EAAarhH,GAC/B0G,KAAKy/G,aAAalkH,EAAG8O,GACjB9O,EAAE0+G,oBAAsB1+G,EAAE2+G,8BAC5B,QAGN7qG,IAAI9T,EAAG8O,EAAMq1G,EAAU1/G,KAAKq+G,yBAC1B,GAAuB,IAAnBqB,EAAQ3mH,OACV,OACFwC,EAAEw+G,WAAax+G,EAAE++G,eACjB,MAAMh4G,EAASW,MAAM8I,QAAQ1B,GAAQA,EAAO,CAACA,GAC7C,IAAK,IAAI/Q,EAAIomH,EAAQ3mH,OAAS,EAAGO,GAAK,EAAGA,IACvCgJ,EAAOiF,SAAS5F,IACdpG,EAAEikH,cAAgBE,EAAQpmH,GAC1B0G,KAAKy/G,aAAalkH,EAAGoG,MAI3Bi5G,gBAAgB9sG,GACd,MAAM8sG,EAAkB,CAAC9sG,GACzB,IAAK,IAAIxU,EAAI,EAAGA,EA9GM,MA8GmBwU,IAAW9N,KAAK+9G,WAAYzkH,IAAK,CACxE,IAAKwU,EAAOg5C,OACV,MAAM,IAAI33C,MAAM,uDAElByrG,EAAgBjhH,KAAKmU,EAAOg5C,QAC5Bh5C,EAASA,EAAOg5C,OAGlB,OADA8zD,EAAgB3yG,UACT2yG,EAET+E,qBAAqBH,EAAe34C,EAAWroB,EAAUohE,EAAQC,EAASC,GAAS,GACjF,IAAIC,GAAe,EACnB,GAAI//G,KAAKggH,kBAAkBR,GACzB,OAAO,KAIT,GAHgC,YAA5BA,EAAc34C,WAAyC,YAAdA,IAC3CyxC,EAAaM,aAAc,GAEzB4G,EAAc14C,qBAAuB04C,EAAcxtD,SAAU,CAC/D,MAAMA,EAAWwtD,EAAcxtD,SAC/B,IAAK,IAAI14D,EAAI04D,EAASj5D,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC7C,MAAMsuE,EAAQ5V,EAAS14D,GACjB2mH,EAAYjgH,KAAK2/G,qBAAqB/3C,EAAO5nE,KAAKkgH,eAAer5C,GAAaA,EAAYe,EAAMf,UAAWroB,EAAUohE,EAAQC,EAASC,GAAUD,EAAQL,EAAehhE,IAC7K,GAAIyhE,EAAW,CACb,GAAIA,EAAUlnH,OAAS,IAAMknH,EAAUA,EAAUlnH,OAAS,GAAG+tD,OAC3D,SAEF,MAAMq5D,EAAgBX,EAAcW,iBAChCF,EAAUlnH,OAAS,GAAKonH,KACtBA,GACFngH,KAAKq+G,wBAAwB1kH,KAAK6lH,GACpCS,EAAUtmH,KAAK6lH,IAEgB,IAA7Bx/G,KAAKs+G,aAAavlH,SACpBiH,KAAKs+G,aAAe2B,GACtBF,GAAe,IAIrB,MAAMK,EAAoBpgH,KAAKkgH,eAAer5C,GACxCw5C,EAAsBb,EAAcW,gBAG1C,OAFIE,GAAuBA,GACzBrgH,KAAKq+G,wBAAwB1kH,KAAK6lH,GAChCM,GAAU9/G,KAAKs+G,aAAavlH,OAAS,EAChC,KACLgnH,EACK//G,KAAKs+G,aACV8B,IAAuBP,EAAQL,EAAehhE,IAAaohE,EAAOJ,EAAehhE,GAC5E6hE,EAAsB,CAACb,GAAiB,GAE1C,KAETc,iBAAiBd,EAAe34C,EAAWroB,EAAUohE,EAAQC,GAC3D,GAAI7/G,KAAKggH,kBAAkBR,IAAkBK,EAAQL,EAAehhE,GAClE,OAAO,KAKT,GAHgC,YAA5BghE,EAAc34C,WAAyC,YAAdA,IAC3CyxC,EAAaM,aAAc,GAEzB4G,EAAc14C,qBAAuB04C,EAAcxtD,SAAU,CAC/D,MAAMA,EAAWwtD,EAAcxtD,SAC/B,IAAK,IAAI14D,EAAI04D,EAASj5D,OAAS,EAAGO,GAAK,EAAGA,IAAK,CAC7C,MAAMsuE,EAAQ5V,EAAS14D,GACjB2mH,EAAYjgH,KAAKsgH,iBAAiB14C,EAAO5nE,KAAKkgH,eAAer5C,GAAaA,EAAYe,EAAMf,UAAWroB,EAAUohE,EAAQC,GAC/H,GAAII,EAAW,CACb,GAAIA,EAAUlnH,OAAS,IAAMknH,EAAUA,EAAUlnH,OAAS,GAAG+tD,OAC3D,SAEF,MAAMq5D,EAAgBX,EAAcW,gBAGpC,OAFIF,EAAUlnH,OAAS,GAAKonH,IAC1BF,EAAUtmH,KAAK6lH,GACVS,IAIb,MAAMG,EAAoBpgH,KAAKkgH,eAAer5C,GACxCw5C,EAAsBb,EAAcW,gBAC1C,OAAIC,GAAqBR,EAAOJ,EAAehhE,GACtC6hE,EAAsB,CAACb,GAAiB,GAE1C,KAETU,eAAevmF,GACb,MAAe,WAARA,GAA4B,YAARA,EAE7BqmF,kBAAkBv5D,GAChB,QAAKA,IAAiBA,EAAcse,QAAWte,EAAcwd,SAAYxd,EAAc1F,cAGvD,SAA5B0F,EAAcogB,YAGc,YAA5BpgB,EAAcogB,YAA4BpgB,EAAcqgB,uBAGxDrgB,EAAcse,SAKpBy5C,WAAW/3D,EAAejI,GACxB,GAAIiI,EAAcmgB,UAChBngB,EAAchP,eAAequB,aAAatnB,EAAUq/D,IAC/Cp3D,EAAcmgB,QAAQ/1C,SAASgtF,EAAiBllH,EAAGklH,EAAiBjlH,IACvE,OAAO,EAGX,GAAI6tD,EAAcme,MAAO,CACvB,MAAMxjB,EAAaqF,EAAcme,MAAMrjB,WAAakF,EAAcme,MAAMxjB,WAAaqF,EAAcme,MACnG,GAAIxjB,IAAeA,EAAWy1B,gBAAgBr4B,GAC5C,OAAO,EAGX,OAAO,EAETigE,UAAUh4D,EAAejI,GACvB,MAAgC,YAA5BiI,EAAcogB,cAGdpgB,EAAcmgB,WAGdngB,EAAcowB,eACTpwB,EAAcowB,cAAcr4B,IAIvCihE,aAAalkH,EAAG8O,GAEd,MAAMk2G,EAAa,KADnBl2G,EAAOA,GAAQ9O,EAAE8O,OAEjB9O,EAAEikH,cAAce,KAAchlH,GAC9B,MAAM6O,EAAM7O,EAAEw+G,aAAex+G,EAAE6+G,iBAAmB7+G,EAAEw+G,aAAex+G,EAAE8+G,UAAY,GAAGhwG,WAAgBA,EACpGrK,KAAKwgH,gBAAgBjlH,EAAG6O,GACpB7O,EAAEw+G,aAAex+G,EAAE8+G,WACrBr6G,KAAKwgH,gBAAgBjlH,EAAG8O,GAG5Bq0G,eAAe/+E,GACb,KAAMA,aAAgBy9E,GAEpB,YADAryG,QAAQ8B,KAAK,mEAGf,MAAMtR,EAAIyE,KAAKygH,mBAAmB9gF,GAElC,GADA3/B,KAAKo5G,cAAc79G,EAAG,eACA,UAAlBA,EAAE49G,YACJn5G,KAAKo5G,cAAc79G,EAAG,mBACjB,GAAsB,UAAlBA,EAAE49G,aAA6C,QAAlB59G,EAAE49G,YAAuB,CAC/D,MAAMuH,EAA6B,IAAbnlH,EAAEolH,OACxB3gH,KAAKo5G,cAAc79G,EAAGmlH,EAAgB,YAAc,aAEjC1gH,KAAKm+G,aAAax+E,EAAKihF,WAC/BC,qBAAqBlhF,EAAKghF,QAAUplH,EAAEo/G,eACnD36G,KAAK8gH,UAAUvlH,GAEjBojH,eAAeh/E,GACb,KAAMA,aAAgBy9E,GAEpB,YADAryG,QAAQ8B,KAAK,mEAGf7M,KAAKq+G,wBAAwBtlH,OAAS,EACtCiH,KAAKs+G,aAAavlH,OAAS,EAC3BiH,KAAKu+G,qBAAsB,EAC3B,MAAMhjH,EAAIyE,KAAKygH,mBAAmB9gF,GAClC3/B,KAAKu+G,qBAAsB,EAC3B,MAAMwC,EAA4B,UAAlBxlH,EAAE49G,aAA6C,QAAlB59G,EAAE49G,YACzCgF,EAAen+G,KAAKm+G,aAAax+E,EAAKihF,WACtCI,EAAYhhH,KAAKihH,kBAAkB9C,EAAa+C,aACtD,GAAI/C,EAAa+C,aAAanoH,OAAS,GAAKioH,IAAczlH,EAAEuS,OAAQ,CAClE,MAAMqzG,EAAwB,cAAdxhF,EAAKt1B,KAAuB,WAAa,aACnD+2G,EAAWphH,KAAKygH,mBAAmB9gF,EAAMwhF,EAASH,GAIxD,GAHAhhH,KAAKo5G,cAAcgI,EAAU,cACzBL,GACF/gH,KAAKo5G,cAAcgI,EAAU,aAC1B7lH,EAAEo/G,eAAe3uG,SAASg1G,GAAY,CACzC,MAAMK,EAAarhH,KAAKygH,mBAAmB9gF,EAAM,eAAgBqhF,GAEjE,IADAK,EAAWtH,WAAasH,EAAWhH,UAC5BgH,EAAWvzG,SAAWvS,EAAEo/G,eAAe3uG,SAASq1G,EAAWvzG,SAChEuzG,EAAW7B,cAAgB6B,EAAWvzG,OACtC9N,KAAKy/G,aAAa4B,GACdN,GACF/gH,KAAKy/G,aAAa4B,EAAY,cAChCA,EAAWvzG,OAASuzG,EAAWvzG,OAAOg5C,OAExC9mD,KAAK8gH,UAAUO,GAEjBrhH,KAAK8gH,UAAUM,GAEjB,GAAIJ,IAAczlH,EAAEuS,OAAQ,CAC1B,MAAMwzG,EAAyB,cAAd3hF,EAAKt1B,KAAuB,YAAc,cACrDk3G,EAAYvhH,KAAKwhH,kBAAkBjmH,EAAG+lH,GAC5CthH,KAAKo5G,cAAcmI,EAAW,eAC1BR,GACF/gH,KAAKo5G,cAAcmI,EAAW,aAChC,IAAIE,EAAqBT,GAAWl6D,OACpC,KAAO26D,GAAsBA,IAAuBzhH,KAAK+9G,WAAWj3D,QAC9D26D,IAAuBlmH,EAAEuS,QAE7B2zG,EAAqBA,EAAmB36D,OAG1C,IADyB26D,GAAsBA,IAAuBzhH,KAAK+9G,WAAWj3D,OACjE,CACnB,MAAM46D,EAAa1hH,KAAKwhH,kBAAkBjmH,EAAG,gBAE7C,IADAmmH,EAAW3H,WAAa2H,EAAWrH,UAC5BqH,EAAW5zG,QAAU4zG,EAAW5zG,SAAWkzG,GAAaU,EAAW5zG,SAAW9N,KAAK+9G,WAAWj3D,QACnG46D,EAAWlC,cAAgBkC,EAAW5zG,OACtC9N,KAAKy/G,aAAaiC,GACdX,GACF/gH,KAAKy/G,aAAaiC,EAAY,cAChCA,EAAW5zG,OAAS4zG,EAAW5zG,OAAOg5C,OAExC9mD,KAAK8gH,UAAUY,GAEjB1hH,KAAK8gH,UAAUS,GAEjB,MAAMI,EAAa,GACbC,EAA2B5hH,KAAKi+G,yBAA0B,EAChEj+G,KAAKg+G,UAAY2D,EAAWhoH,KAAK,eAAiBqG,KAAKo5G,cAAc79G,EAAG,eACxEqmH,GAA4BD,EAAWhoH,KAAK,qBACtB,UAAlB4B,EAAE49G,cACJn5G,KAAKg+G,UAAY2D,EAAW/wF,OAAO,EAAG,EAAG,aAAe5wB,KAAKo5G,cAAc79G,EAAG,aAC9EqmH,GAA4BD,EAAWhoH,KAAK,oBAE1ConH,IACF/gH,KAAKg+G,UAAY2D,EAAW/wF,OAAO,EAAG,EAAG,aAAe5wB,KAAKo5G,cAAc79G,EAAG,aAC9EqmH,GAA4BD,EAAWhoH,KAAK,mBAC5CqG,KAAK6hH,OAAStmH,EAAEuS,QAAQ+zG,QAEtBF,EAAW5oH,OAAS,GACtBiH,KAAKqP,IAAI9T,EAAGomH,GAEd3hH,KAAKq+G,wBAAwBtlH,OAAS,EACtCiH,KAAKs+G,aAAavlH,OAAS,EAC3BolH,EAAa+C,YAAc3lH,EAAEo/G,eAC7B36G,KAAK8gH,UAAUvlH,GAEjBsjH,eAAel/E,GACb,KAAMA,aAAgBy9E,GAEpB,YADAryG,QAAQ8B,KAAK,mEAGf,MAAMsxG,EAAen+G,KAAKm+G,aAAax+E,EAAKihF,WACtCrlH,EAAIyE,KAAKygH,mBAAmB9gF,GAC5BohF,EAA4B,UAAlBxlH,EAAE49G,aAA6C,QAAlB59G,EAAE49G,YAC/Cn5G,KAAKo5G,cAAc79G,EAAG,eAClBwlH,GACF/gH,KAAKo5G,cAAc79G,EAAG,aACF,UAAlBA,EAAE49G,cACJn5G,KAAK6hH,OAAStmH,EAAEuS,QAAQ+zG,QAC1B,MAAMH,EAAa1hH,KAAKwhH,kBAAkBjmH,EAAG,gBAE7C,IADAmmH,EAAW3H,WAAa2H,EAAWrH,UAC5BqH,EAAW5zG,QAAU4zG,EAAW5zG,SAAW9N,KAAK+9G,WAAWj3D,QAChE46D,EAAWlC,cAAgBkC,EAAW5zG,OACtC9N,KAAKy/G,aAAaiC,GACdX,GACF/gH,KAAKy/G,aAAaiC,EAAY,cAChCA,EAAW5zG,OAAS4zG,EAAW5zG,OAAOg5C,OAExCq3D,EAAa+C,YAAc3lH,EAAEo/G,eAC7B36G,KAAK8gH,UAAUvlH,GACfyE,KAAK8gH,UAAUY,GAEjB9C,cAAcj/E,GACZ,KAAMA,aAAgBy9E,GAEpB,YADAryG,QAAQ8B,KAAK,mEAGf,MAAMsxG,EAAen+G,KAAKm+G,aAAax+E,EAAKihF,WAC5C,GAAIzC,EAAa+C,YAAa,CAC5B,MAAMH,EAA+B,UAArBphF,EAAKw5E,aAAgD,QAArBx5E,EAAKw5E,YAC/C6H,EAAYhhH,KAAKihH,kBAAkB9C,EAAa+C,aAChDE,EAAWphH,KAAKygH,mBAAmB9gF,EAAM,aAAcqhF,GAC7DhhH,KAAKo5G,cAAcgI,GACfL,GACF/gH,KAAKo5G,cAAcgI,EAAU,YAC/B,MAAMC,EAAarhH,KAAKygH,mBAAmB9gF,EAAM,eAAgBqhF,GAEjE,IADAK,EAAWtH,WAAasH,EAAWhH,UAC5BgH,EAAWvzG,QAAUuzG,EAAWvzG,SAAW9N,KAAK+9G,WAAWj3D,QAChEu6D,EAAW7B,cAAgB6B,EAAWvzG,OACtC9N,KAAKy/G,aAAa4B,GACdN,GACF/gH,KAAKy/G,aAAa4B,EAAY,cAChCA,EAAWvzG,OAASuzG,EAAWvzG,OAAOg5C,OAExCq3D,EAAa+C,YAAc,KAC3BlhH,KAAK8gH,UAAUM,GACfphH,KAAK8gH,UAAUO,GAEjBrhH,KAAK6hH,OAAS,KAEhB/C,aAAan/E,GACX,KAAMA,aAAgBy9E,GAEpB,YADAryG,QAAQ8B,KAAK,mEAGf,MAAMo8F,EAAMD,YAAYC,MAClB1tG,EAAIyE,KAAKygH,mBAAmB9gF,GAElC,GADA3/B,KAAKo5G,cAAc79G,EAAG,aACA,UAAlBA,EAAE49G,YACJn5G,KAAKo5G,cAAc79G,EAAG,iBACjB,GAAsB,UAAlBA,EAAE49G,aAA6C,QAAlB59G,EAAE49G,YAAuB,CAC/D,MAAMuH,EAA6B,IAAbnlH,EAAEolH,OACxB3gH,KAAKo5G,cAAc79G,EAAGmlH,EAAgB,UAAY,WAEpD,MAAMvC,EAAen+G,KAAKm+G,aAAax+E,EAAKihF,WACtCkB,EAAc9hH,KAAKihH,kBAAkB9C,EAAa0C,qBAAqBlhF,EAAKghF,SAClF,IAAIoB,EAAcD,EAClB,GAAIA,IAAgBvmH,EAAEo/G,eAAe3uG,SAAS81G,GAAc,CAC1D,IAAItC,EAAgBsC,EACpB,KAAOtC,IAAkBjkH,EAAEo/G,eAAe3uG,SAASwzG,IAAgB,CAGjE,GAFAjkH,EAAEikH,cAAgBA,EAClBx/G,KAAKy/G,aAAalkH,EAAG,oBACC,UAAlBA,EAAE49G,YACJn5G,KAAKy/G,aAAalkH,EAAG,wBAChB,GAAsB,UAAlBA,EAAE49G,aAA6C,QAAlB59G,EAAE49G,YAAuB,CAC/D,MAAMuH,EAA6B,IAAbnlH,EAAEolH,OACxB3gH,KAAKy/G,aAAalkH,EAAGmlH,EAAgB,iBAAmB,kBAE1DlB,EAAgBA,EAAc14D,cAEzBq3D,EAAa0C,qBAAqBlhF,EAAKghF,QAC9CoB,EAAcvC,EAEhB,GAAIuC,EAAa,CACf,MAAMC,EAAahiH,KAAKwhH,kBAAkBjmH,EAAG,SAC7CymH,EAAWl0G,OAASi0G,EACpBC,EAAW1mC,KAAO,KACb6iC,EAAa8D,eAAetiF,EAAKghF,UACpCxC,EAAa8D,eAAetiF,EAAKghF,QAAU,CACzCuB,WAAY,EACZp0G,OAAQk0G,EAAWl0G,OACnBq0G,UAAWlZ,IAGf,MAAMmZ,EAAejE,EAAa8D,eAAetiF,EAAKghF,QAStD,GARIyB,EAAat0G,SAAWk0G,EAAWl0G,QAAUm7F,EAAMmZ,EAAaD,UAAY,MAC5EC,EAAaF,WAEfE,EAAaF,WAAa,EAE5BE,EAAat0G,OAASk0G,EAAWl0G,OACjCs0G,EAAaD,UAAYlZ,EACzB+Y,EAAWK,OAASD,EAAaF,WACF,UAA3BF,EAAW7I,YAAyB,CACtC,MAAMuH,EAAsC,IAAtBsB,EAAWrB,OACjC3gH,KAAKo5G,cAAc4I,EAAYtB,EAAgB,aAAe,aAC1B,UAA3BsB,EAAW7I,aACpBn5G,KAAKo5G,cAAc4I,EAAY,OAEjChiH,KAAKo5G,cAAc4I,EAAY,cAC/BhiH,KAAK8gH,UAAUkB,GAEjBhiH,KAAK8gH,UAAUvlH,GAEjBwjH,oBAAoBp/E,GAClB,KAAMA,aAAgBy9E,GAEpB,YADAryG,QAAQ8B,KAAK,mEAGf,MAAMsxG,EAAen+G,KAAKm+G,aAAax+E,EAAKihF,WACtCkB,EAAc9hH,KAAKihH,kBAAkB9C,EAAa0C,qBAAqBlhF,EAAKghF,SAC5EplH,EAAIyE,KAAKygH,mBAAmB9gF,GAClC,GAAImiF,EAAa,CACf,IAAItC,EAAgBsC,EACpB,KAAOtC,GACLjkH,EAAEikH,cAAgBA,EAClBx/G,KAAKy/G,aAAalkH,EAAG,oBACC,UAAlBA,EAAE49G,YACJn5G,KAAKy/G,aAAalkH,EAAG,mBACM,UAAlBA,EAAE49G,aAA6C,QAAlB59G,EAAE49G,aACxCn5G,KAAKy/G,aAAalkH,EAAgB,IAAbA,EAAEolH,OAAe,iBAAmB,kBAE3DnB,EAAgBA,EAAc14D,cAEzBq3D,EAAa0C,qBAAqBlhF,EAAKghF,QAEhD3gH,KAAK8gH,UAAUvlH,GAEjByjH,SAASr/E,GACP,KAAMA,aAAgB69E,GAEpB,YADAzyG,QAAQ8B,KAAK,+DAGf,MAAMy1G,EAAatiH,KAAKuiH,iBAAiB5iF,GACzC3/B,KAAKo5G,cAAckJ,GACnBtiH,KAAK8gH,UAAUwB,GAEjBrB,kBAAkBrG,GAChB,IAAKA,EACH,OAAO,KAET,IAAI4E,EAAgB5E,EAAgB,GACpC,IAAK,IAAIthH,EAAI,EAAGA,EAAIshH,EAAgB7hH,QAC9B6hH,EAAgBthH,GAAGwtD,SAAW04D,EADQlmH,IAExCkmH,EAAgB5E,EAAgBthH,GAKpC,OAAOkmH,EAETiB,mBAAmB9gF,EAAMt1B,EAAMyD,GAC7B,MAAMnM,EAAQ3B,KAAKwiH,cAAcpF,GAUjC,OATAp9G,KAAKyiH,gBAAgB9iF,EAAMh+B,GAC3B3B,KAAK0iH,cAAc/iF,EAAMh+B,GACzB3B,KAAK2iH,SAAShjF,EAAMh+B,GACpBA,EAAM45G,YAAc57E,EAAK47E,YACzB55G,EAAMihH,cAAgBjjF,EACtBh+B,EAAMmM,OAASA,GAAU9N,KAAKs/G,QAAQ39G,EAAMm6G,OAAOnjH,EAAGgJ,EAAMm6G,OAAOljH,IAAMoH,KAAKs+G,aAAa,GACvE,kBAATj0G,IACT1I,EAAM0I,KAAOA,GAER1I,EAET4gH,iBAAiB5iF,GACf,MAAMh+B,EAAQ3B,KAAKwiH,cAAchF,GAOjC,OANAx9G,KAAK6iH,cAAcljF,EAAMh+B,GACzB3B,KAAK0iH,cAAc/iF,EAAMh+B,GACzB3B,KAAK2iH,SAAShjF,EAAMh+B,GACpBA,EAAM45G,YAAc57E,EAAK47E,YACzB55G,EAAMihH,cAAgBjjF,EACtBh+B,EAAMmM,OAAS9N,KAAKs/G,QAAQ39G,EAAMm6G,OAAOnjH,EAAGgJ,EAAMm6G,OAAOljH,GAClD+I,EAET6/G,kBAAkB7hF,EAAMt1B,GACtB,MAAM1I,EAAQ3B,KAAKwiH,cAAcpF,GASjC,OARAz7G,EAAM45G,YAAc57E,EAAK47E,YACzB55G,EAAMihH,cAAgBjjF,EAAKijF,cAC3B5iH,KAAKyiH,gBAAgB9iF,EAAMh+B,GAC3B3B,KAAK0iH,cAAc/iF,EAAMh+B,GACzB3B,KAAK2iH,SAAShjF,EAAMh+B,GACpBA,EAAMmM,OAAS6xB,EAAK7xB,OACpBnM,EAAM25E,KAAO37C,EAAKg7E,eAAej4G,QACjCf,EAAM0I,KAAOA,GAAQ1I,EAAM0I,KACpB1I,EAETkhH,cAAcljF,EAAMmjF,GAClBA,EAAGC,UAAYpjF,EAAKojF,UACpBD,EAAGE,OAASrjF,EAAKqjF,OACjBF,EAAGG,OAAStjF,EAAKsjF,OACjBH,EAAGI,OAASvjF,EAAKujF,OAEnBT,gBAAgB9iF,EAAMmjF,GACdnjF,aAAgBy9E,GAAyB0F,aAAc1F,IAE7D0F,EAAGlC,UAAYjhF,EAAKihF,UACpBkC,EAAG35G,MAAQw2B,EAAKx2B,MAChB25G,EAAG15G,OAASu2B,EAAKv2B,OACjB05G,EAAGzF,UAAY19E,EAAK09E,UACpByF,EAAG3J,YAAcx5E,EAAKw5E,YACtB2J,EAAGK,SAAWxjF,EAAKwjF,SACnBL,EAAGM,mBAAqBzjF,EAAKyjF,mBAC7BN,EAAGO,MAAQ1jF,EAAK0jF,MAChBP,EAAGQ,MAAQ3jF,EAAK2jF,MAChBR,EAAGS,MAAQ5jF,EAAK4jF,OAElBb,cAAc/iF,EAAMmjF,GACZnjF,aAAgBg8E,GAAuBmH,aAAcnH,IAE3DmH,EAAGU,OAAS7jF,EAAK6jF,OACjBV,EAAGnC,OAAShhF,EAAKghF,OACjBmC,EAAGW,QAAU9jF,EAAK8jF,QAClBX,EAAGlH,OAAO5lE,SAASrW,EAAKi8E,QACxBkH,EAAGY,QAAU/jF,EAAK+jF,QAClBZ,EAAGa,QAAUhkF,EAAKgkF,QAClBb,EAAGjH,SAAS7lE,SAASrW,EAAKk8E,UAC1BiH,EAAGl7G,OAAOouC,SAASrW,EAAK/3B,QACxBk7G,EAAGc,SAAWjkF,EAAKikF,SACnBd,EAAGhH,OAAO9lE,SAASrW,EAAKm8E,SAE1B6G,SAAShjF,EAAMmjF,GACbA,EAAGe,UAAYlkF,EAAKkkF,UACpBf,EAAGgB,WAAankF,EAAKmkF,WACrBhB,EAAGX,UAAYnZ,YAAYC,MAC3B6Z,EAAGz4G,KAAOs1B,EAAKt1B,KACfy4G,EAAGT,OAAS1iF,EAAK0iF,OACjBS,EAAGn7G,KAAOg4B,EAAKh4B,KACfm7G,EAAGiB,MAAQpkF,EAAKokF,MAChBjB,EAAG3I,MAAMnkE,SAASrW,EAAKw6E,OACvB2I,EAAGjwB,KAAK78C,SAASrW,EAAKkzD,MAExBsrB,aAAa/rG,GAQX,OAPKpS,KAAKk+G,aAAaC,aAAa/rG,KAClCpS,KAAKk+G,aAAaC,aAAa/rG,GAAM,CACnCyuG,qBAAsB,GACtBoB,eAAgB,GAChB+B,WAAY,OAGThkH,KAAKk+G,aAAaC,aAAa/rG,GAExCowG,cAAcx7G,GACPhH,KAAKo+G,UAAUr9G,IAAIiG,IACtBhH,KAAKo+G,UAAU91G,IAAItB,EAAa,IAElC,MAAMrF,EAAQ3B,KAAKo+G,UAAUt1G,IAAI9B,GAAasE,OAAS,IAAItE,EAAYhH,MAKvE,OAJA2B,EAAMo4G,WAAap4G,EAAMq4G,KACzBr4G,EAAM69G,cAAgB,KACtB79G,EAAM25E,KAAO,KACb35E,EAAMmM,OAAS,KACRnM,EAETm/G,UAAUn/G,GACR,GAAIA,EAAM83G,UAAYz5G,KACpB,MAAM,IAAImP,MAAM,qEAClB,MAAMnI,EAAcrF,EAAMqF,YACrBhH,KAAKo+G,UAAUr9G,IAAIiG,IACtBhH,KAAKo+G,UAAU91G,IAAItB,EAAa,IAElChH,KAAKo+G,UAAUt1G,IAAI9B,GAAarN,KAAKgI,GAEvC6+G,gBAAgBjlH,EAAG8O,GACjB,MAAMxH,EAAYtH,EAAEikH,cAAcz9G,QAAQsI,GAC1C,GAAKxH,GAEAtH,EAAEikH,cAAcW,gBAErB,GAAI,OAAQt9G,EACNA,EAAUrB,MACZjG,EAAEikH,cAAc97G,eAAe2G,EAAMxH,EAAUvB,QAAI,GAAQ,GAC7DuB,EAAUvB,GAAGmB,KAAKI,EAAUtB,QAAShG,QAErC,IAAK,IAAIjC,EAAI,EAAG4G,EAAI2C,EAAU9J,OAAQO,EAAI4G,IAAM3E,EAAE2+G,8BAA+B5gH,IAC3EuJ,EAAUvJ,GAAGkI,MACfjG,EAAEikH,cAAc97G,eAAe2G,EAAMxH,EAAUvJ,GAAGgI,QAAI,GAAQ,GAChEuB,EAAUvJ,GAAGgI,GAAGmB,KAAKI,EAAUvJ,GAAGiI,QAAShG,ICznBnD,MACM0oH,EAAmB,CACvBC,WAAY,cACZC,SAAU,YACVC,gBAAiB,mBACjBC,UAAW,cACXC,YAAa,iBAETC,EAAe,MACnBv9G,YAAYK,GACVrH,KAAKk5G,oBAAsB,iBAAkB1wG,WAC7CxI,KAAKwkH,wBAA0Bh8G,WAAW6wG,aAC1Cr5G,KAAK84G,WAAa,KAClB94G,KAAKsV,WAAa,EAClBtV,KAAKqH,SAAWA,EAChBrH,KAAKykH,aAAe,IAAI3G,EAAc,MACtCxF,EAAa7wG,KAAKzH,MAClBA,KAAK0kH,oBAAqB,EAC1B1kH,KAAK2kH,aAAc,EACnB3kH,KAAKi5G,iBAAmB,IAAImE,EAAsB,MAClDp9G,KAAK4kH,eAAiB,IAAIpH,EAAoB,MAC9Cx9G,KAAK6kH,aAAe,CAClBvkF,QAAS,UACTwkF,QAAS,WAEX9kH,KAAK+kH,SAAW,IAAIl3G,MAAM,IAAK02G,EAAaS,sBAAwB,CAClE18G,IAAK,CAACwF,EAAQ1D,EAAKqB,KACL,eAARrB,IACFpK,KAAKykH,aAAaxG,uBAAyBxyG,GAE7CqC,EAAO1D,GAAOqB,GACP,KAGXzL,KAAKilH,cAAgBjlH,KAAKilH,cAActzF,KAAK3xB,MAC7CA,KAAKklH,cAAgBllH,KAAKklH,cAAcvzF,KAAK3xB,MAC7CA,KAAKmlH,YAAcnlH,KAAKmlH,YAAYxzF,KAAK3xB,MACzCA,KAAKolH,iBAAmBplH,KAAKolH,iBAAiBzzF,KAAK3xB,MACnDA,KAAKqlH,QAAUrlH,KAAKqlH,QAAQ1zF,KAAK3xB,MAExBslH,8BACT,OAAOtlH,KAAKulH,kBAEd99G,KAAKR,GACH,MAAM,KAAEU,EAAI,WAAE2N,GAAetV,KAAKqH,SAClCrH,KAAKwlH,iBAAiB79G,GACtB3H,KAAKsV,WAAaA,EAClBivG,EAAagB,kBAAoBt+G,EAAQ4/D,WAAa,OACtD7lE,OAAOmG,OAAOnH,KAAK+kH,SAAU99G,EAAQw+G,eAAiB,IACtDzlH,KAAKykH,aAAaxG,uBAAyBj+G,KAAK+kH,SAASW,WAE3D3oD,iBAAiBznD,GACftV,KAAKsV,WAAaA,EAEpBzN,UACE7H,KAAKwlH,iBAAiB,MACtBxlH,KAAKqH,SAAW,KAElBs+G,UAAUx2E,GACRA,EAAOA,GAAQ,UACf,IAAIy2E,GAAc,EAIlB,GAHIp9G,WAAWk1D,iBAAmB19D,KAAK84G,sBAAsBp7C,kBAC3DkoD,GAAc,GAEZ5lH,KAAK6lH,gBAAkB12E,EACzB,OAEFnvC,KAAK6lH,cAAgB12E,EACrB,MAAMrd,EAAQ9xB,KAAK6kH,aAAa11E,GAChC,GAAIrd,EACF,cAAeA,GACb,IAAK,SACC8zF,IACF5lH,KAAK84G,WAAWhnF,MAAM+vF,OAAS/vF,GAEjC,MACF,IAAK,WACHA,EAAMqd,GACN,MACF,IAAK,SACCy2E,GACF5kH,OAAOmG,OAAOnH,KAAK84G,WAAWhnF,MAAOA,QAIlC8zF,GAA+B,kBAATz2E,IAAsBnuC,OAAOC,UAAUC,eAAeuB,KAAKzC,KAAK6kH,aAAc11E,KAC7GnvC,KAAK84G,WAAWhnF,MAAM+vF,OAAS1yE,GAG/B21E,cACF,OAAO9kH,KAAKi5G,iBAEdgM,cAAc1J,GACZ,IAAKv7G,KAAK+kH,SAASe,MACjB,OAEF,GADA9lH,KAAKykH,aAAa1G,WAAa/9G,KAAKqH,SAAS60D,mBACzCl8D,KAAKk5G,qBAAmD,UAA5BqC,EAAYpC,YAC1C,OACF,MAAM72G,EAAStC,KAAK+lH,uBAAuBxK,GAC3C,GAAIv7G,KAAK0kH,oBAAsBpiH,EAAO,GAAG0jH,aAAc,EAClCzK,EAAY3B,cAAgB,eAAgB2B,KAE7DA,EAAY3vE,iBAGhB,IAAK,IAAItyC,EAAI,EAAG4G,EAAIoC,EAAOvJ,OAAQO,EAAI4G,EAAG5G,IAAK,CAC7C,MAAM2sH,EAAe3jH,EAAOhJ,GACtB4sH,EAAiBlmH,KAAKmmH,eAAenmH,KAAKi5G,iBAAkBgN,GAClEjmH,KAAKykH,aAAarF,SAAS8G,GAE7BlmH,KAAK2lH,UAAU3lH,KAAKykH,aAAa5C,QAEnCqD,cAAc3J,GACZ,IAAKv7G,KAAK+kH,SAASqB,KACjB,OAEF,GADApmH,KAAKykH,aAAa1G,WAAa/9G,KAAKqH,SAAS60D,mBACzCl8D,KAAKk5G,qBAAmD,UAA5BqC,EAAYpC,YAC1C,OACFb,EAAaU,eACb,MAAMqN,EAAmBrmH,KAAK+lH,uBAAuBxK,GACrD,IAAK,IAAIjiH,EAAI,EAAG4G,EAAImmH,EAAiBttH,OAAQO,EAAI4G,EAAG5G,IAAK,CACvD,MAAMqI,EAAQ3B,KAAKmmH,eAAenmH,KAAKi5G,iBAAkBoN,EAAiB/sH,IAC1E0G,KAAKykH,aAAarF,SAASz9G,GAE7B3B,KAAK2lH,UAAU3lH,KAAKykH,aAAa5C,QAEnCsD,YAAY5J,GACV,IAAKv7G,KAAK+kH,SAASe,MACjB,OAEF,GADA9lH,KAAKykH,aAAa1G,WAAa/9G,KAAKqH,SAAS60D,mBACzCl8D,KAAKk5G,qBAAmD,UAA5BqC,EAAYpC,YAC1C,OACF,IAAIrrG,EAASytG,EAAYztG,OACrBytG,EAAYZ,cAAgBY,EAAYZ,eAAe5hH,OAAS,IAClE+U,EAASytG,EAAYZ,eAAe,IAEtC,MAAM2L,EAAUx4G,IAAW9N,KAAK84G,WAAa,UAAY,GACnDuN,EAAmBrmH,KAAK+lH,uBAAuBxK,GACrD,IAAK,IAAIjiH,EAAI,EAAG4G,EAAImmH,EAAiBttH,OAAQO,EAAI4G,EAAG5G,IAAK,CACvD,MAAMqI,EAAQ3B,KAAKmmH,eAAenmH,KAAKi5G,iBAAkBoN,EAAiB/sH,IAC1EqI,EAAM0I,MAAQi8G,EACdtmH,KAAKykH,aAAarF,SAASz9G,GAE7B3B,KAAK2lH,UAAU3lH,KAAKykH,aAAa5C,QAEnCuD,iBAAiB7J,GACf,IAAKv7G,KAAK+kH,SAASe,MACjB,OAEF,GADA9lH,KAAKykH,aAAa1G,WAAa/9G,KAAKqH,SAAS60D,mBACzCl8D,KAAKk5G,qBAAmD,UAA5BqC,EAAYpC,YAC1C,OACF,MAAMkN,EAAmBrmH,KAAK+lH,uBAAuBxK,GACrD,IAAK,IAAIjiH,EAAI,EAAG4G,EAAImmH,EAAiBttH,OAAQO,EAAI4G,EAAG5G,IAAK,CACvD,MAAMqI,EAAQ3B,KAAKmmH,eAAenmH,KAAKi5G,iBAAkBoN,EAAiB/sH,IAC1E0G,KAAKykH,aAAarF,SAASz9G,GAE7B3B,KAAK2lH,UAAU3lH,KAAKykH,aAAa5C,QAEnCwD,QAAQ9J,GACN,IAAKv7G,KAAK+kH,SAASwB,MACjB,OACF,MAAMjE,EAAatiH,KAAKwmH,oBAAoBjL,GAC5Cv7G,KAAKykH,aAAa1G,WAAa/9G,KAAKqH,SAAS60D,mBAC7Cl8D,KAAKykH,aAAarF,SAASkD,GAE7BkD,iBAAiBzhF,GACf/jC,KAAKymH,eACLzmH,KAAK84G,WAAa/0E,EAClBu0E,EAAaQ,WAAa/0E,EAC1B/jC,KAAK0mH,YAEPA,YACE,GAAI1mH,KAAK2kH,cAAgB3kH,KAAK84G,WAC5B,OAEFR,EAAaO,oBACb,MAAM/mF,EAAQ9xB,KAAK84G,WAAWhnF,MAC1BA,IACEtpB,WAAWvD,UAAU0hH,kBACvB70F,EAAM80F,iBAAmB,OACzB90F,EAAM+0F,cAAgB,QACb7mH,KAAKwkH,wBACd1yF,EAAMg1F,YAAc,SAGpB9mH,KAAKwkH,uBACPh8G,WAAWk3D,SAAS92D,iBAAiB,cAAe5I,KAAKklH,eAAe,GACxEllH,KAAK84G,WAAWlwG,iBAAiB,cAAe5I,KAAKilH,eAAe,GACpEjlH,KAAK84G,WAAWlwG,iBAAiB,eAAgB5I,KAAKolH,kBAAkB,GACxEplH,KAAK84G,WAAWlwG,iBAAiB,cAAe5I,KAAKolH,kBAAkB,GACvE58G,WAAWI,iBAAiB,YAAa5I,KAAKmlH,aAAa,KAE3D38G,WAAWk3D,SAAS92D,iBAAiB,YAAa5I,KAAKklH,eAAe,GACtEllH,KAAK84G,WAAWlwG,iBAAiB,YAAa5I,KAAKilH,eAAe,GAClEjlH,KAAK84G,WAAWlwG,iBAAiB,WAAY5I,KAAKolH,kBAAkB,GACpEplH,KAAK84G,WAAWlwG,iBAAiB,YAAa5I,KAAKolH,kBAAkB,GACrE58G,WAAWI,iBAAiB,UAAW5I,KAAKmlH,aAAa,IAEvDnlH,KAAKk5G,sBACPl5G,KAAK84G,WAAWlwG,iBAAiB,aAAc5I,KAAKilH,eAAe,GACnEjlH,KAAK84G,WAAWlwG,iBAAiB,WAAY5I,KAAKmlH,aAAa,GAC/DnlH,KAAK84G,WAAWlwG,iBAAiB,YAAa5I,KAAKklH,eAAe,IAEpEllH,KAAK84G,WAAWlwG,iBAAiB,QAAS5I,KAAKqlH,QAAS,CACtD0B,SAAS,EACTC,SAAS,IAEXhnH,KAAK2kH,aAAc,EAErB8B,eACE,IAAKzmH,KAAK2kH,cAAgB3kH,KAAK84G,WAC7B,OAEFR,EAAaK,uBACb,MAAM7mF,EAAQ9xB,KAAK84G,WAAWhnF,MAC1BtpB,WAAWvD,UAAU0hH,kBACvB70F,EAAM80F,iBAAmB,GACzB90F,EAAM+0F,cAAgB,IACb7mH,KAAKwkH,wBACd1yF,EAAMg1F,YAAc,IAElB9mH,KAAKwkH,uBACPh8G,WAAWk3D,SAASj3D,oBAAoB,cAAezI,KAAKklH,eAAe,GAC3EllH,KAAK84G,WAAWrwG,oBAAoB,cAAezI,KAAKilH,eAAe,GACvEjlH,KAAK84G,WAAWrwG,oBAAoB,eAAgBzI,KAAKolH,kBAAkB,GAC3EplH,KAAK84G,WAAWrwG,oBAAoB,cAAezI,KAAKolH,kBAAkB,GAC1E58G,WAAWC,oBAAoB,YAAazI,KAAKmlH,aAAa,KAE9D38G,WAAWk3D,SAASj3D,oBAAoB,YAAazI,KAAKklH,eAAe,GACzEllH,KAAK84G,WAAWrwG,oBAAoB,YAAazI,KAAKilH,eAAe,GACrEjlH,KAAK84G,WAAWrwG,oBAAoB,WAAYzI,KAAKolH,kBAAkB,GACvEplH,KAAK84G,WAAWrwG,oBAAoB,YAAazI,KAAKolH,kBAAkB,GACxE58G,WAAWC,oBAAoB,UAAWzI,KAAKmlH,aAAa,IAE1DnlH,KAAKk5G,sBACPl5G,KAAK84G,WAAWrwG,oBAAoB,aAAczI,KAAKilH,eAAe,GACtEjlH,KAAK84G,WAAWrwG,oBAAoB,WAAYzI,KAAKmlH,aAAa,GAClEnlH,KAAK84G,WAAWrwG,oBAAoB,YAAazI,KAAKklH,eAAe,IAEvEllH,KAAK84G,WAAWrwG,oBAAoB,QAASzI,KAAKqlH,SAAS,GAC3DrlH,KAAK84G,WAAa,KAClB94G,KAAK2kH,aAAc,EAErBsC,mBAAmB5kD,EAAO1pE,EAAGC,GAC3B,IAAIq/C,EAWFA,EAVGj4C,KAAK84G,WAAWoO,cAUZlnH,KAAK84G,WAAWqO,wBAThB,CACLxuH,EAAG,EACHC,EAAG,EACHuQ,MAAOnJ,KAAK84G,WAAW3vG,MACvBC,OAAQpJ,KAAK84G,WAAW1vG,OACxBkvC,KAAM,EACNC,IAAK,GAKT,MAAM6uE,EAAuB,EAAIpnH,KAAKsV,WACtC+sD,EAAM1pE,GAAKA,EAAIs/C,EAAKK,OAASt4C,KAAK84G,WAAW3vG,MAAQ8uC,EAAK9uC,OAASi+G,EACnE/kD,EAAMzpE,GAAKA,EAAIq/C,EAAKM,MAAQv4C,KAAK84G,WAAW1vG,OAAS6uC,EAAK7uC,QAAUg+G,EAEtErB,uBAAuBpkH,GACrB,MAAM0kH,EAAmB,GACzB,GAAIrmH,KAAKk5G,qBAAuBv3G,aAAiB0lH,WAC/C,IAAK,IAAI/tH,EAAI,EAAGguH,EAAK3lH,EAAM4lH,eAAexuH,OAAQO,EAAIguH,EAAIhuH,IAAK,CAC7D,MAAMkrC,EAAQ7iC,EAAM4lH,eAAejuH,GACP,qBAAjBkrC,EAAMm8E,SACfn8E,EAAMm8E,OAAS,GACY,qBAAlBn8E,EAAMi/E,UACfj/E,EAAMi/E,QAAU,GACa,qBAApBj/E,EAAM64E,YACf74E,EAAM64E,UAAqC,IAAzB17G,EAAM6lH,QAAQzuH,QAA+B,eAAf4I,EAAM0I,MAE7B,qBAAhBm6B,EAAMr7B,QACfq7B,EAAMr7B,MAAQq7B,EAAMijF,SAAW,GACL,qBAAjBjjF,EAAMp7B,SACfo7B,EAAMp7B,OAASo7B,EAAMkjF,SAAW,GACP,qBAAhBljF,EAAM6+E,QACf7+E,EAAM6+E,MAAQ,GACW,qBAAhB7+E,EAAM8+E,QACf9+E,EAAM8+E,MAAQ,GACiB,qBAAtB9+E,EAAM20E,cACf30E,EAAM20E,YAAc,SACS,qBAApB30E,EAAMo8E,YACfp8E,EAAMo8E,UAAYp8E,EAAMmjF,YAAc,GACV,qBAAnBnjF,EAAM2+E,WACf3+E,EAAM2+E,SAAW3+E,EAAMojF,OAAS,IACP,qBAAhBpjF,EAAM++E,QACf/+E,EAAM++E,MAAQ,GACwB,qBAA7B/+E,EAAM4+E,qBACf5+E,EAAM4+E,mBAAqB,GACD,qBAAjB5+E,EAAM+1E,SACf/1E,EAAM+1E,OAAS/1E,EAAMk0C,QAAUl0C,EAAM80E,SACX,qBAAjB90E,EAAMg2E,SACfh2E,EAAMg2E,OAASh2E,EAAMm0C,QAAUn0C,EAAM+0E,SACvC/0E,EAAMwhF,cAAe,EACrBxhF,EAAMn6B,KAAO1I,EAAM0I,KACnBg8G,EAAiB1sH,KAAK6qC,QAEnB,GAAKh8B,WAAWq/G,eAAclmH,aAAiBkmH,aAAgB7nH,KAAKwkH,uBAA2B7iH,aAAiB6G,WAAW6wG,cAyBhIgN,EAAiB1sH,KAAKgI,OAzB0H,CAChJ,MAAMmmH,EAAYnmH,EACiB,qBAAxBmmH,EAAUzK,YACnByK,EAAUzK,WAAY,GACO,qBAApByK,EAAU3+G,QACnB2+G,EAAU3+G,MAAQ,GACY,qBAArB2+G,EAAU1+G,SACnB0+G,EAAU1+G,OAAS,GACU,qBAApB0+G,EAAUzE,QACnByE,EAAUzE,MAAQ,GACW,qBAApByE,EAAUxE,QACnBwE,EAAUxE,MAAQ,GACiB,qBAA1BwE,EAAU3O,cACnB2O,EAAU3O,YAAc,SACS,qBAAxB2O,EAAUlH,YACnBkH,EAAUlH,UA1TO,GA2Te,qBAAvBkH,EAAU3E,WACnB2E,EAAU3E,SAAW,IACQ,qBAApB2E,EAAUvE,QACnBuE,EAAUvE,MAAQ,GACwB,qBAAjCuE,EAAU1E,qBACnB0E,EAAU1E,mBAAqB,GACjC0E,EAAU9B,cAAe,EACzBK,EAAiB1sH,KAAKmuH,GAIxB,OAAOzB,EAETG,oBAAoBjL,GAClB,MAAM55G,EAAQ3B,KAAK4kH,eAWnB,OAVA5kH,KAAK+nH,kBAAkBpmH,EAAO45G,GAC9B55G,EAAMqhH,OAASzH,EAAYyH,OAC3BrhH,EAAMshH,OAAS1H,EAAY0H,OAC3BthH,EAAMuhH,OAAS3H,EAAY2H,OAC3BvhH,EAAMohH,UAAYxH,EAAYwH,UAC9B/iH,KAAKinH,mBAAmBtlH,EAAMiG,OAAQ2zG,EAAYjC,QAASiC,EAAYhC,SACvE53G,EAAMm6G,OAAO9lE,SAASr0C,EAAMiG,QAC5BjG,EAAMi3B,OAAOod,SAASr0C,EAAMiG,QAC5BjG,EAAM45G,YAAcA,EACpB55G,EAAM0I,KAAOkxG,EAAYlxG,KAClB1I,EAETwkH,eAAexkH,EAAO45G,GA2BpB,OA1BA55G,EAAMihH,cAAgB,KACtBjhH,EAAM45G,YAAcA,EACpB55G,EAAMi/G,UAAYrF,EAAYqF,UAC9Bj/G,EAAMwH,MAAQoyG,EAAYpyG,MAC1BxH,EAAMyH,OAASmyG,EAAYnyG,OAC3BzH,EAAM07G,UAAY9B,EAAY8B,UAC9B17G,EAAMw3G,YAAcoC,EAAYpC,YAChCx3G,EAAMwhH,SAAW5H,EAAY4H,SAC7BxhH,EAAMyhH,mBAAqB7H,EAAY6H,mBACvCzhH,EAAM0hH,MAAQ9H,EAAY8H,MAC1B1hH,EAAM2hH,MAAQ/H,EAAY+H,MAC1B3hH,EAAM4hH,MAAQhI,EAAYgI,MAC1BvjH,KAAK+nH,kBAAkBpmH,EAAO45G,GAC9Bv7G,KAAKinH,mBAAmBtlH,EAAMiG,OAAQ2zG,EAAYjC,QAASiC,EAAYhC,SACvE53G,EAAMm6G,OAAO9lE,SAASr0C,EAAMiG,QAC5BjG,EAAMi3B,OAAOod,SAASr0C,EAAMiG,QAC5BjG,EAAMkiH,UAAYtI,EAAYsI,UACX,iBAAfliH,EAAM0I,OACR1I,EAAM0I,KAAO,cAEX1I,EAAM0I,KAAK4F,WAAW,WACxBtO,EAAM0I,KAAO1I,EAAM0I,KAAK6G,QAAQ,QAAS,YAEvCvP,EAAM0I,KAAK4F,WAAW,WACxBtO,EAAM0I,KAAO45G,EAAiBtiH,EAAM0I,OAAS1I,EAAM0I,MAE9C1I,EAETomH,kBAAkBpmH,EAAO45G,GACvB55G,EAAMkiH,UAAYtI,EAAYsI,UAC9BliH,EAAMmiH,WAAavI,EAAYuI,WAC/BniH,EAAMwgH,UAAYnZ,YAAYC,MAC9BtnG,EAAM0I,KAAOkxG,EAAYlxG,KACzB1I,EAAM6hH,OAASjI,EAAYiI,OAC3B7hH,EAAMg/G,OAASpF,EAAYoF,OAC3Bh/G,EAAM8hH,QAAUlI,EAAYkI,QAC5B9hH,EAAMi6G,OAAOjjH,EAAI4iH,EAAYjC,QAC7B33G,EAAMi6G,OAAOhjH,EAAI2iH,EAAYhC,QAC7B53G,EAAM+hH,QAAUnI,EAAYmI,QAC5B/hH,EAAMgiH,QAAUpI,EAAYoI,QAC5BhiH,EAAMk6G,SAASljH,EAAI4iH,EAAYQ,UAC/Bp6G,EAAMk6G,SAASjjH,EAAI2iH,EAAYS,UAC/Br6G,EAAMkxF,KAAKl6F,EAAI4iH,EAAYd,MAC3B94G,EAAMkxF,KAAKj6F,EAAI2iH,EAAYb,MAC3B/4G,EAAMqmH,cAAgB,KACtBrmH,EAAMiiH,SAAWrI,EAAYqI,WAGjC,IAAIqE,EAAc1D,ECxYlB,SAAS2D,EAAkC/4E,GACzC,MAAgB,YAATA,GAA+B,WAATA,EDwY/B84E,EAAYt+G,UAAY,CACtBpH,KAAM,SACN8H,KAAM,CACJ,oBACA,4BAGJ49G,EAAYjD,qBAAuB,CACjCoB,MAAM,EACNV,YAAY,EACZI,OAAO,EACPS,OAAO,GAET,SAAe0B,GCnZf,MAAME,EAAyB,CAC7BC,QAAS,KACTC,YAAa,KACbC,aAAc,KACdC,aAAc,KACdC,YAAa,KACbC,kBAAmB,KACnBC,WAAY,KACZC,YAAa,KACbC,UAAW,KACXC,iBAAkB,KAClBC,gBAAiB,KACjBC,cAAe,KACfC,eAAgB,KAChBC,eAAgB,KAChBC,cAAe,KACfC,oBAAqB,KACrBC,aAAc,KACdC,cAAe,KACfC,aAAc,KACdC,YAAa,KACbC,mBAAoB,KACpBC,aAAc,KACdC,YAAa,KACbC,UAAW,KACXC,iBAAkB,KAClBC,MAAO,KACPC,cAAe,KACfC,WAAY,KACZC,kBAAmB,KACnBC,YAAa,KACbC,kBAAmB,KACnBC,aAAc,KACdC,QAAS,KACTC,0BAAsB,EAClBC,kBACF,OAAOtqH,KAAKqqH,sBAAwBnC,EAAkCD,EAAY3C,mBAEhFgF,gBAAY7+G,GACd,iBAAkB,QAAS,0GAC3BzL,KAAKqqH,qBAAuB5+G,EAC5BzL,KAAK6mE,UAAYp7D,EAAQ,SAAW,QAEtC8+G,wBAAoB,EAChB1jD,gBACF,OAAO7mE,KAAKuqH,oBAAsBtC,EAAY3C,kBAE5Cz+C,cAAUp7D,GACZzL,KAAKqqH,qBAAuBnC,EAAkCz8G,GAC9DzL,KAAKuqH,mBAAqB9+G,GAE5B00G,gBACE,MAA0B,WAAnBngH,KAAK6mE,WAA6C,YAAnB7mE,KAAK6mE,WAE7CC,qBAAqB,EACrBF,QAAS,KACTh+D,iBAAiByB,EAAMxI,EAAUoF,GAC/B,MACM1F,EAA8B,oBAAbM,OAA0B,EAASA,EAC1DwI,EAFmC,mBAAZpD,GAAyBA,GAA8B,kBAAZA,GAAwBA,EAAQ+/G,QAEjF,GAAG38G,WAAgBA,EACpCxI,EAA+B,oBAAbA,EAA0BA,EAAWA,EAAS2oH,YAChExqH,KAAK6D,GAAGwG,EAAMxI,EAAUN,IAE1BkH,oBAAoB4B,EAAMxI,EAAUoF,GAClC,MACM1F,EAA8B,oBAAbM,OAA0B,EAASA,EAC1DwI,EAFmC,mBAAZpD,GAAyBA,GAA8B,kBAAZA,GAAwBA,EAAQ+/G,QAEjF,GAAG38G,WAAgBA,EACpCxI,EAA+B,oBAAbA,EAA0BA,EAAWA,EAAS2oH,YAChExqH,KAAK+D,IAAIsG,EAAMxI,EAAUN,IAE3B63G,cAAc79G,GACZ,KAAMA,aAAai+G,GACjB,MAAM,IAAIrqG,MAAM,6EAMlB,OAJA5T,EAAEu+G,kBAAmB,EACrBv+G,EAAE+/E,KAAO,KACT//E,EAAEuS,OAAS9N,KACXzE,EAAEk+G,QAAQL,cAAc79G,IAChBA,EAAEu+G,mBAGd,WAAoBqO,GCpFpB,WCLyB,CACvBsC,YAAY,EACZC,gBAAiB,KACjBC,eAAgB,KAChBC,SAAU,EACVC,mBAAmB,EACnBC,eAAgB,KAChBC,eAAgB,SAChBC,wBAAyB,OACzBC,oBAAoB,EACpBC,UAAW,IDKb,MAAMC,EACJnkH,YAAYK,GACVrH,KAAKorH,OAAQ,EACbprH,KAAKiL,WAAY,EACjBjL,KAAKqrH,wBAAyB,EAC9BrrH,KAAKsrH,KAAO,GACZtrH,KAAKkrH,SAAW,EAChBlrH,KAAKgyD,SAAW,GAChBhyD,KAAKurH,mBAAqB,EAC1BvrH,KAAKwrH,uBAAyB,IAC9BxrH,KAAKyrH,SAAW,MACZ,sBAAyB,sBAC3BzrH,KAAK0rH,kBAEP,MAAMC,EAAMjsD,SAASC,cAAc,OACnCgsD,EAAI75F,MAAM3oB,MAAQ,QAClBwiH,EAAI75F,MAAM1oB,OAAS,QACnBuiH,EAAI75F,MAAM6zC,SAAW,WACrBgmD,EAAI75F,MAAMymB,IAAM,MAChBozE,EAAI75F,MAAMwmB,KAAO,MACjBqzE,EAAI75F,MAAMq1C,OAzBW,GAyBelqD,WACpCjd,KAAK2rH,IAAMA,EACX3rH,KAAKqH,SAAWA,EAChBrH,KAAK4rH,WAAa5rH,KAAK4rH,WAAWj6F,KAAK3xB,MACvCA,KAAK6rH,aAAe7rH,KAAK6rH,aAAal6F,KAAK3xB,MAC3CwI,WAAWI,iBAAiB,UAAW5I,KAAK4rH,YAAY,GAEtDE,eACF,OAAO9rH,KAAKiL,UAEV8gH,4BACF,OAAO/rH,KAAKqrH,uBAEdK,kBACE,MAAMM,EAAUtsD,SAASC,cAAc,UACvCqsD,EAAQl6F,MAAM3oB,MAAQ,MACtB6iH,EAAQl6F,MAAM1oB,OAAS,MACvB4iH,EAAQl6F,MAAM6zC,SAAW,WACzBqmD,EAAQl6F,MAAMymB,IAAM,UACpByzE,EAAQl6F,MAAMwmB,KAAO,UACrB0zE,EAAQl6F,MAAMq1C,OAzCM,GAyCmBlqD,WACvC+uG,EAAQl6F,MAAM0W,gBAAkB,UAChCwjF,EAAQC,MAAQ,kDAChBD,EAAQpjH,iBAAiB,SAAS,KAChC5I,KAAKqrH,wBAAyB,EAC9BrrH,KAAKksH,WACLlsH,KAAKmsH,sBAEPzsD,SAAS0sD,KAAKjsD,YAAY6rD,GAC1BhsH,KAAKyrH,SAAWO,EAElBG,mBACOnsH,KAAKyrH,WAGV/rD,SAAS0sD,KAAK5yD,YAAYx5D,KAAKyrH,UAC/BzrH,KAAKyrH,SAAW,MAElBS,WACMlsH,KAAKiL,YAGTjL,KAAKiL,WAAY,EACjBzC,WAAWk3D,SAAS92D,iBAAiB,YAAa5I,KAAK6rH,cAAc,GACrErjH,WAAWC,oBAAoB,UAAWzI,KAAK4rH,YAAY,GAC3D5rH,KAAKqH,SAASxD,GAAG,aAAc7D,KAAK6xB,OAAQ7xB,MAC5CA,KAAKqH,SAASM,KAAK4xD,YAAY4G,YAAYngE,KAAK2rH,MAElDU,aACOrsH,KAAKiL,YAAajL,KAAKqrH,yBAG5BrrH,KAAKiL,WAAY,EACjBzC,WAAWk3D,SAASj3D,oBAAoB,YAAazI,KAAK6rH,cAAc,GACxErjH,WAAWI,iBAAiB,UAAW5I,KAAK4rH,YAAY,GACxD5rH,KAAKqH,SAAStD,IAAI,aAAc/D,KAAK6xB,QACrC7xB,KAAK2rH,IAAIpyD,YAAYC,YAAYx5D,KAAK2rH,MAExCW,wBAAwB7lE,GACtB,IAAKA,EAAcwd,UAAYxd,EAAcwkE,mBAC3C,OAEExkE,EAAcgkE,YAAchkE,EAAc05D,kBACvC15D,EAAcokE,mBACjB7qH,KAAKimE,SAASxf,GAEhBA,EAAcykE,SAAWlrH,KAAKkrH,UAEhC,MAAMl5D,EAAWvL,EAAcuL,SAC/B,GAAIA,EACF,IAAK,IAAI14D,EAAI,EAAGA,EAAI04D,EAASj5D,OAAQO,IACnC0G,KAAKssH,wBAAwBt6D,EAAS14D,IAI5Cu4B,SACE,MAAMo3E,EAAMD,YAAYC,MACxB,GAAI,8BAAiCA,EAAMjpG,KAAKurH,mBAC9C,OAGF,GADAvrH,KAAKurH,mBAAqBtiB,EAAMjpG,KAAKwrH,wBAChCxrH,KAAKqH,SAAS4kC,kBACjB,OAEEjsC,KAAKqH,SAAS60D,oBAChBl8D,KAAKssH,wBAAwBtsH,KAAKqH,SAAS60D,oBAE7C,MAAM,EAAEvjE,EAAC,EAAEC,EAAC,MAAEuQ,EAAK,OAAEC,GAAWpJ,KAAKqH,SAASM,KAAKw/G,yBAC3Ch+G,MAAOojH,EAAWnjH,OAAQojH,EAAU,WAAEl3G,GAAetV,KAAKqH,SAC5D6pE,EAAK/nE,EAAQojH,EAAYj3G,EACzB67D,EAAK/nE,EAASojH,EAAal3G,EACjC,IAAIq2G,EAAM3rH,KAAK2rH,IACfA,EAAI75F,MAAMwmB,KAAO,GAAG3/C,MACpBgzH,EAAI75F,MAAMymB,IAAM,GAAG3/C,MACnB+yH,EAAI75F,MAAM3oB,MAAQ,GAAGojH,MACrBZ,EAAI75F,MAAM1oB,OAAS,GAAGojH,MACtB,IAAK,IAAIlzH,EAAI,EAAGA,EAAI0G,KAAKgyD,SAASj5D,OAAQO,IAAK,CAC7C,MAAMsuE,EAAQ5nE,KAAKgyD,SAAS14D,GAC5B,GAAIsuE,EAAMsjD,WAAalrH,KAAKkrH,SAC1BtjD,EAAMijD,mBAAoB,EAC1B,iBAAkB7qH,KAAKgyD,SAAU14D,EAAG,GACpC0G,KAAK2rH,IAAInyD,YAAYoO,EAAMkjD,gBAC3B9qH,KAAKsrH,KAAK3xH,KAAKiuE,EAAMkjD,gBACrBljD,EAAMkjD,eAAiB,KACvBxxH,QACK,CACLqyH,EAAM/jD,EAAMkjD,eACZ,IAAIlkD,EAAUgB,EAAMhB,QACpB,MAAMyV,EAAKzU,EAAMnwB,eACbmwB,EAAMhB,SACR+kD,EAAI75F,MAAMwmB,MAAW+jC,EAAGh8B,GAAKumB,EAAQjuE,EAAI0jF,EAAGjgF,GAAK80E,EAAhC,KACjBy6C,EAAI75F,MAAMymB,KAAU8jC,EAAG/7B,GAAKsmB,EAAQhuE,EAAIyjF,EAAGv7E,GAAKqwE,EAAhC,KAChBw6C,EAAI75F,MAAM3oB,MAAWy9D,EAAQz9D,MAAQkzE,EAAGjgF,EAAI80E,EAA1B,KAClBy6C,EAAI75F,MAAM1oB,OAAYw9D,EAAQx9D,OAASizE,EAAGv7E,EAAIqwE,EAA3B,OAEnBvK,EAAUgB,EAAM3xB,YAChBj2C,KAAKysH,WAAW7lD,GAChB+kD,EAAI75F,MAAMwmB,KAAUsuB,EAAQjuE,EAAIu4E,EAAf,KACjBy6C,EAAI75F,MAAMymB,IAASquB,EAAQhuE,EAAIu4E,EAAf,KAChBw6C,EAAI75F,MAAM3oB,MAAWy9D,EAAQz9D,MAAQ+nE,EAAnB,KAClBy6C,EAAI75F,MAAM1oB,OAAYw9D,EAAQx9D,OAAS+nE,EAApB,KACfw6C,EAAIM,QAAUrkD,EAAM8iD,iBAA6C,OAA1B9iD,EAAM8iD,kBAC/CiB,EAAIM,MAAQrkD,EAAM8iD,iBAEhBiB,EAAIp0F,aAAa,gBAAkBqwC,EAAM+iD,gBAA2C,OAAzB/iD,EAAM+iD,gBACnEgB,EAAI/rD,aAAa,aAAcgI,EAAM+iD,iBAGrC/iD,EAAM8iD,kBAAoBiB,EAAIM,OAASrkD,EAAMgjD,WAAae,EAAIf,WAChEe,EAAIM,MAAQrkD,EAAM8iD,gBAClBiB,EAAIf,SAAWhjD,EAAMgjD,SACjB5qH,KAAKorH,OACPprH,KAAK0sH,gBAAgBf,KAI7B3rH,KAAKkrH,WAEPwB,gBAAgBf,GACdA,EAAIgB,UAAY,SAAShB,EAAIthH,qBAAqBshH,EAAIM,wBAAwBN,EAAIf,WAEpF6B,WAAW7lD,GACLA,EAAQjuE,EAAI,IACdiuE,EAAQz9D,OAASy9D,EAAQjuE,EACzBiuE,EAAQjuE,EAAI,GAEViuE,EAAQhuE,EAAI,IACdguE,EAAQx9D,QAAUw9D,EAAQhuE,EAC1BguE,EAAQhuE,EAAI,GAEd,MAAQuQ,MAAOojH,EAAWnjH,OAAQojH,GAAexsH,KAAKqH,SAClDu/D,EAAQjuE,EAAIiuE,EAAQz9D,MAAQojH,IAC9B3lD,EAAQz9D,MAAQojH,EAAY3lD,EAAQjuE,GAElCiuE,EAAQhuE,EAAIguE,EAAQx9D,OAASojH,IAC/B5lD,EAAQx9D,OAASojH,EAAa5lD,EAAQhuE,GAG1CqtE,SAASxf,GACP,IAAIklE,EAAM3rH,KAAKsrH,KAAKhgH,MACfqgH,IACHA,EAAMjsD,SAASC,cAAc,UAC7BgsD,EAAI75F,MAAM3oB,MAAQ,QAClBwiH,EAAI75F,MAAM1oB,OAAS,QACnBuiH,EAAI75F,MAAM0W,gBAAkBxoC,KAAKorH,MAAQ,wBAA0B,cACnEO,EAAI75F,MAAM6zC,SAAW,WACrBgmD,EAAI75F,MAAMq1C,OA/LS,GA+LiBlqD,WACpC0uG,EAAI75F,MAAM86F,YAAc,OACpB3nH,UAAUO,UAAUsG,cAAcE,SAAS,UAC7C2/G,EAAI/rD,aAAa,YAAa,OAE9B+rD,EAAI/rD,aAAa,YAAa,UAE5B36D,UAAUO,UAAUG,MAAM,gBAC5BgmH,EAAI/rD,aAAa,gBAAiB,aAElC+rD,EAAI/rD,aAAa,gBAAiB,QAEpC+rD,EAAI/iH,iBAAiB,QAAS5I,KAAK6sH,SAASl7F,KAAK3xB,OACjD2rH,EAAI/iH,iBAAiB,QAAS5I,KAAK8sH,SAASn7F,KAAK3xB,OACjD2rH,EAAI/iH,iBAAiB,WAAY5I,KAAK+sH,YAAYp7F,KAAK3xB,QAEzD2rH,EAAI75F,MAAMk7F,cAAgBvmE,EAAcukE,wBACxCW,EAAIthH,KAAOo8C,EAAcskE,eACrBtkE,EAAcikE,iBAAqD,OAAlCjkE,EAAcikE,gBACjDiB,EAAIM,MAAQxlE,EAAcikE,gBAChBjkE,EAAckkE,gBAAmD,OAAjClkE,EAAckkE,iBACxDgB,EAAIM,MAAQ,iBAAiBxlE,EAAcmkE,YAEzCnkE,EAAckkE,gBAAmD,OAAjClkE,EAAckkE,gBAChDgB,EAAI/rD,aAAa,aAAcnZ,EAAckkE,gBAE3C3qH,KAAKorH,OACPprH,KAAK0sH,gBAAgBf,GACvBllE,EAAcokE,mBAAoB,EAClCpkE,EAAcqkE,eAAiBa,EAC/BA,EAAIllE,cAAgBA,EACpBzmD,KAAKgyD,SAASr4D,KAAK8sD,GACnBzmD,KAAK2rH,IAAIxrD,YAAY1Z,EAAcqkE,gBACnCrkE,EAAcqkE,eAAeF,SAAWnkE,EAAcmkE,SAExDqC,eAAe1xH,EAAG8O,GAChB,MAAQo8C,cAAe34C,GAAWvS,EAAEuS,OAC9Bo/G,EAAUltH,KAAKqH,SAAS/E,OAAOmiH,aAC/B9iH,EAAQX,OAAOmG,OAAO,IAAIqyG,EAAe0T,GAAU,CAAEp/G,WAC3Do/G,EAAQnP,WAAa/9G,KAAKqH,SAAS60D,mBACnC7xD,EAAK9C,SAAS4lH,GAAUD,EAAQ9T,cAAcz3G,EAAOwrH,KAEvDN,SAAStxH,GACPyE,KAAKitH,eAAe1xH,EAAG,CAAC,QAAS,aAAc,QAEjDuxH,SAASvxH,GACFA,EAAEuS,OAAOypB,aAAa,cACzBh8B,EAAEuS,OAAO8xD,aAAa,YAAa,aAErC5/D,KAAKitH,eAAe1xH,EAAG,CAAC,cAE1BwxH,YAAYxxH,GACLA,EAAEuS,OAAOypB,aAAa,cACzBh8B,EAAEuS,OAAO8xD,aAAa,YAAa,UAErC5/D,KAAKitH,eAAe1xH,EAAG,CAAC,aAE1BqwH,WAAWrwH,GA5PQ,IA6PbA,EAAE6xH,SAGNptH,KAAKksH,WAEPL,aAAatwH,GACS,IAAhBA,EAAEwgH,WAAmC,IAAhBxgH,EAAEygH,WAG3Bh8G,KAAKqsH,aAEPxkH,UACE7H,KAAKmsH,mBACLnsH,KAAK2rH,IAAM,KACXnjH,WAAWk3D,SAASj3D,oBAAoB,YAAazI,KAAK6rH,cAAc,GACxErjH,WAAWC,oBAAoB,UAAWzI,KAAK4rH,YAC/C5rH,KAAKsrH,KAAO,KACZtrH,KAAKgyD,SAAW,KAChBhyD,KAAKqH,SAAW,MAGpB8jH,EAAqBxhH,UAAY,CAC/BpH,KAAM,gBACN8H,KAAM,CACJ,oBACA,4BAGJ,SAAe8gH,G,wBE/RXkC,EAAmC,CAAEC,IACvCA,EAAkBA,EAAgD,6BAAI,OAAS,+BAC/EA,EAAkBA,EAAiD,8BAAI,OAAS,gCAChFA,EAAkBA,EAAiD,8BAAI,OAAS,gCAChFA,EAAkBA,EAAiD,8BAAI,OAAS,gCAChFA,EAAkBA,EAAuD,oCAAI,OAAS,sCACtFA,EAAkBA,EAAuD,oCAAI,OAAS,sCACtFA,EAAkBA,EAAuD,oCAAI,OAAS,sCACtFA,EAAkBA,EAAiD,8BAAI,OAAS,gCAChFA,EAAkBA,EAAsC,mBAAI,OAAS,qBACrEA,EAAkBA,EAA6C,0BAAI,OAAS,4BAC5EA,EAAkBA,EAAuC,oBAAI,OAAS,sBACtEA,EAAkBA,EAA8C,2BAAI,OAAS,6BAC7EA,EAAkBA,EAAwC,qBAAI,OAAS,uBACvEA,EAAkBA,EAA6C,0BAAI,OAAS,4BAC5EA,EAAkBA,EAAyC,sBAAI,OAAS,wBACxEA,EAAkBA,EAAoD,iCAAI,OAAS,mCACnFA,EAAkBA,EAA4D,yCAAI,OAAS,2CAC3FA,EAAkBA,EAA6D,0CAAI,OAAS,4CAC5FA,EAAkBA,EAAmD,gCAAI,OAAS,kCAClFA,EAAkBA,EAAoD,iCAAI,OAAS,mCACnFA,EAAkBA,EAAmD,gCAAI,OAAS,kCAClFA,EAAkBA,EAAoD,iCAAI,OAAS,mCACnFA,EAAkBA,EAA6C,0BAAI,OAAS,4BAC5EA,EAAkBA,EAA4C,yBAAI,OAAS,2BAC3EA,EAAkBA,EAA4D,yCAAI,OAAS,2CAC3FA,EAAkBA,EAAgE,6CAAI,OAAS,+CAC/FA,EAAkBA,EAAgD,6BAAI,OAAS,+BACxEA,GA5B8B,CA6BpCD,GAAoB,IACvB,MAAME,EAAqC,CACzC,MAA4C,GAC5C,MAA6C,GAC7C,MAA6C,EAC7C,MAA6C,EAC7C,MAA6C,GAC7C,MAAmD,GACnD,MAAmD,EACnD,MAAmD,EACnD,MAAkC,GAClC,MAAyC,GACzC,MAAmC,EACnC,MAA0C,EAC1C,MAAoC,GACpC,MAAyC,EACzC,MAAqC,GACrC,MAAgD,EAChD,MAAwD,GACxD,MAAyD,GACzD,MAA+C,GAC/C,MAAgD,GAChD,MAA+C,IAC/C,MAAgD,IAChD,MAAyC,GACzC,MAAwC,GACxC,MAAwD,EACxD,MAA4D,EAC5D,MAA4C,GCvD9C,IAAIC,EACAjkF,EACJ,SAASkkF,IACPlkF,EAAa,CACXsB,KAAM2iF,EAASpyF,aAAa,iCAC5B0P,UAAW0iF,EAASpyF,aAAa,sCACjC2P,IAAKyiF,EAASpyF,aAAa,gCAC3B4P,KAAMwiF,EAASpyF,aAAa,iCAC5B6P,MAAOuiF,EAASpyF,aAAa,mCAAqCoyF,EAASpyF,aAAa,yCACxF8P,IAAKsiF,EAASpyF,aAAa,gCAC3B+P,KAAMqiF,EAASpyF,aAAa,kCAGhC,MAAMsyF,EAA2B,CAC/B/jH,UAAW,CACTU,KAAM,qBACN8F,SAAU,GAEZtK,KAAMsF,UACJ,MACMsnB,EADS,4BACG0I,WAAW,SAC7B,OAAK1I,GAIL+6F,EAAW/6F,GACJ,IAJL1nB,QAAQ8B,KAAK,iDACN,IAKXhC,IAAKM,MAAOoP,IACLgvB,GACHkkF,IACF,MAAME,EAAiB,GACvB,IAAK,MAAMC,KAAiBrkF,EAAY,CACpBA,EAAWqkF,IAI7BD,EAAeh0H,KAAKi0H,GAEtB,MAAO,IAAID,KAAmBpzG,IAEhChN,OAAQpC,MAAOoP,IACRgvB,GACHkkF,IACKlzG,EAAQpQ,QAAQ0R,KAAQA,KAAK0tB,OAGxC,SAAiBmkF,GC/CjB,MAAMG,UAAqB,KACzB7mH,YAAYkpB,EAAQjpB,EAAU,CAAEkC,MAAO,EAAGC,OAAQ,EAAGylC,UAAU,IAC7D,IAAIi/E,EACA11H,EACkB,kBAAX83B,GACT49F,EAAS59F,EACT93B,EAAO,IAAI4yB,aAEX8iG,EAAS,KACT11H,EAAO83B,GAEToC,MAAMl6B,EAAM6O,GACZjH,KAAK8tH,OAASA,EACd9tH,KAAK+tB,OAAS31B,EAAO,IAAI,KAAeA,GAAQ,KAChD4H,KAAK4uC,MAAQ,KACb5uC,KAAK+tH,QAAS,EACM,OAAhB/tH,KAAK8tH,SAAwC,IAArB7mH,EAAQ4nC,UAClC7uC,KAAKuL,OAEa,OAAhBvL,KAAK8tH,QAAmB9tH,KAAK+tB,SAC/B/tB,KAAK4uC,MAAQx/B,QAAQ2D,QAAQ/S,MAC7BA,KAAK+tH,QAAS,EACd/tH,KAAKguH,aAAahuH,KAAK+tB,OAAOD,gBAGlCkgG,aAAaC,IAEb1iH,OACE,OAAIvL,KAAK4uC,QAGT5uC,KAAK4uC,MAAQM,MAAMlvC,KAAK8tH,QAAQ7yG,MAAM5K,GAAaA,EAAS8E,SAAQ8F,MAAM9F,GAASA,EAAK+4G,gBAAejzG,MAAMizG,IAC3GluH,KAAK5H,KAAO,IAAI61B,YAAYigG,GAC5BluH,KAAK+tB,OAAS,IAAI,KAAemgG,GACjCluH,KAAK+tH,QAAS,EACd/tH,KAAKguH,aAAaE,GAClBluH,KAAK6xB,SACE7xB,SARAA,KAAK4uC,OC5BlB,MAAMu/E,UAAkCN,EACtC7mH,YAAYkpB,EAAQjpB,GAClBqrB,MAAMpC,EAAQjpB,GACdjH,KAAKiZ,OAAShS,EAAQgS,OACtBjZ,KAAKouH,OAASnnH,EAAQmnH,QAAU,EAChCpuH,KAAKoxB,OAASnqB,EAAQkC,MACtBnJ,KAAKqxB,QAAUpqB,EAAQmC,OACvBpJ,KAAKoyB,WAAa+7F,EAA0BE,mBAAmBruH,KAAKiZ,SAChEhS,EAAQqnH,cAAgBtuH,KAAK+tB,UAC/B/tB,KAAKuuH,cAAgBtnH,EAAQqnH,cAAgBH,EAA0BK,oBAAoBt+F,aAAkBlF,WAAakF,EAASlwB,KAAK+tB,OAAOO,UAAWtuB,KAAKiZ,OAAQjZ,KAAKouH,OAAQ,EAAG,EAAGpuH,KAAKmJ,MAAOnJ,KAAKoJ,SAG/MmpB,OAAOlrB,EAAU28B,EAAU/R,GACzB,MAAMQ,EAAKprB,EAASorB,GAEpB,IADkBprB,EAAS9F,QAAQgoC,WAAWvpC,KAAKoyB,YAEjD,MAAM,IAAIjjB,MAAM,GAAGnP,KAAKoyB,gEAE1B,IAAKpyB,KAAKuuH,cACR,OAAO,EAET,IAAK,IAAIj1H,EAAI,EAAG4G,EAAIF,KAAKouH,OAAQ90H,EAAI4G,EAAG5G,IAAK,CAC3C,MAAM,QAAEm1H,EAAO,WAAEC,EAAU,YAAEC,EAAW,YAAEC,GAAgB5uH,KAAKuuH,cAAcj1H,GAC7Em5B,EAAGo8F,qBAAqBp8F,EAAG4b,WAAYogF,EAASzuH,KAAKiZ,OAAQy1G,EAAYC,EAAa,EAAGC,GAE3F,OAAO,EAETZ,eACEhuH,KAAKuuH,cAAgBJ,EAA0BK,oBAAoBxuH,KAAK+tB,OAAOO,UAAWtuB,KAAKiZ,OAAQjZ,KAAKouH,OAAQ,EAAG,EAAGpuH,KAAKmJ,MAAOnJ,KAAKoJ,QAE7IhB,0BAA0B6Q,GACxB,GAAIA,GAAU,OAASA,GAAU,MAC/B,MAAO,OACF,GAAIA,GAAU,OAASA,GAAU,MACtC,MAAO,MACF,GAAIA,GAAU,OAASA,GAAU,MACtC,MAAO,QACF,GAAIA,GAAU,MACnB,MAAO,OACF,GAAIA,GAAU,OAASA,GAAU,MACtC,MAAO,MAET,MAAM,IAAI9J,MAAM,8CAElB/G,2BAA2B2lB,EAAQ9U,EAAQm1G,EAAQU,EAAYC,EAAaC,EAAYC,GACtF,MAAMn4F,EAAU,IAAI7zB,MAAMmrH,GAC1B,IAAIx1F,EAAS7K,EAAOmhG,WAChBR,EAAaM,EACbL,EAAcM,EACdE,EAAoBT,EAAaI,EAAa,IAAMA,EAAa,GACjEM,EAAqBT,EAAcI,EAAc,IAAMA,EAAc,GACrEM,EAAYF,EAAoBC,EAAqB7B,EAAmCt0G,GAC5F,IAAK,IAAI3f,EAAI,EAAGA,EAAI80H,EAAQ90H,IAC1Bw9B,EAAQx9B,GAAK,CACXm1H,QAASn1H,EACTo1H,WAAYN,EAAS,EAAIM,EAAaS,EACtCR,YAAaP,EAAS,EAAIO,EAAcS,EACxCR,YAAa,IAAI5jG,WAAW+C,EAAOA,OAAQ6K,EAAQy2F,IAErDz2F,GAAUy2F,EACVX,EAAaA,GAAc,GAAK,EAChCC,EAAcA,GAAe,GAAK,EAClCQ,EAAoBT,EAAaI,EAAa,IAAMA,EAAa,GACjEM,EAAqBT,EAAcI,EAAc,IAAMA,EAAc,GACrEM,EAAYF,EAAoBC,EAAqB7B,EAAmCt0G,GAE1F,OAAO6d,GCjEX,MACMw4F,EAAkB,IAIlBC,EAGI,EAHJA,EAIG,EAJHA,EAKU,EALVA,EAMU,GAEVC,EAGI,EAOJC,EACS,EADTA,EAEgB,EAFhBA,EAGO,EAHPA,EAIQ,EAsId,MAWMC,EAAmB,CACvB,UAAerC,EAAiBsC,8BAChC,UAAetC,EAAiBuC,8BAChC,UAAevC,EAAiBwC,+BAE5BC,EAAiB,CACrB,GAAqCzC,EAAiBsC,8BACtD,GAAkCtC,EAAiBsC,8BACnD,GAAqCtC,EAAiBuC,8BACtD,GAAkCvC,EAAiBuC,8BACnD,GAAqCvC,EAAiBwC,8BACtD,GAAkCxC,EAAiBwC,8BACnD,GAAuCxC,EAAiB0C,oCACxD,GAAuC1C,EAAiB2C,oCACxD,GAAuC3C,EAAiB4C,qCCzL1D,MAAMC,EAAkB,CAAC,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAEjEC,GAEQ,GAFRA,GAGK,GAHLA,GAKO,GALPA,GAMgB,GANhBA,GAQS,GARTA,GASU,GATVA,GAUS,GAVTA,GAWsB,GAXtBA,GAYa,GAZbA,GAaqB,GAbrBA,GAcqB,GAGrBC,GAA+B,CACnC,CAAC,oBAAsB,EACvB,CAAC,qBAAuB,EACxB,CAAC,UAAY,EACb,CAAC,mBAAqB,EACtB,CAAC,YAAc,EACf,CAAC,iBAAmB,GAEhBC,GAAwB,CAC5B,CAAC,WAAe,EAChB,CAAC,UAAc,EACf,CAAC,SAAa,EACd,CAAC,UAAc,EACf,CAAC,gBAAoB,EACrB,CAAC,sBAA0B,EAC3B,CAAC,YAAgB,GAEbC,GAA2B,CAC/B,CAAC,6BAA+B,EAChC,CAAC,6BAA+B,EAChC,CAAC,2BAA6B,GAEhC,SAASC,GAAS5kH,EAAKuiH,EAAasC,GAAmB,GACrD,MAAMC,EAAW,IAAIC,SAASxC,GAC9B,IAkHF,SAAkBviH,EAAK8kH,GACrB,IAAK,IAAIn3H,EAAI,EAAGA,EAAI42H,EAAgBn3H,OAAQO,IAC1C,GAAIm3H,EAASE,SAASr3H,KAAO42H,EAAgB52H,GAE3C,OADAyR,QAAQ+I,MAAM,GAAGnI,iCACV,EAGX,OAAO,EAzHF4xF,CAAS5xF,EAAK8kH,GACjB,OAAO,KAET,MAAMG,EA7CW,WA6CIH,EAASI,UAAUV,IAAuB,GACzD3wE,EAASixE,EAASI,UAAUV,GAAoBS,GAChDE,EAAWL,EAASI,UAAUV,GAAsBS,GACpDG,EAAmBN,EAASI,UAAUV,GAA+BS,GACrEI,EAAaP,EAASI,UAAUV,GAAwBS,GACxDK,EAAcR,EAASI,UAAUV,GAAyBS,IAAiB,EAC3EM,EAAaT,EAASI,UAAUV,GAAwBS,IAAiB,EACzEO,EAAwBV,EAASI,UAAUV,GAAqCS,IAAiB,EACjGQ,EAAgBX,EAASI,UAAUV,GAA4BS,GAC/DS,EAAuBZ,EAASI,UAAUV,GAAoCS,GAC9EU,EAAsBb,EAASI,UAAUV,GAAoCS,GACnF,GAAoB,IAAhBK,GAAoC,IAAfC,EACvB,MAAM,IAAI/hH,MAAM,kCAElB,GAAsB,IAAlBiiH,EACF,MAAM,IAAIjiH,MAAM,oDAElB,GAA8B,IAA1BgiH,EACF,MAAM,IAAIhiH,MAAM,yCAElB,MAEMoiH,EAAeP,EAAa,GAAI,EAChCQ,EAAgBP,EAAc,GAAI,EAClCQ,EAAe,IAAIxuH,MAAMkuH,GAC/B,IAIIO,EAJAC,EAAcX,EAAaC,EAc/B,GAbe,IAAXzxE,IACFmyE,EAAcJ,EAAeC,GAK3BE,EAFW,IAAXlyE,EACE4wE,GAA6B5wE,GACV4wE,GAA6B5wE,GAAU6wE,GAAsBS,GAE7DR,GAAyB9wE,GAG3B+tE,EAAmCwD,QAE/B,IAAvBW,EACF,MAAM,IAAIviH,MAAM,gEAElB,MAAMyiH,EAASpB,EA4FjB,SAAqBC,EAAUa,EAAqBV,GAClD,MAAMgB,EAAyB,IAAInlH,IACnC,IAAIolH,EAAwB,EAC5B,KAAOA,EAAwBP,GAAqB,CAClD,MAAMQ,EAAsBrB,EAASI,UAtKhB,GAsK6CgB,EAAuBjB,GACnFmB,EAvKe,GAuK4BF,EAAwB,EACnEG,EAAe,GAAKF,EAAsB,GAAK,EACrD,GAA4B,IAAxBA,GAA6BA,EAAsBR,EAAsBO,EAAuB,CAClG9mH,QAAQ+I,MAAM,gDACd,MAEF,IAAIm+G,EAAa,EACjB,KAAOA,EAAaH,GAC4C,IAA1DrB,EAASE,SAASoB,EAAwBE,GADPA,KAKzC,IAAoB,IAAhBA,EAAmB,CACrBlnH,QAAQ+I,MAAM,8DACd,MAEF,MAAM1J,GAAM,IAAI8nH,aAAcC,OAAO,IAAInnG,WAAWylG,EAAS1iG,OAAQgkG,EAAuBE,IACtFxmH,EAAQ,IAAIilH,SAASD,EAAS1iG,OAAQgkG,EAAwBE,EAAa,EAAGH,EAAsBG,EAAa,GACvHL,EAAOtpH,IAAI8B,EAAKqB,GAChBomH,GAAyB,EAAIC,EAAsBE,EAErD,OAAOJ,EAtH2BQ,CAAY3B,EAAUa,EAAqBV,GAAgB,KAE7F,IAAIyB,EADkBV,EAAcD,EAEhCp3E,EAAW02E,EACXz2E,EAAY02E,EACZqB,EAAkBf,EAClBgB,EAAmBf,EACnBgB,EA7EmB,GA6EclB,EACrC,IAAK,IAAImB,EAAc,EAAGA,EAAcpB,EAAsBoB,IAAe,CAC3E,MAAMC,EAAYjC,EAASI,UAAU2B,EAAa5B,GAClD,IAAI+B,EAAgBH,EAAc,EAClC,IAAK,IAAII,EAAe,EAAGA,EAAezB,EAAuByB,IAAgB,CAC/E,IAAIC,EAAOpB,EAAamB,GACnBC,IACHA,EAAOpB,EAAamB,GAAgB,IAAI3vH,MAAMouH,IAEhDwB,EAAKJ,GAAe,CAClBhE,QAASgE,EACT/D,WAAY2C,EAAuB,GAAgB,IAAX7xE,EAAelF,EAAWg4E,EAClE3D,YAAa0C,EAAuB,GAAgB,IAAX7xE,EAAejF,EAAYg4E,EACpE3D,YAAa,IAAI5jG,WAAWkjG,EAAayE,EAAeN,IAE1DM,GAAiBN,EAEnBG,GAAeE,EAAY,EAC3BF,EAAcA,EAAc,IAAM,EAAIA,EAAc,EAAIA,EAAc,EAAIA,EAC1El4E,EAAWA,GAAY,GAAK,EAC5BC,EAAYA,GAAa,GAAK,EAC9B+3E,EAAkBh4E,EAlDD,EAkDyB,GAAI,EAC9Ci4E,EAAmBh4E,EAlDD,EAkD2B,GAAI,EACjD83E,EAAcC,EAAkBC,EAAmBb,EAErD,OAAe,IAAXlyE,EACK,CACLszE,aAAcrB,EAAarlH,KAAKkiH,IAC9B,IAAIvgG,EAASugG,EAAa,GAAGM,YACzBmE,GAAe,EAUnB,OATIvzE,IAAW,WACbzxB,EAAS,IAAIhF,aAAaulG,EAAa,GAAGM,YAAY7gG,OAAQugG,EAAa,GAAGM,YAAYM,WAAYZ,EAAa,GAAGM,YAAY3zD,WAAa,GACtIzb,IAAW,mBACpBuzE,GAAe,EACfhlG,EAAS,IAAIE,YAAYqgG,EAAa,GAAGM,YAAY7gG,OAAQugG,EAAa,GAAGM,YAAYM,WAAYZ,EAAa,GAAGM,YAAY3zD,WAAa,IACrIzb,IAAW,WACpBuzE,GAAe,EACfhlG,EAAS,IAAIiB,WAAWs/F,EAAa,GAAGM,YAAY7gG,OAAQugG,EAAa,GAAGM,YAAYM,WAAYZ,EAAa,GAAGM,YAAY3zD,WAAa,IAExI,CACL1lD,SAAU,IAAI,KAAewY,EAAQ,CACnC5kB,MAAOmlH,EAAa,GAAGI,WACvBtlH,OAAQklH,EAAa,GAAGK,cAE1BtkH,KAAMm1C,EACNvmC,OAAQ85G,EAAeC,GAAuBlC,GAAYA,MAG9Dc,UAGG,CACLqB,WAAYxB,EAAarlH,KAAKkiH,GAAiB,IAAIH,EAA0B,KAAM,CACjFl1G,OAAQ83G,EACR5nH,MAAO6nH,EACP5nH,OAAQ6nH,EACR7C,OAAQiD,EACR/C,mBAEFsD,UAYJ,SAASoB,GAAuB/5G,GAC9B,OAAQA,GACN,KAAK,UACH,OAAO,kBACT,KAAK,SACH,OAAO,iBACT,KAAK,QACH,OAAO,gBACT,KAAK,SACH,OAAO,iBACT,QACE,OAAOA,GCjLb,MAAMi6G,GAAU,CACdvpH,UAAW,CACTU,KAAM,gBACN8F,SAAU,WAEZ5N,KAAM,UACNsD,KAAK8F,IACI,QAAeA,EAAK,QAE7BR,WAAWQ,EAAKuC,EAAOrE,GACrB,MAAMwG,QAAiB,mBAAuB1E,GAExC2xD,EF+KV,SAAkB4wD,GAChB,MAAM91H,EAAO,IAAI61B,YAAYigG,GAE7B,GA3LgB,YA0LE91H,EAAK,GAErB,MAAM,IAAI+W,MAAM,+BAElB,MAAMgkH,EAAS,IAAIllG,YAAYigG,EAAa,EAAGoB,EAAkBrhG,YAAYsxB,mBACvEn2C,EAAS+pH,EAAO5D,GAChBpmH,EAAQgqH,EAAO5D,GACf6D,EAAcD,EAAO5D,GACrB8D,EAAc,IAAIplG,YAAYigG,EAAaqB,EAA0BthG,YAAYsxB,kBApM9D,GAoMsGtxB,YAAYsxB,mBACrI+zE,EAAcD,EAtCL,GAuCf,GArCkB,EAqCdC,EAA2B,CAC7B,MAAMC,EAASF,EAAY7D,GAC3B,GAhCgB,YAgCZ+D,EAAwB,CAC1B,MAAMC,EAAkB9D,EAAiB6D,GAEnCE,EAAU,IAAIzoG,WAAWkjG,EADXwF,KAQpB,MAAO,CANU,IAAIvF,EAA0BsF,EAAS,CACtDx6G,OAAQu6G,EACRrqH,QACAC,SACAglH,OAAQgF,KAIZ,MAAMO,EAAaD,IACbE,EAAa,IAAI3lG,YAAY71B,EAAK21B,OAAQ4lG,EApNvB,GAoN0D1lG,YAAYsxB,mBACzFs0E,EAAaD,EAAWnE,GACxBqE,EAAoBF,EAAWnE,GAC/BsE,EAAWH,EAAWnE,GACtBuE,EAAYJ,EAAWnE,GACvBx8F,EAAiB68F,EAAe+D,GACtC,QAAuB,IAAnB5gG,EACF,MAAM,IAAI9jB,MAAM,wDAAwD0kH,KAE1E,GArDkC,IAqD9BE,EACF,MAAM,IAAI5kH,MAAM,+CAElB,GAA0B,IAAtB2kH,EACF,MAAM,IAAI3kH,MAAM,gDAElB,MAAMsiH,EAAe,IAAIxuH,MACnBgxH,EAAaP,IACnB,GAAkB,IAAdM,EACFvC,EAAa93H,KAAK,IAAIqxB,WAAWkjG,EAAa+F,QACzC,CACL,MAAMC,EAAY3G,EAAmCt6F,GACrD,IAAIy/F,EAAY,EACZhE,EAAavlH,EACbwlH,EAAcvlH,EAClB,IAAK,IAAI9P,EAAI,EAAGA,EAAI85H,EAAa95H,IAI/Bo5H,GAH0Bz4H,KAAKC,IAAI,EAAGw0H,EAAa,GAAI,GAC5Bz0H,KAAKC,IAAI,EAAGy0H,EAAc,GAAI,GACEuF,EAE3DxF,KAA4B,EAC5BC,KAA8B,EAEhC,IAAI6D,EAAcyB,EAClB,IAAK,IAAI36H,EAAI,EAAGA,EAAI06H,EAAW16H,IAC7Bm4H,EAAa93H,KAAK,IAAIqxB,WAAWkjG,EAAasE,EAAaE,IAC3DF,GAAeE,EAGnB,OAAOjB,EAAarlH,KAAK2hB,GAAW,IAAIogG,EAA0BpgG,EAAQ,CACxE9U,OAAQga,EACR9pB,QACAC,SACAglH,OAAQgF,MAGZ,GAhGe,GAgGXE,EACF,MAAM,IAAInkH,MAAM,yDAElB,GAlGe,IAkGXmkH,EACF,MAAM,IAAInkH,MAAM,+DAElB,GApGqB,OAoGjBmkH,EACF,MAAM,IAAInkH,MAAM,wEAElB,GA3GiB,EA2GbmkH,EACF,MAAM,IAAInkH,MAAM,mEAElB,MAAM,IAAIA,MAAM,qEEnQIglH,OADQ9jH,EAAS69G,eAE7B9pF,EAAWk5B,EAAUlxD,KAAKmJ,IAC9B,MAAMlB,EAAO,IAAI,KAAYkB,EAAU,CACrC+d,OAAQ,SACRV,UAAW,4BACXtd,WAAY,wBAAyB3J,MAClCuC,EAAM9V,OAEX,OAAO,QAAcic,EAAMxK,EAAQ8B,MAErC,OAA2B,IAApBy4B,EAASrrC,OAAeqrC,EAAS,GAAKA,GAE/C30B,OAAOpC,GACDpK,MAAM8I,QAAQsB,GAChBA,EAAQ9F,SAASyK,GAAMA,EAAEnK,SAAQ,KAEjCwF,EAAQxF,SAAQ,KAItB,SAAeqrH,IChCf,MAAMkB,GAAU,CACdzqH,UAAW,CACTU,KAAM,gBACN8F,SAAU,WAEZ5N,KAAM,UACNsD,KAAK8F,IACI,QAAeA,EAAK,QAE7BR,WAAWQ,EAAKuC,EAAOrE,GACrB,MAAMwG,QAAiB,mBAAuB1E,GACxCuiH,QAAoB79G,EAAS69G,eAC7B,WAAE+E,EAAU,aAAEH,EAAY,OAAElB,GAAWrB,GAAS5kH,EAAKuiH,GACrD5wD,EAAY21D,GAAcH,EAC1B7rH,EAAU,CACdqsB,OAAQ,SACRV,UAAW,4BACXtd,WAAY,wBAAyB3J,MAClCuC,EAAM9V,MAELgsC,EAAWk5B,EAAUlxD,KAAKmJ,IAC1B+nD,IAAcw1D,GAChB9xH,OAAOmG,OAAOF,EAAS,CACrBoD,KAAMkL,EAASlL,KACf4O,OAAQ1D,EAAS0D,SAGrB,MAAM5E,EAAO,IAAI,KAAYkB,EAAUtO,GAEvC,OADAoN,EAAKggH,gBAAkBzC,GAChB,QAAcv9G,EAAMxK,EAAQ8B,MAErC,OAA2B,IAApBy4B,EAASrrC,OAAeqrC,EAAS,GAAKA,GAE/C30B,OAAOpC,GACDpK,MAAM8I,QAAQsB,GAChBA,EAAQ9F,SAASyK,GAAMA,EAAEnK,SAAQ,KAEjCwF,EAAQxF,SAAQ,KAItB,SAAeusH,IC5Cf,MAAME,GAA8B,CAClC3qH,UAAW,mBACX9D,KAAO4F,IACL,MACM9B,EADO8B,EAAM/F,MAAM,KAAK,GACPA,MAAM,KAAK4F,MAClC,MAAO,CAAC,QAAS,MAAO,OAAOU,SAASrC,IAE1C4E,MAAQ9C,IAGN,GAAkB,QAFLA,EAAM/F,MAAM,KAAK,GACPA,MAAM,KAAK4F,MACT,CACvB,MAAM8+D,EAAc,CAClB,YACA,iBACA,WACA,YACA,YACA,WACA,aAEF,GAAIA,EAAYmqD,MAAM1oH,GAAQJ,EAAMsgG,SAASlgG,KAC3C,MAAO,CACLyJ,WAAY4G,WAAW,wBAA4BzQ,KAAS,IAAM,KAClEwN,OAAQmxD,EAAYrwD,MAAMlO,GAAQJ,EAAMsgG,SAASlgG,KACjDmD,IAAKvD,GAIX,MAAO,CACL6J,WAAY4G,WAAW,wBAA4BzQ,KAAS,IAAM,KAClEwN,OAAQxN,EAAM/F,MAAM,KAAK4F,MACzB0D,IAAKvD,KAIX,SAAe6oH,ICnCf,MAAME,GAAY,IAAI,KAEhBC,GAAW,MACfztH,YAAYK,GACVrH,KAAKqH,SAAWA,EAElB8D,YAAY2C,EAAQmL,EAAQ66F,GAC1B,MAAM4gB,EAAQ,IAAIt/G,MAElB,OADAs/G,EAAM1lH,UAAYhP,KAAK20H,OAAO7mH,EAAQmL,EAAQ66F,GACvC4gB,EAETvpH,aAAa2C,EAAQmL,EAAQ66F,GAC3B,MAAM54E,EAASl7B,KAAKk7B,OAAOptB,GAC3B,QAAsB,IAAlBotB,EAAO05F,OACT,OAAO,IAAIxlH,SAAQ,CAAC2D,EAASiB,KAC3BknB,EAAO05F,QAAQz/G,IACb,IAAKA,EAEH,YADAnB,EAAO,IAAI7E,MAAM,2BAGnB,MAAM0lH,EAAS,IAAIC,WACnBD,EAAOx/G,OAAS,IAAMtC,EAAQ8hH,EAAOp0H,QACrCo0H,EAAO9lF,QAAU/6B,EACjB6gH,EAAOE,cAAc5/G,KACpB8D,EAAQ66F,MAGf,QAAyB,IAArB54E,EAAO85F,UACT,OAAO95F,EAAO85F,UAAU/7G,EAAQ66F,GAElC,QAA6B,IAAzB54E,EAAO+5F,cAA0B,CACnC,MAAM9/G,QAAa+lB,EAAO+5F,cAAc,CAAE5qH,KAAM4O,EAAQ66F,YACxD,OAAO,IAAI1kG,SAAQ,CAAC2D,EAASiB,KAC3B,MAAM6gH,EAAS,IAAIC,WACnBD,EAAOx/G,OAAS,IAAMtC,EAAQ8hH,EAAOp0H,QACrCo0H,EAAO9lF,QAAU/6B,EACjB6gH,EAAOE,cAAc5/G,MAGzB,MAAM,IAAIhG,MAAM,2GAElB+rB,OAAOptB,EAAQiiC,GACb,MAAM,OAAEkyD,EAAM,MAAE94F,EAAK,OAAEC,EAAM,MAAE8rH,GAAUl1H,KAAKm1H,WAAWrnH,EAAQiiC,GAC7DmlF,GACFT,GAASW,OAAOnzB,EAAQ94F,EAAOC,GAEjCqrH,GAASY,oBAAoBpzB,GAC7B,MAAMqzB,EAAe,IAAI,wBAAyBnsH,EAAOC,EAAQ,GAC3DmsH,EAAY,IAAIC,UAAU,IAAIvqG,kBAAkBg3E,EAAOl0E,QAAS5kB,EAAOC,GAE7E,OADAksH,EAAa/zH,QAAQ2lG,aAAaquB,EAAW,EAAG,GACzCD,EAAap6F,OAEtB+mE,OAAOn0F,EAAQiiC,GACb,MAAM,OAAEkyD,EAAM,MAAE94F,EAAK,OAAEC,EAAM,MAAE8rH,GAAUl1H,KAAKm1H,WAAWrnH,EAAQiiC,GAKjE,OAJImlF,GACFT,GAASW,OAAOnzB,EAAQ94F,EAAOC,GAEjCqrH,GAASY,oBAAoBpzB,GACtBA,EAETkzB,WAAWrnH,EAAQiiC,GACjB,MAAM1oC,EAAWrH,KAAKqH,SACtB,IAAKA,EACH,MAAM,IAAI8H,MAAM,0CAElB,IAAImG,EAEAi+B,EADA2hF,GAAQ,EAERO,GAAY,EAYhB,GAXI3nH,IACEA,aAAkB,KACpBylC,EAAgBzlC,GAEhBylC,EAAgBlsC,EAASm/C,gBAAgB14C,EAAQ,CAC/CwH,WAAYjO,EAASiO,WACrBoyB,YAAargC,EAASqgC,cAExB+tF,GAAY,IAGZliF,GAIF,GAHAj+B,EAAai+B,EAAcjmC,YAAYgI,WACvCy6B,EAAQA,GAASwD,EAAcxD,MAC/BmlF,GAAQ,GACHO,EAAW,CACdpuH,EAASksC,cAAc5hB,KAAK4hB,GAC5B,MAAMyG,EAAMzG,EAAcnG,YAAYT,eAAetlC,EAASwiC,aAC1DmQ,EAAInB,iBACNxxC,EAAS+lC,YAAYzb,KAAKqoB,EAAInB,uBAIlCvjC,EAAajO,EAASiO,WACjBy6B,KACHA,EAAQykF,IACFrrH,MAAQ9B,EAAS8B,MAAQmM,EAC/By6B,EAAM3mC,OAAS/B,EAAS+B,OAASkM,GAEnC4/G,GAAQ,EACR7tH,EAASksC,cAAc5hB,OAEzB,MAAMxoB,EAAQlP,KAAK0iB,MAAMozB,EAAM5mC,MAAQmM,GACjClM,EAASnP,KAAK0iB,MAAMozB,EAAM3mC,OAASkM,GACnC2sF,EAAS,IAAIj3E,WAtGC,EAsG4B7hB,EAAQC,GAClDqpB,EAAKprB,EAASorB,GAKpB,OAJAA,EAAGijG,WAAWz7H,KAAK0iB,MAAMozB,EAAMp3C,EAAI2c,GAAarb,KAAK0iB,MAAMozB,EAAMn3C,EAAI0c,GAAanM,EAAOC,EAAQqpB,EAAGujC,KAAMvjC,EAAG6jC,cAAe2rC,GACxHwzB,GACFliF,GAAe1rC,SAAQ,GAElB,CAAEo6F,SAAQ94F,QAAOC,SAAQ8rH,SAElCrtH,UACE7H,KAAKqH,SAAW,KAElBe,cAAc65F,EAAQ94F,EAAOC,GAC3B,MAAMuV,EAAIxV,GAAS,EACb+T,EAAI9T,GAAU,EACdghB,EAAO,IAAIY,WAAWrM,GAC5B,IAAK,IAAI/lB,EAAI,EAAGA,EAAIskB,EAAGtkB,IAAK,CAC1B,MAAMoZ,EAAIpZ,EAAI+lB,EACRtiB,GAAK+M,EAASxQ,EAAI,GAAK+lB,EAC7ByL,EAAK9hB,IAAI25F,EAAO0zB,SAAS3jH,EAAGA,EAAI2M,IAChCsjF,EAAO2zB,WAAW5jH,EAAG3V,EAAGA,EAAIsiB,GAC5BsjF,EAAO35F,IAAI8hB,EAAM/tB,IAGrB+L,2BAA2B65F,GACrBA,aAAkBh3E,oBACpBg3E,EAAS,IAAIj3E,WAAWi3E,EAAOl0E,SAEjC,MAAM3wB,EAAI6kG,EAAOlpG,OACjB,IAAK,IAAIO,EAAI,EAAGA,EAAI8D,EAAG9D,GAAK,EAAG,CAC7B,MAAM6lB,EAAQ8iF,EAAO3oG,EAAI,GACzB,GAAc,IAAV6lB,EAAa,CACf,MAAM/iB,EAAI,QAAU+iB,EACpB8iF,EAAO3oG,GAAK2oG,EAAO3oG,GAAK8C,EAAI,GAC5B6lG,EAAO3oG,EAAI,GAAK2oG,EAAO3oG,EAAI,GAAK8C,EAAI,GACpC6lG,EAAO3oG,EAAI,GAAK2oG,EAAO3oG,EAAI,GAAK8C,EAAI,OAK5C,IAAIy5H,GAAUpB,GACdoB,GAAQlsH,UAAY,CAClBpH,KAAM,UACN8H,KAAM,qBAER,SAAewrH,I,sECnJf,MAAMC,GAAe,MACnB9uH,YAAYqG,EAASjV,EAAM29H,EAAqB,MAC9C/1H,KAAKg2H,aAAe,GACpBh2H,KAAKgkC,SAAW32B,aAAmB,KAAUA,EAAU,KACvDrN,KAAKsN,YAAcD,aAAmB,KAAcA,EAAUrN,KAAKgkC,SAAS12B,YAC5EtN,KAAKokC,SAAW,GAChBpkC,KAAKi2H,WAAa,GAClBj2H,KAAK5H,KAAOA,EACZ,MAAMmd,EAAWvV,KAAKsN,YAAYiI,SAClCvV,KAAKsV,WAAatV,KAAKk2H,kBAAkBH,IAAuBxgH,EAAWA,EAAS5J,IAAM,OAC1F3L,KAAKm2H,QAAUn2H,KAAK5H,KAAK44F,OACzBhxF,KAAKo2H,WAAap1H,OAAOsJ,KAAKtK,KAAKm2H,SACnCn2H,KAAKq2H,YAAc,EACnBr2H,KAAKs2H,UAAY,KAEnBJ,kBAAkBH,EAAqB,MACrC,MAAM,MAAEn+E,GAAU53C,KAAK5H,KAAKm+H,KAC5B,IAAIjhH,EAAa,wBAAyBygH,EAAoB,MAO9D,OANmB,OAAfzgH,IACFA,EAAa4G,WAAW07B,GAAS,MAEhB,IAAftiC,GACFtV,KAAKsN,YAAY0nB,cAAc1f,GAE1BA,EAET/G,QACE,OAAO,IAAIa,SAAS2D,IAClB/S,KAAKs2H,UAAYvjH,EACjB/S,KAAKq2H,YAAc,EACfr2H,KAAKo2H,WAAWr9H,QAAU+8H,GAAaU,YACzCx2H,KAAKy2H,eAAe,GACpBz2H,KAAK02H,qBACL12H,KAAK22H,kBAEL32H,KAAK42H,gBAIXH,eAAeI,GACb,IAAIC,EAAaD,EACjB,MAAME,EAAYjB,GAAaU,WAC/B,KAAOM,EAAaD,EAAoBE,GAAaD,EAAa92H,KAAKo2H,WAAWr9H,QAAQ,CACxF,MAAMO,EAAI0G,KAAKo2H,WAAWU,GACpB1+H,EAAO4H,KAAKm2H,QAAQ78H,GACpB2+C,EAAO7/C,EAAK23C,MAClB,GAAIkI,EAAM,CACR,IAAIlI,EAAQ,KACRpyB,EAAO,KACX,MAAMq5G,GAA8B,IAAjB5+H,EAAK6uG,SAAqB7uG,EAAK4+H,WAAa5+H,EAAK4+H,WAAa5+H,EAAK23C,MAChFW,EAAO,IAAI,KAAU,EAAG,EAAGz2C,KAAKmjB,MAAM45G,EAAWr4G,GAAK3e,KAAKsV,WAAYrb,KAAKmjB,MAAM45G,EAAW95G,GAAKld,KAAKsV,YAE3Gy6B,EADE33C,EAAK6+H,QACC,IAAI,KAAUh9H,KAAKmjB,MAAM66B,EAAKt/C,GAAKqH,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAKr/C,GAAKoH,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAK/6B,GAAKld,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAKt5B,GAAK3e,KAAKsV,YAE1J,IAAI,KAAUrb,KAAKmjB,MAAM66B,EAAKt/C,GAAKqH,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAKr/C,GAAKoH,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAKt5B,GAAK3e,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAK/6B,GAAKld,KAAKsV,aAE/I,IAAjBld,EAAK6uG,SAAqB7uG,EAAK8+H,mBACjCv5G,EAAO,IAAI,KAAU1jB,KAAKmjB,MAAMhlB,EAAK8+H,iBAAiBv+H,GAAKqH,KAAKsV,WAAYrb,KAAKmjB,MAAMhlB,EAAK8+H,iBAAiBt+H,GAAKoH,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAKt5B,GAAK3e,KAAKsV,WAAYrb,KAAKmjB,MAAM66B,EAAK/6B,GAAKld,KAAKsV,aAErMtV,KAAKokC,SAAS9qC,GAAK,IAAI,KAAQ0G,KAAKsN,YAAayiC,EAAOW,EAAM/yB,EAAMvlB,EAAK6+H,QAAU,EAAI,EAAG7+H,EAAKu4C,OAAQv4C,EAAKw4C,SAC5G,gBAAmB5wC,KAAKokC,SAAS9qC,GAAIA,GAEvCw9H,KAGJJ,qBACE,MAAMT,EAAaj2H,KAAK5H,KAAK69H,YAAc,GAC3C,IAAK,MAAMkB,KAAYlB,EAAY,CACjCj2H,KAAKi2H,WAAWkB,GAAY,GAC5B,IAAK,IAAI79H,EAAI,EAAGA,EAAI28H,EAAWkB,GAAUp+H,OAAQO,IAAK,CACpD,MAAM89H,EAAYnB,EAAWkB,GAAU79H,GACvC0G,KAAKi2H,WAAWkB,GAAUx9H,KAAKqG,KAAKokC,SAASgzF,MAInDT,iBACE,MAAMU,EAAWr3H,KAAKs2H,UACtBt2H,KAAKs2H,UAAY,KACjBt2H,KAAKq2H,YAAc,EACnBgB,EAAS50H,KAAKzC,KAAMA,KAAKokC,UAE3BwyF,aACE52H,KAAKy2H,eAAez2H,KAAKq2H,YAAcP,GAAaU,YACpDx2H,KAAKq2H,cACLxqF,YAAW,KACL7rC,KAAKq2H,YAAcP,GAAaU,WAAax2H,KAAKo2H,WAAWr9H,OAC/DiH,KAAK42H,cAEL52H,KAAK02H,qBACL12H,KAAK22H,oBAEN,GAEL9uH,QAAQypC,GAAc,GACpB,IAAK,MAAMh4C,KAAK0G,KAAKokC,SACnBpkC,KAAKokC,SAAS9qC,GAAGuO,UAEnB7H,KAAKm2H,QAAU,KACfn2H,KAAKo2H,WAAa,KAClBp2H,KAAK5H,KAAO,KACZ4H,KAAKokC,SAAW,KACZkN,IACFtxC,KAAKgkC,UAAUn8B,UACf7H,KAAKsN,YAAYzF,WAEnB7H,KAAKgkC,SAAW,KAChBhkC,KAAKsN,YAAc,KACnBtN,KAAKg2H,aAAe,KAGxB,IAAIsB,GAAcxB,GAClBwB,GAAYd,WAAa,IC7GzB,MAAMe,GAAc,CAAC,MAAO,MAAO,OAAQ,OAAQ,QACnD,SAAStqH,GAAmB3C,EAAM4D,EAAOspH,GACvC,MAAMn+G,EAAM,GAOZ,GANA/O,EAAK/C,SAAS6C,IACZiP,EAAIjP,GAAO8D,KAEblN,OAAOsJ,KAAK4D,EAAMk2B,UAAU78B,SAAS6C,IACnCiP,EAAIjP,GAAO8D,EAAMk2B,SAASh6B,OAEvBotH,EAAiB,CACpB,MAAMjgH,EAAW,kBAAmBjN,EAAK,IACzC4D,EAAM8nH,aAAazuH,SAAQ,CAAC8E,EAAM/S,KAChC,MAAMm+H,EAAOxqH,GAAmB,CAAC,GAAGsK,KAAYrJ,EAAM9V,KAAKm+H,KAAKmB,oBAAoBp+H,MAAO+S,GAAM,GACjGrL,OAAOmG,OAAOkS,EAAKo+G,MAGvB,OAAOp+G,EAET,MAAMs+G,GAAmB,CACvBhuH,UAAW,WACXI,MAAO,CACLlE,KAAOqI,GAAUA,aAAiBopH,GAClCrqH,mBAAoB,CAAC3C,EAAM4D,IAAUjB,GAAmB3C,EAAM4D,GAAO,IAEvEpE,SAAU,CACRjE,KAAO4F,IACL,MACM/F,EADU+F,EAAM/F,MAAM,KAAK,GACXA,MAAM,KACtBiE,EAAYjE,EAAM4F,MAClB2N,EAASvT,EAAM4F,MACrB,MAAqB,SAAd3B,GAAwB4tH,GAAYvrH,SAASiN,IAEtD1K,MAAQ9C,IACN,MAAM/F,EAAQ+F,EAAM/F,MAAM,KAC1B,MAAO,CACL4P,WAAY4G,WAAW,wBAA4BzQ,KAAS,IAAM,KAClEwN,OAAQvT,EAAMA,EAAM3M,OAAS,GAC7BiW,IAAKvD,KAIX5B,OAAQ,CACNtH,KAAM,oBACNoH,UAAW,CACTU,KAAM,gBACN8F,SAAU,aAEZhF,UAAe,MAAC+C,EAAOjH,IACoC,UAAlD,kBAAmBA,EAAQ+H,KAAKlD,iBAA+BoC,EAAM8iF,OAE9E7lF,YAAY+C,EAAOjH,EAAS4C,GAC1B,IAAI0N,EAAW,kBAAmBtQ,EAAQ+H,KACtCuI,GAAYA,EAAS0oD,YAAY,OAAS1oD,EAASxe,OAAS,IAC9Dwe,GAAY,KAEd,IAAI2mF,EAAY3mF,EAAWrJ,EAAMqoH,KAAK7B,MACtCx2B,GAAY,QAAiBA,EAAWj3F,EAAQ+H,KAChD,MACM3B,SADexD,EAAO0B,KAAK,CAAC2yF,KACXA,GACjB05B,EAAc,IAAIN,GAAYjqH,EAAQC,YAAaY,EAAOjH,EAAQ+H,WAClE4oH,EAAYrpH,QAClB,MAAMspH,EAAa3pH,GAAOqoH,MAAMmB,oBAChC,GAAIz0H,MAAM8I,QAAQ8rH,GAAa,CAC7B,MAAM3oH,EAAW,GACjB,IAAK,MAAM7C,KAAQwrH,EAAY,CAC7B,GAAoB,kBAATxrH,EACT,SAEF,IAAIyrH,EAAUvgH,EAAWlL,EACrBpF,EAAQ7O,MAAMo/H,kBAGlBM,GAAU,QAAiBA,EAAS7wH,EAAQ+H,KAC5CE,EAASvV,KAAKkQ,EAAO0B,KAAK,CACxByD,IAAK8oH,EACL1/H,KAAM,CACJo/H,iBAAiB,OAIvB,MAAM77E,QAAYvsC,QAAQC,IAAIH,GAC9B0oH,EAAY5B,aAAer6E,EAC3BA,EAAIp0C,SAAS8E,IACXA,EAAK2pH,aAAe,CAAC4B,GAAah1H,OAAOg1H,EAAY5B,aAAa7rH,QAAQ4tH,GAAOA,IAAO1rH,QAG5F,OAAOurH,GAETnoH,OAAOmoH,GACLA,EAAY/vH,SAAQ,MAI1B,SAAe8vH,I,yBC9Ff,MAAMK,GAAiB,cAAc,MACnChxH,cACEsrB,SAAS7uB,WACTzD,KAAKuhG,OAAS,GACdvhG,KAAKi4H,WAAa,GAClBj4H,KAAKk4H,YAAc,GACnBl4H,KAAKm4H,YAAa,EAEpB/vH,YAAYgwH,GACV,OAAO,IAAIJ,GAAeh3H,OAAOsJ,KAAK0tH,GAAe3kG,gBAAgB3jB,QAAO,CAACopE,EAAKssB,KAAS,IAAMtsB,EAAK,CAACssB,GAAOgzB,EAAchzB,MAAU,KAExIizB,aACMr4H,KAAKuhG,OAAOxoG,OAAS,IACvBiH,KAAKuhG,OAAOh6F,SAASsK,IACnBoB,IAAIM,gBAAgB1B,EAAK7C,KACzB6C,EAAKymH,OACa,IAAdzmH,EAAKymH,OACHzmH,EAAK0mH,UACP74D,SAAS5uD,MAAMrD,OAAOoE,EAAK0mH,iBAEtBP,GAAeQ,eAAe3mH,EAAK4mH,iBAG9Cz4H,KAAK64F,WAAa,QAClB74F,KAAKuhG,OAAOxoG,OAAS,EACrBiH,KAAK4iG,UACL5iG,KAAKm4H,YAAa,GAGtBO,SAAS/sH,EAAK1E,EAAU,IACtB,MAAM,eAAEuxH,GAAmBR,GAC3B,GAAIQ,EAAe7sH,GAAM,CACvB,MAAMkG,EAAO2mH,EAAe7sH,GAK5B,OAJA3L,KAAKuhG,OAAO5nG,KAAKkY,GACjBA,EAAKymH,OACLt4H,KAAK4iG,UACL5iG,KAAKm4H,YAAa,EACX/oH,QAAQ2D,UAEjB,OAAO,mBAAuBpH,GAAKsP,MAAM5K,GAAaA,EAAS8E,SAAQ8F,MAAK9P,MAAOgK,GAAS,IAAI/F,SAAQ,CAAC2D,EAASiB,KAChH,MAAMhF,EAAMiE,IAAIC,gBAAgBiC,GAC1B0/G,EAAS,IAAIC,WACnBD,EAAOx/G,OAAS,IAAMtC,EAAQ,CAAC/D,EAAK6lH,EAAOp0H,SAC3Co0H,EAAO9lF,QAAU/6B,EACjB6gH,EAAOE,cAAc5/G,QACnB8F,MAAK9P,OAAQ6D,EAAK2pH,MACpB,MAAM9mH,EAAO7Q,OAAOmG,OAAO,CACzB6J,OAAQ,mBAAoBrF,EAAK,kBAAmBA,IACpDiG,OAAQ,SACRkgB,MAAO,SACP9iB,MACA2pH,UACAL,KAAM,EACNG,YAAa9sH,EACb4sH,SAAU,MACTtxH,GACHuxH,EAAe7sH,GAAOkG,EACtB7R,KAAKuhG,OAAO5nG,KAAKkY,GACjB7R,KAAK4iG,UACL,MAAM21B,EAAW,IAAIzmH,SAASD,EAAKb,OAAQ,OAAOa,EAAK7C,OAAQ,CAC7D4C,OAAQC,EAAKD,OACbkgB,MAAOjgB,EAAKigB,QAEdjgB,EAAK0mH,SAAWA,QACVA,EAAShtH,OACfm0D,SAAS5uD,MAAMjG,IAAI0tH,SACb74D,SAAS5uD,MAAM8nH,MACrB54H,KAAK4iG,UACL5iG,KAAKm4H,YAAa,KAGtBU,eAAeptH,GACb,MAAMqtH,EAAQrtH,EAAMtB,QAAQgT,IAAOnd,KAAKi4H,WAAWjsH,SAASmR,KACxD27G,EAAM//H,OAAS,IACjBiH,KAAKi4H,WAAWt+H,QAAQm/H,GACxB94H,KAAK4iG,WAGTm2B,kBAAkBttH,GAChB,MAAMutH,EAAWvtH,EAAMtB,QAAQgT,GAAMnd,KAAKi4H,WAAWjsH,SAASmR,KAC1D67G,EAASjgI,OAAS,IACpBiH,KAAKi4H,WAAaj4H,KAAKi4H,WAAW9tH,QAAQgT,IAAO67G,EAAShtH,SAASmR,KACnEnd,KAAK4iG,WAGTq2B,MAAMrhF,GACJ,MAAO,CACL,oBAAoBA,KACpB,6BACA,wBACA,UAAU53C,KAAK+5E,eAAe/5E,KAAKgpB,QACnC,cAAchpB,KAAK41F,aACnB,gBAAgB51F,KAAK64F,aACrB,gBAAgB74F,KAAKkkG,aACrB,eAAelkG,KAAKo5F,YACpB,iBAAiBp5F,KAAKgkG,cACtB,mBAAmBhkG,KAAKi6F,kBACxB,eAAej6F,KAAK+5F,QACpB,YAAY/5F,KAAKwnC,YACjB,gBAAgBxnC,KAAKw/F,gBAClBx/F,KAAK2zF,WAAa,CAAC,gBAAgB3zF,KAAK2zF,gBAAkB,MAC1D3zF,KAAK8+F,SAAW,CACjB,eAAc9+F,KAAKugG,WAAa,YAAc,cAC9C,cAAcvgG,KAAK4/F,mBACjB,MACD5/F,KAAK60F,gBAAkB,CACxB,8BAA8B70F,KAAK60F,oBACnC,8BAA8B70F,KAAK+5E,eAAe/5E,KAAKs2F,UACvD,sBAAsBt2F,KAAK60F,oBAC3B,sBAAsB70F,KAAK+5E,eAAe/5E,KAAKs2F,UAC/C,uBACE,MACDt2F,KAAKo1F,WAAa,CAACp1F,KAAKk5H,mBAAqB,MAC7Cl5H,KAAKi4H,YACRxmH,KAAK,KAET0nH,cACE,OAAOn5H,KAAKuhG,OAAO7xF,QAAO,CAACjP,EAAQoR,IAAS,GAAGpR,8DAEnBoR,EAAKb,uCACTa,EAAK8mH,4CACF9mH,EAAKD,wCACNC,EAAKigB,0BACnB9xB,KAAKk4H,aAEfkB,iBACF,OAAOp5H,KAAKk4H,YAEVkB,eAAW3tH,GACTzL,KAAKk4H,cAAgBzsH,IACvBzL,KAAKk4H,YAAczsH,EACnBzL,KAAK4iG,WAGT7oB,eAAe5uD,GAIb,OAHIloB,MAAM8I,QAAQof,KAChBA,EAAQ,aAAcA,IAEH,kBAAVA,EACF,gBAAiBA,GAEnBA,EAET+tG,kBACE,IAAI/tG,EAAQnrB,KAAK+5E,eAAe/5E,KAAKu2F,iBACrC,MAAMp3E,EAAQnf,KAAK02F,gBACb/9F,EAAIsB,KAAK0iB,MAAM1iB,KAAK8xE,IAAI/rE,KAAK62F,iBAAmB72F,KAAKq1F,oBACrDz8F,EAAIqB,KAAK0iB,MAAM1iB,KAAK+xE,IAAIhsE,KAAK62F,iBAAmB72F,KAAKq1F,oBACvDlqE,EAAMlb,WAAW,MAAQkP,EAAQ,IACnCgM,IAAkB,IAARhM,EAAc,GAAGlC,SAAS,IAAIo8G,SAAS,EAAG,MAEtD,MAAM1zD,EAAW,GAAGhtE,OAAOC,MAC3B,OAAIoH,KAAKw2F,eAAiB,EACjB,gBAAgB7wB,KAAY3lE,KAAKw2F,oBAAoBrrE,IAEvD,gBAAgBw6C,KAAYx6C,IAErCxe,QACE3L,OAAOmG,OAAOnH,KAAMg4H,GAAe3kG,gBAErCimG,eACE,MAAQnB,WAAYoB,GAAmBv5H,KAEvC,OADAA,KAAKm4H,YAAa,EACdn4H,KAAKw5H,UAAYx5H,KAAKuhG,OAAOxoG,OAAS,GAAKwgI,EACtC,IAAInqH,SAAS2D,GAAY84B,WAAW94B,EAAS,OAE/C3D,QAAQ2D,UAEbymH,eACF,MAAM,UAAEh0H,GAAc,4BACtB,MAAO,iCAAiCK,KAAKL,GAE3C8vF,sBAAkBzsE,GACpB9d,QAAQ8B,KAAK,kEAEXyoF,wBACF,OAAOhjE,MAAMgjE,kBAEXE,qBAAiB3sE,GACnB9d,QAAQ8B,KAAK,iEAEX2oF,uBACF,OAAOljE,MAAMkjE,iBAEXviB,eAAWpqD,GACb9d,QAAQ8B,KAAK,2DAEXomE,iBACF,OAAO3gD,MAAM2gD,WAEXt1D,SAAKkL,GACP9d,QAAQ8B,KAAK,qDAEX8Q,WACF,OAAO2U,MAAM3U,KAEXo3E,iBAAalsE,GACf9d,QAAQ8B,KAAK,6DAEXkoF,mBACF,OAAOziE,MAAMyiE,aAEXoK,YAAQt2E,GACV9d,QAAQ8B,KAAK,wDAEXsyF,cACF,OAAO7sE,MAAM6sE,QAEXnK,aAASnsE,GACX9d,QAAQ8B,KAAK,yDAEXmoF,eACF,OAAO1iE,MAAM0iE,WAGjB,IAAIykC,GAAgBzB,GACpByB,GAAcjB,eAAiB,GAC/BiB,GAAcpmG,eAAiB,CAC7B0mE,MAAO,OACPwG,YAAY,EACZnL,YAAY,EACZsB,gBAAiB,EACjBG,gBAAiB58F,KAAKwiB,GAAK,EAC3B+5E,eAAgB,EAChBD,gBAAiB,QACjBlB,mBAAoB,EACpBrsE,KAAM,QACN6vE,WAAY,QACZjD,SAAU,GACVwD,UAAW,SACX4K,YAAa,SACbE,WAAY,SACZjK,cAAe,EACftG,WAAY,EACZnsD,QAAS,EACT8uD,OAAQ,QACRzB,gBAAiB,EACjB2K,WAAY,SACZV,UAAU,EACVc,cAAe,KC7OjB,MAAM85B,GAAY,cAAc,IAC9B1yH,YAAYwJ,EAAO,GAAIshB,EAAQ,IAC7BQ,MAAM,YACNtyB,KAAKm7F,MAAQ,KACbn7F,KAAK2lG,OAAS,KACd3lG,KAAK86F,iBAAkB,EACvB96F,KAAK25H,UAAW,EAChB35H,KAAK6lG,cAAgB,EACrB7lG,KAAK00B,OAAQ,EACb10B,KAAK45H,WAAY,EACjB,MAAMlF,EAAQ,IAAIt/G,MACZ/H,EAAU,UAAaqnH,EAAO,CAClCvhG,UAAW,gBACX1d,gBAAiB,CACfo5B,UAAU,KAGdxhC,EAAQqjC,KAAO,IAAI,KACnBrjC,EAAQsQ,KAAO,IAAI,KACnB3d,KAAKqN,QAAUA,EACf,MAAMwsH,EAAQ,6BACRC,EAAU,+BACVC,EAAUr6D,SAASs6D,gBAAgBH,EAAO,OAC1CI,EAAgBv6D,SAASs6D,gBAAgBH,EAAO,iBAChD/gB,EAAap5C,SAASs6D,gBAAgBF,EAAS,OAC/CI,EAAex6D,SAASs6D,gBAAgBF,EAAS,SACvDG,EAAcr6D,aAAa,QAAS,SACpCq6D,EAAcr6D,aAAa,SAAU,SACrCq6D,EAAcnoG,MAAMqoG,SAAW,SAC/BJ,EAAQ55D,YAAY85D,GACpBj6H,KAAKg6F,SAAW0/B,GAAUU,gBAC1Bp6H,KAAKq6H,UAAYX,GAAUY,iBAC3Bt6H,KAAKu6H,YAAczhB,EACnB94G,KAAKw6H,cAAgBN,EACrBl6H,KAAKy6H,SAAWV,EAChB/5H,KAAK06H,eAAiBT,EACtBj6H,KAAK06H,eAAev6D,YAAY+5D,GAChCl6H,KAAK06H,eAAev6D,YAAY24C,GAChC94G,KAAK26H,OAASjG,EACd10H,KAAK46H,WAAa,IAAIxlH,MACtBpV,KAAK86F,gBAAkB4+B,GAAUh0B,sBACjC1lG,KAAKmoC,YAAcuxF,GAAUjyF,mBAAqB,gBAClDznC,KAAKwQ,KAAOA,EACZxQ,KAAK8xB,MAAQA,EAEfunE,YAAYwhC,GACV,MAAM,KAAErqH,EAAI,MAAEshB,EAAK,WAAExc,GAAetU,OAAOmG,OAAO,CAChDqJ,KAAMxQ,KAAKm7F,MACXrpE,MAAO9xB,KAAK2lG,OACZrwF,WAAYtV,KAAKmoC,aAChB0yF,GACH75H,OAAOmG,OAAOnH,KAAKu6H,YAAa,CAC9B5N,UAAWn8G,EACXshB,MAAOA,EAAMmnG,MAAM3jH,KAErBtV,KAAKw6H,cAAcM,YAAchpG,EAAMqnG,cACvCz5D,SAAS0sD,KAAKjsD,YAAYngE,KAAKy6H,UAC/B,MAAMM,EAAgB/6H,KAAKu6H,YAAYpT,wBACvCnnH,KAAKy6H,SAASltH,SACd,MAAMytH,EAAe/gI,KAAKwF,IAAIO,KAAKg6F,SAAU//F,KAAK0sC,KAAKo0F,EAAc5xH,QAC/D8xH,EAAgBhhI,KAAKwF,IAAIO,KAAKq6H,UAAWpgI,KAAK0sC,KAAKo0F,EAAc3xH,SAUvE,OATApJ,KAAKy6H,SAAS76D,aAAa,QAASo7D,EAAa/9G,YACjDjd,KAAKy6H,SAAS76D,aAAa,SAAUq7D,EAAch+G,YAC/CzM,IAASxQ,KAAKm7F,QAChBn7F,KAAKu6H,YAAY5N,UAAY3sH,KAAKm7F,OAEhCrpE,IAAU9xB,KAAK2lG,SACjB3kG,OAAOmG,OAAOnH,KAAKu6H,YAAa,CAAEzoG,MAAO9xB,KAAK2lG,QAAQszB,MAAM3jH,KAC5DtV,KAAKw6H,cAAcM,YAAc96H,KAAK2lG,QAAQwzB,eAEzC,CACLhwH,MAAO6xH,EAA+B,EAAhBlpG,EAAM0V,QAC5Bp+B,OAAQ6xH,EAAgC,EAAhBnpG,EAAM0V,SAGlCr8B,iBAAiB26F,GAAe,GAC9B,MAAM,MAAEh0E,EAAO6oG,OAAQjG,EAAOkG,WAAYM,GAAcl7H,KAKxD,GAJIA,KAAK6lG,eAAiB/zE,EAAM8wE,UAC9B5iG,KAAK00B,OAAQ,EACb10B,KAAK6lG,aAAe/zE,EAAM8wE,UAEvB5iG,KAAK00B,OAASoxE,EACjB,OAEF,MAAM,MAAE38F,EAAK,OAAEC,GAAWpJ,KAAKq5F,cAC/Bq7B,EAAMvrH,MAAQ+xH,EAAU/xH,MAAQlP,KAAK0sC,KAAK1sC,KAAKC,IAAI,EAAGiP,IACtDurH,EAAMtrH,OAAS8xH,EAAU9xH,OAASnP,KAAK0sC,KAAK1sC,KAAKC,IAAI,EAAGkP,IACnDpJ,KAAK25H,WACR35H,KAAK25H,UAAW,QACV,IAAIvqH,SAAS2D,IACjBmoH,EAAU7lH,OAASlK,gBACX2mB,EAAMwnG,eACZt5H,KAAK25H,UAAW,EAChBjF,EAAM1lH,IAAMksH,EAAUlsH,IACtBksH,EAAU7lH,OAAS,KACnB6lH,EAAUlsH,IAAM,GAChBhP,KAAK+2D,gBACLhkD,KAEF,MAAMooH,GAAS,IAAIC,eAAgBC,kBAAkBr7H,KAAKy6H,UAC1DS,EAAUlsH,IAAM,mCAAmCgJ,mBAAmBmjH,SAIxEjrG,aACF,OAAOlwB,KAAK26H,OAEd5jE,gBACE,MAAM,MAAEjlC,EAAK,QAAEzkB,EAASstH,OAAQjG,EAAK,WAAEp/G,GAAetV,MAChD,QAAEwnC,GAAY1V,GACd,YAAExkB,GAAgBD,EACxBA,EAAQsQ,KAAKxU,MAAQkE,EAAQyjC,OAAO3nC,MAAQurH,EAAMvrH,MAAQmM,EAC1DjI,EAAQsQ,KAAKvU,OAASiE,EAAQyjC,OAAO1nC,OAASsrH,EAAMtrH,OAASkM,EAC7DjI,EAAQsQ,KAAKhlB,GAAK6uC,EAClBn6B,EAAQsQ,KAAK/kB,GAAK4uC,EAClBn6B,EAAQqjC,KAAKvnC,MAAQkE,EAAQyjC,OAAO3nC,MAAkB,EAAVq+B,EAC5Cn6B,EAAQqjC,KAAKtnC,OAASiE,EAAQyjC,OAAO1nC,OAAmB,EAAVo+B,EAC9CxnC,KAAK0xF,mBACLpkF,EAAYwnB,YAAY4/F,EAAMvrH,MAAOurH,EAAMtrH,OAAQkM,GACnDtV,KAAK00B,OAAQ,EAEfy0C,QAAQ9hE,GACFrH,KAAK86F,iBAAmB96F,KAAKmoC,cAAgB9gC,EAASiO,aACxDtV,KAAKmoC,YAAc9gC,EAASiO,WAC5BtV,KAAK00B,OAAQ,GAEf10B,KAAK4sF,YAAW,GAChBt6D,MAAM62C,QAAQ9hE,GAEhB4rG,cAAc5rG,GACRrH,KAAK86F,iBAAmB96F,KAAKmoC,cAAgB9gC,EAASiO,aACxDtV,KAAKmoC,YAAc9gC,EAASiO,WAC5BtV,KAAK00B,OAAQ,GAEf10B,KAAK4sF,YAAW,GAChBt6D,MAAM2gF,cAAc5rG,GAEtBu/C,eAAe3O,GAEb,OADAj4C,KAAK4sF,YAAW,GACTt6D,MAAMs0B,eAAe3O,GAE9B+wB,mBACEhpE,KAAK4sF,YAAW,GAChB5sF,KAAK67E,oBACL77E,KAAKukE,QAAQhC,QAAQviE,KAAKikC,YAE5Bq3F,iBACEt7H,KAAK00B,OAAQ,EAEf7sB,QAAQZ,GACiB,mBAAZA,IACTA,EAAU,CAAE+qD,SAAU/qD,IAExBA,EAAUjG,OAAOmG,OAAO,GAAIuyH,GAAUp0B,sBAAuBr+F,GAC7DqrB,MAAMzqB,QAAQZ,GACd,MAAM2uC,EAAa,KACf51C,KAAK45H,WACP55H,KAAK2lG,QAAQ0yB,aAEfr4H,KAAK2lG,OAAS/vD,EACd51C,KAAKy6H,UAAUltH,SACfvN,KAAKy6H,SAAW7kF,EAChB51C,KAAKu6H,aAAahtH,SAClBvN,KAAKu6H,YAAc3kF,EACnB51C,KAAK06H,gBAAgBntH,SACrBvN,KAAK06H,eAAiB9kF,EACtB51C,KAAKw6H,eAAejtH,SACpBvN,KAAKw6H,cAAgB5kF,EACrB51C,KAAK46H,WAAW5rH,IAAM,GACtBhP,KAAK46H,WAAWvlH,OAAS,KACzBrV,KAAK46H,WAAahlF,EAClB51C,KAAK26H,OAAO3rH,IAAM,GAClBhP,KAAK26H,OAAS/kF,EAEZzsC,YAEF,OADAnJ,KAAK4sF,YAAW,GACT3yF,KAAKmE,IAAI4B,KAAK43C,MAAMj/C,GAAKqH,KAAK26H,OAAOxxH,MAAQnJ,KAAKsV,WAEvDnM,UAAMsC,GACRzL,KAAK4sF,YAAW,GAChB,MAAM5vE,EAAI,UAAWhd,KAAK43C,MAAMj/C,IAAM,EACtCqH,KAAK43C,MAAMj/C,EAAIqkB,EAAIvR,EAAQzL,KAAK26H,OAAOxxH,MAAQnJ,KAAKsV,WACpDtV,KAAKoxB,OAAS3lB,EAEZrC,aAEF,OADApJ,KAAK4sF,YAAW,GACT3yF,KAAKmE,IAAI4B,KAAK43C,MAAMh/C,GAAKoH,KAAK26H,OAAOvxH,OAASpJ,KAAKsV,WAExDlM,WAAOqC,GACTzL,KAAK4sF,YAAW,GAChB,MAAM5vE,EAAI,UAAWhd,KAAK43C,MAAMh/C,IAAM,EACtCoH,KAAK43C,MAAMh/C,EAAIokB,EAAIvR,EAAQzL,KAAK26H,OAAOvxH,OAASpJ,KAAKsV,WACrDtV,KAAKqxB,QAAU5lB,EAEbqmB,YACF,OAAO9xB,KAAK2lG,OAEV7zE,UAAMA,GACJ9xB,KAAK2lG,SAAW7zE,KAGpBA,EAAQA,GAAS,cACI2nG,IACnBz5H,KAAK45H,WAAY,EACjB55H,KAAK2lG,OAAS7zE,GACLA,aAAiB,OAC1B/mB,QAAQ8B,KAAK,iFACb7M,KAAK45H,WAAY,EACjB55H,KAAK2lG,OAAS8zB,GAAc95F,KAAK7N,KAEjC9xB,KAAK45H,WAAY,EACjB55H,KAAK2lG,OAAS,IAAI8zB,GAAc3nG,IAElC9xB,KAAK6lG,cAAgB,EACrB7lG,KAAK00B,OAAQ,GAEXlkB,WACF,OAAOxQ,KAAKm7F,MAEV3qF,SAAKA,GACPA,EAAOkoF,OAAgB,KAATloF,GAAwB,OAATA,QAA0B,IAATA,EAAkB,IAAMA,GACtEA,EAAOxQ,KAAKu7H,aAAa/qH,GACrBxQ,KAAKm7F,QAAU3qF,IAGnBxQ,KAAKm7F,MAAQ3qF,EACbxQ,KAAK00B,OAAQ,GAEXpf,iBACF,OAAOtV,KAAKmoC,YAEV7yB,eAAW7J,GACbzL,KAAK86F,iBAAkB,EACnB96F,KAAKmoC,cAAgB18B,IAGzBzL,KAAKmoC,YAAc18B,EACnBzL,KAAK00B,OAAQ,GAEf6mG,aAAa/qH,GACX,OAAOA,EAAKU,QAAQ,SAAU,SAASA,QAAQ,SAAU,SAASA,QAAQ,WAAY,YAG1F,IAAIsqH,GAAW9B,GACf8B,GAASl2B,sBAAwB,CAC/Bj4F,SAAS,EACT2kD,UAAU,EACV1kD,aAAa,GAEfkuH,GAASpB,gBAAkB,KAC3BoB,GAASlB,iBAAmB,KAC5BkB,GAAS91B,uBAAwB","debug_id":"fbc69f6a-7a32-5df6-9268-4ebe812ad46b"}