1 |
- {"ast":null,"code":"import { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { ThinEngine } from \"../thinEngine.js\";\nimport { IsExponentOfTwo } from \"../../Misc/tools.functions.js\";\nThinEngine.prototype.updateRawTexture = function (texture, data, format, invertY, compression = null, type = 0, useSRGBBuffer = false) {\n if (!texture) {\n return;\n }\n // Babylon's internalSizedFomat but gl's texImage2D internalFormat\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type, format, useSRGBBuffer);\n // Babylon's internalFormat but gl's texImage2D format\n const internalFormat = this._getInternalFormat(format);\n const textureType = this._getWebGLTextureType(type);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n texture.format = format;\n texture.type = type;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (texture.width % 4 !== 0) {\n this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT, 1);\n }\n if (compression && data) {\n this._gl.compressedTexImage2D(this._gl.TEXTURE_2D, 0, this.getCaps().s3tc[compression], texture.width, texture.height, 0, data);\n } else {\n this._gl.texImage2D(this._gl.TEXTURE_2D, 0, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, data);\n }\n if (texture.generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n // this.resetTextureCache();\n texture.isReady = true;\n};\nThinEngine.prototype.createRawTexture = function (data, width, height, format, generateMipMaps, invertY, samplingMode, compression = null, type = 0,\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ncreationFlags = 0, useSRGBBuffer = false) {\n const texture = new InternalTexture(this, 3 /* InternalTextureSource.Raw */);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.format = format;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.invertY = invertY;\n texture._compression = compression;\n texture.type = type;\n texture._useSRGBBuffer = this._getUseSRGBBuffer(useSRGBBuffer, !generateMipMaps);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n this.updateRawTexture(texture, data, format, invertY, compression, type, texture._useSRGBBuffer);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n // Filters\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MAG_FILTER, filters.mag);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MIN_FILTER, filters.min);\n if (generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n this._internalTexturesCache.push(texture);\n return texture;\n};\nThinEngine.prototype.createRawCubeTexture = function (data, size, format, type, generateMipMaps, invertY, samplingMode, compression = null) {\n const gl = this._gl;\n const texture = new InternalTexture(this, 8 /* InternalTextureSource.CubeRaw */);\n texture.isCube = true;\n texture.format = format;\n texture.type = type;\n if (!this._doNotHandleContextLost) {\n texture._bufferViewArray = data;\n }\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n }\n // Mipmap generation needs a sized internal format that is both color-renderable and texture-filterable\n if (textureType === gl.FLOAT && !this._caps.textureFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = 1;\n Logger.Warn(\"Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n } else if (textureType === this._gl.HALF_FLOAT_OES && !this._caps.textureHalfFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = 1;\n Logger.Warn(\"Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n } else if (textureType === gl.FLOAT && !this._caps.textureFloatRender) {\n generateMipMaps = false;\n Logger.Warn(\"Render to float textures is not supported. Mipmap generation forced to false.\");\n } else if (textureType === gl.HALF_FLOAT && !this._caps.colorBufferFloat) {\n generateMipMaps = false;\n Logger.Warn(\"Render to half float textures is not supported. Mipmap generation forced to false.\");\n }\n const width = size;\n const height = width;\n texture.width = width;\n texture.height = height;\n texture.invertY = invertY;\n texture._compression = compression;\n // Double check on POT to generate Mips.\n const isPot = !this.needPOTTextures || IsExponentOfTwo(texture.width) && IsExponentOfTwo(texture.height);\n if (!isPot) {\n generateMipMaps = false;\n }\n // Upload data if needed. The texture won't be ready until then.\n if (data) {\n this.updateRawCubeTexture(texture, data, format, type, invertY, compression);\n } else {\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n const level = 0;\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n if (compression) {\n gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, this.getCaps().s3tc[compression], texture.width, texture.height, 0, undefined);\n } else {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, null);\n }\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, texture, true);\n // Filters\n if (data && generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n }\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, filters.mag);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, filters.min);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.isReady = true;\n return texture;\n};\nThinEngine.prototype.updateRawCubeTexture = function (texture, data, format, type, invertY, compression = null, level = 0) {\n texture._bufferViewArray = data;\n texture.format = format;\n texture.type = type;\n texture.invertY = invertY;\n texture._compression = compression;\n const gl = this._gl;\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n let needConversion = false;\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n needConversion = true;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (texture.width % 4 !== 0) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n // Data are known to be in +X +Y +Z -X -Y -Z\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let faceData = data[faceIndex];\n if (compression) {\n gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, this.getCaps().s3tc[compression], texture.width, texture.height, 0, faceData);\n } else {\n if (needConversion) {\n faceData = _convertRGBtoRGBATextureData(faceData, texture.width, texture.height, type);\n }\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, faceData);\n }\n }\n const isPot = !this.needPOTTextures || IsExponentOfTwo(texture.width) && IsExponentOfTwo(texture.height);\n if (isPot && texture.generateMipMaps && level === 0) {\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n // this.resetTextureCache();\n texture.isReady = true;\n};\nThinEngine.prototype.createRawCubeTextureFromUrl = function (url, scene, size, format, type, noMipmap, callback, mipmapGenerator, onLoad = null, onError = null, samplingMode = 3, invertY = false) {\n const gl = this._gl;\n const texture = this.createRawCubeTexture(null, size, format, type, !noMipmap, invertY, samplingMode, null);\n scene === null || scene === void 0 || scene.addPendingData(texture);\n texture.url = url;\n texture.isReady = false;\n this._internalTexturesCache.push(texture);\n const onerror = (request, exception) => {\n scene === null || scene === void 0 || scene.removePendingData(texture);\n if (onError && request) {\n onError(request.status + \" \" + request.statusText, exception);\n }\n };\n const internalCallback = data => {\n const width = texture.width;\n const faceDataArrays = callback(data);\n if (!faceDataArrays) {\n return;\n }\n if (mipmapGenerator) {\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n let needConversion = false;\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n needConversion = true;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(false);\n const mipData = mipmapGenerator(faceDataArrays);\n for (let level = 0; level < mipData.length; level++) {\n const mipSize = width >> level;\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let mipFaceData = mipData[level][faceIndex];\n if (needConversion) {\n mipFaceData = _convertRGBtoRGBATextureData(mipFaceData, mipSize, mipSize, type);\n }\n gl.texImage2D(faceIndex, level, internalSizedFomat, mipSize, mipSize, 0, internalFormat, textureType, mipFaceData);\n }\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n } else {\n this.updateRawCubeTexture(texture, faceDataArrays, format, type, invertY);\n }\n texture.isReady = true;\n // this.resetTextureCache();\n scene === null || scene === void 0 || scene.removePendingData(texture);\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n if (onLoad) {\n onLoad();\n }\n };\n this._loadFile(url, data => {\n internalCallback(data);\n }, undefined, scene === null || scene === void 0 ? void 0 : scene.offlineProvider, true, onerror);\n return texture;\n};\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _convertRGBtoRGBATextureData(rgbData, width, height, textureType) {\n // Create new RGBA data container.\n let rgbaData;\n let val1 = 1;\n if (textureType === 1) {\n rgbaData = new Float32Array(width * height * 4);\n } else if (textureType === 2) {\n rgbaData = new Uint16Array(width * height * 4);\n val1 = 15360; // 15360 is the encoding of 1 in half float\n } else if (textureType === 7) {\n rgbaData = new Uint32Array(width * height * 4);\n } else {\n rgbaData = new Uint8Array(width * height * 4);\n }\n // Convert each pixel.\n for (let x = 0; x < width; x++) {\n for (let y = 0; y < height; y++) {\n const index = (y * width + x) * 3;\n const newIndex = (y * width + x) * 4;\n // Map Old Value to new value.\n rgbaData[newIndex + 0] = rgbData[index + 0];\n rgbaData[newIndex + 1] = rgbData[index + 1];\n rgbaData[newIndex + 2] = rgbData[index + 2];\n // Add fully opaque alpha channel.\n rgbaData[newIndex + 3] = val1;\n }\n }\n return rgbaData;\n}\n/**\n * Create a function for createRawTexture3D/createRawTexture2DArray\n * @param is3D true for TEXTURE_3D and false for TEXTURE_2D_ARRAY\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _makeCreateRawTextureFunction(is3D) {\n return function (data, width, height, depth, format, generateMipMaps, invertY, samplingMode, compression = null, textureType = 0) {\n const target = is3D ? this._gl.TEXTURE_3D : this._gl.TEXTURE_2D_ARRAY;\n const source = is3D ? 10 /* InternalTextureSource.Raw3D */ : 11 /* InternalTextureSource.Raw2DArray */;\n const texture = new InternalTexture(this, source);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.baseDepth = depth;\n texture.width = width;\n texture.height = height;\n texture.depth = depth;\n texture.format = format;\n texture.type = textureType;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n if (is3D) {\n texture.is3D = true;\n } else {\n texture.is2DArray = true;\n }\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n if (is3D) {\n this.updateRawTexture3D(texture, data, format, invertY, compression, textureType);\n } else {\n this.updateRawTexture2DArray(texture, data, format, invertY, compression, textureType);\n }\n this._bindTextureDirectly(target, texture, true);\n // Filters\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n this._gl.texParameteri(target, this._gl.TEXTURE_MAG_FILTER, filters.mag);\n this._gl.texParameteri(target, this._gl.TEXTURE_MIN_FILTER, filters.min);\n if (generateMipMaps) {\n this._gl.generateMipmap(target);\n }\n this._bindTextureDirectly(target, null);\n this._internalTexturesCache.push(texture);\n return texture;\n };\n}\nThinEngine.prototype.createRawTexture2DArray = _makeCreateRawTextureFunction(false);\nThinEngine.prototype.createRawTexture3D = _makeCreateRawTextureFunction(true);\n/**\n * Create a function for updateRawTexture3D/updateRawTexture2DArray\n * @param is3D true for TEXTURE_3D and false for TEXTURE_2D_ARRAY\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _makeUpdateRawTextureFunction(is3D) {\n return function (texture, data, format, invertY, compression = null, textureType = 0) {\n const target = is3D ? this._gl.TEXTURE_3D : this._gl.TEXTURE_2D_ARRAY;\n const internalType = this._getWebGLTextureType(textureType);\n const internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(textureType, format);\n this._bindTextureDirectly(target, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n texture.format = format;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (texture.width % 4 !== 0) {\n this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT, 1);\n }\n if (compression && data) {\n this._gl.compressedTexImage3D(target, 0, this.getCaps().s3tc[compression], texture.width, texture.height, texture.depth, 0, data);\n } else {\n this._gl.texImage3D(target, 0, internalSizedFomat, texture.width, texture.height, texture.depth, 0, internalFormat, internalType, data);\n }\n if (texture.generateMipMaps) {\n this._gl.generateMipmap(target);\n }\n this._bindTextureDirectly(target, null);\n // this.resetTextureCache();\n texture.isReady = true;\n };\n}\nThinEngine.prototype.updateRawTexture2DArray = _makeUpdateRawTextureFunction(false);\nThinEngine.prototype.updateRawTexture3D = _makeUpdateRawTextureFunction(true);","map":{"version":3,"names":["InternalTexture","Logger","ThinEngine","IsExponentOfTwo","prototype","updateRawTexture","texture","data","format","invertY","compression","type","useSRGBBuffer","internalSizedFomat","_getRGBABufferInternalSizedFormat","internalFormat","_getInternalFormat","textureType","_getWebGLTextureType","_bindTextureDirectly","_gl","TEXTURE_2D","_unpackFlipY","undefined","_doNotHandleContextLost","_bufferView","_compression","width","pixelStorei","UNPACK_ALIGNMENT","compressedTexImage2D","getCaps","s3tc","height","texImage2D","generateMipMaps","generateMipmap","isReady","createRawTexture","samplingMode","creationFlags","baseWidth","baseHeight","_useSRGBBuffer","_getUseSRGBBuffer","filters","_getSamplingParameters","texParameteri","TEXTURE_MAG_FILTER","mag","TEXTURE_MIN_FILTER","min","_internalTexturesCache","push","createRawCubeTexture","size","gl","isCube","_bufferViewArray","RGB","RGBA","FLOAT","_caps","textureFloatLinearFiltering","Warn","HALF_FLOAT_OES","textureHalfFloatLinearFiltering","textureFloatRender","HALF_FLOAT","colorBufferFloat","isPot","needPOTTextures","updateRawCubeTexture","level","TEXTURE_CUBE_MAP","faceIndex","TEXTURE_CUBE_MAP_POSITIVE_X","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","needConversion","faceData","_convertRGBtoRGBATextureData","createRawCubeTextureFromUrl","url","scene","noMipmap","callback","mipmapGenerator","onLoad","onError","addPendingData","onerror","request","exception","removePendingData","status","statusText","internalCallback","faceDataArrays","mipData","length","mipSize","mipFaceData","onLoadedObservable","notifyObservers","clear","_loadFile","offlineProvider","rgbData","rgbaData","val1","Float32Array","Uint16Array","Uint32Array","Uint8Array","x","y","index","newIndex","_makeCreateRawTextureFunction","is3D","depth","target","TEXTURE_3D","TEXTURE_2D_ARRAY","source","baseDepth","is2DArray","updateRawTexture3D","updateRawTexture2DArray","createRawTexture2DArray","createRawTexture3D","_makeUpdateRawTextureFunction","internalType","compressedTexImage3D","texImage3D"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Engines/Extensions/engine.rawTexture.js"],"sourcesContent":["import { InternalTexture } from \"../../Materials/Textures/internalTexture.js\";\nimport { Logger } from \"../../Misc/logger.js\";\n\nimport { ThinEngine } from \"../thinEngine.js\";\nimport { IsExponentOfTwo } from \"../../Misc/tools.functions.js\";\nThinEngine.prototype.updateRawTexture = function (texture, data, format, invertY, compression = null, type = 0, useSRGBBuffer = false) {\n if (!texture) {\n return;\n }\n // Babylon's internalSizedFomat but gl's texImage2D internalFormat\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type, format, useSRGBBuffer);\n // Babylon's internalFormat but gl's texImage2D format\n const internalFormat = this._getInternalFormat(format);\n const textureType = this._getWebGLTextureType(type);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n texture.format = format;\n texture.type = type;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (texture.width % 4 !== 0) {\n this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT, 1);\n }\n if (compression && data) {\n this._gl.compressedTexImage2D(this._gl.TEXTURE_2D, 0, this.getCaps().s3tc[compression], texture.width, texture.height, 0, data);\n }\n else {\n this._gl.texImage2D(this._gl.TEXTURE_2D, 0, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, data);\n }\n if (texture.generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n // this.resetTextureCache();\n texture.isReady = true;\n};\nThinEngine.prototype.createRawTexture = function (data, width, height, format, generateMipMaps, invertY, samplingMode, compression = null, type = 0, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ncreationFlags = 0, useSRGBBuffer = false) {\n const texture = new InternalTexture(this, 3 /* InternalTextureSource.Raw */);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.format = format;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.invertY = invertY;\n texture._compression = compression;\n texture.type = type;\n texture._useSRGBBuffer = this._getUseSRGBBuffer(useSRGBBuffer, !generateMipMaps);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n this.updateRawTexture(texture, data, format, invertY, compression, type, texture._useSRGBBuffer);\n this._bindTextureDirectly(this._gl.TEXTURE_2D, texture, true);\n // Filters\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MAG_FILTER, filters.mag);\n this._gl.texParameteri(this._gl.TEXTURE_2D, this._gl.TEXTURE_MIN_FILTER, filters.min);\n if (generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_2D);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_2D, null);\n this._internalTexturesCache.push(texture);\n return texture;\n};\nThinEngine.prototype.createRawCubeTexture = function (data, size, format, type, generateMipMaps, invertY, samplingMode, compression = null) {\n const gl = this._gl;\n const texture = new InternalTexture(this, 8 /* InternalTextureSource.CubeRaw */);\n texture.isCube = true;\n texture.format = format;\n texture.type = type;\n if (!this._doNotHandleContextLost) {\n texture._bufferViewArray = data;\n }\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n }\n // Mipmap generation needs a sized internal format that is both color-renderable and texture-filterable\n if (textureType === gl.FLOAT && !this._caps.textureFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = 1;\n Logger.Warn(\"Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n }\n else if (textureType === this._gl.HALF_FLOAT_OES && !this._caps.textureHalfFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = 1;\n Logger.Warn(\"Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n }\n else if (textureType === gl.FLOAT && !this._caps.textureFloatRender) {\n generateMipMaps = false;\n Logger.Warn(\"Render to float textures is not supported. Mipmap generation forced to false.\");\n }\n else if (textureType === gl.HALF_FLOAT && !this._caps.colorBufferFloat) {\n generateMipMaps = false;\n Logger.Warn(\"Render to half float textures is not supported. Mipmap generation forced to false.\");\n }\n const width = size;\n const height = width;\n texture.width = width;\n texture.height = height;\n texture.invertY = invertY;\n texture._compression = compression;\n // Double check on POT to generate Mips.\n const isPot = !this.needPOTTextures || (IsExponentOfTwo(texture.width) && IsExponentOfTwo(texture.height));\n if (!isPot) {\n generateMipMaps = false;\n }\n // Upload data if needed. The texture won't be ready until then.\n if (data) {\n this.updateRawCubeTexture(texture, data, format, type, invertY, compression);\n }\n else {\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n const level = 0;\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n if (compression) {\n gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, this.getCaps().s3tc[compression], texture.width, texture.height, 0, undefined);\n }\n else {\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, null);\n }\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, texture, true);\n // Filters\n if (data && generateMipMaps) {\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n }\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, filters.mag);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, filters.min);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.isReady = true;\n return texture;\n};\nThinEngine.prototype.updateRawCubeTexture = function (texture, data, format, type, invertY, compression = null, level = 0) {\n texture._bufferViewArray = data;\n texture.format = format;\n texture.type = type;\n texture.invertY = invertY;\n texture._compression = compression;\n const gl = this._gl;\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n let needConversion = false;\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n needConversion = true;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (texture.width % 4 !== 0) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n // Data are known to be in +X +Y +Z -X -Y -Z\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let faceData = data[faceIndex];\n if (compression) {\n gl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, this.getCaps().s3tc[compression], texture.width, texture.height, 0, faceData);\n }\n else {\n if (needConversion) {\n faceData = _convertRGBtoRGBATextureData(faceData, texture.width, texture.height, type);\n }\n gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + faceIndex, level, internalSizedFomat, texture.width, texture.height, 0, internalFormat, textureType, faceData);\n }\n }\n const isPot = !this.needPOTTextures || (IsExponentOfTwo(texture.width) && IsExponentOfTwo(texture.height));\n if (isPot && texture.generateMipMaps && level === 0) {\n this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);\n }\n this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP, null);\n // this.resetTextureCache();\n texture.isReady = true;\n};\nThinEngine.prototype.createRawCubeTextureFromUrl = function (url, scene, size, format, type, noMipmap, callback, mipmapGenerator, onLoad = null, onError = null, samplingMode = 3, invertY = false) {\n const gl = this._gl;\n const texture = this.createRawCubeTexture(null, size, format, type, !noMipmap, invertY, samplingMode, null);\n scene?.addPendingData(texture);\n texture.url = url;\n texture.isReady = false;\n this._internalTexturesCache.push(texture);\n const onerror = (request, exception) => {\n scene?.removePendingData(texture);\n if (onError && request) {\n onError(request.status + \" \" + request.statusText, exception);\n }\n };\n const internalCallback = (data) => {\n const width = texture.width;\n const faceDataArrays = callback(data);\n if (!faceDataArrays) {\n return;\n }\n if (mipmapGenerator) {\n const textureType = this._getWebGLTextureType(type);\n let internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(type);\n let needConversion = false;\n if (internalFormat === gl.RGB) {\n internalFormat = gl.RGBA;\n needConversion = true;\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, texture, true);\n this._unpackFlipY(false);\n const mipData = mipmapGenerator(faceDataArrays);\n for (let level = 0; level < mipData.length; level++) {\n const mipSize = width >> level;\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let mipFaceData = mipData[level][faceIndex];\n if (needConversion) {\n mipFaceData = _convertRGBtoRGBATextureData(mipFaceData, mipSize, mipSize, type);\n }\n gl.texImage2D(faceIndex, level, internalSizedFomat, mipSize, mipSize, 0, internalFormat, textureType, mipFaceData);\n }\n }\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\n }\n else {\n this.updateRawCubeTexture(texture, faceDataArrays, format, type, invertY);\n }\n texture.isReady = true;\n // this.resetTextureCache();\n scene?.removePendingData(texture);\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n if (onLoad) {\n onLoad();\n }\n };\n this._loadFile(url, (data) => {\n internalCallback(data);\n }, undefined, scene?.offlineProvider, true, onerror);\n return texture;\n};\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _convertRGBtoRGBATextureData(rgbData, width, height, textureType) {\n // Create new RGBA data container.\n let rgbaData;\n let val1 = 1;\n if (textureType === 1) {\n rgbaData = new Float32Array(width * height * 4);\n }\n else if (textureType === 2) {\n rgbaData = new Uint16Array(width * height * 4);\n val1 = 15360; // 15360 is the encoding of 1 in half float\n }\n else if (textureType === 7) {\n rgbaData = new Uint32Array(width * height * 4);\n }\n else {\n rgbaData = new Uint8Array(width * height * 4);\n }\n // Convert each pixel.\n for (let x = 0; x < width; x++) {\n for (let y = 0; y < height; y++) {\n const index = (y * width + x) * 3;\n const newIndex = (y * width + x) * 4;\n // Map Old Value to new value.\n rgbaData[newIndex + 0] = rgbData[index + 0];\n rgbaData[newIndex + 1] = rgbData[index + 1];\n rgbaData[newIndex + 2] = rgbData[index + 2];\n // Add fully opaque alpha channel.\n rgbaData[newIndex + 3] = val1;\n }\n }\n return rgbaData;\n}\n/**\n * Create a function for createRawTexture3D/createRawTexture2DArray\n * @param is3D true for TEXTURE_3D and false for TEXTURE_2D_ARRAY\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _makeCreateRawTextureFunction(is3D) {\n return function (data, width, height, depth, format, generateMipMaps, invertY, samplingMode, compression = null, textureType = 0) {\n const target = is3D ? this._gl.TEXTURE_3D : this._gl.TEXTURE_2D_ARRAY;\n const source = is3D ? 10 /* InternalTextureSource.Raw3D */ : 11 /* InternalTextureSource.Raw2DArray */;\n const texture = new InternalTexture(this, source);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.baseDepth = depth;\n texture.width = width;\n texture.height = height;\n texture.depth = depth;\n texture.format = format;\n texture.type = textureType;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n if (is3D) {\n texture.is3D = true;\n }\n else {\n texture.is2DArray = true;\n }\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n if (is3D) {\n this.updateRawTexture3D(texture, data, format, invertY, compression, textureType);\n }\n else {\n this.updateRawTexture2DArray(texture, data, format, invertY, compression, textureType);\n }\n this._bindTextureDirectly(target, texture, true);\n // Filters\n const filters = this._getSamplingParameters(samplingMode, generateMipMaps);\n this._gl.texParameteri(target, this._gl.TEXTURE_MAG_FILTER, filters.mag);\n this._gl.texParameteri(target, this._gl.TEXTURE_MIN_FILTER, filters.min);\n if (generateMipMaps) {\n this._gl.generateMipmap(target);\n }\n this._bindTextureDirectly(target, null);\n this._internalTexturesCache.push(texture);\n return texture;\n };\n}\nThinEngine.prototype.createRawTexture2DArray = _makeCreateRawTextureFunction(false);\nThinEngine.prototype.createRawTexture3D = _makeCreateRawTextureFunction(true);\n/**\n * Create a function for updateRawTexture3D/updateRawTexture2DArray\n * @param is3D true for TEXTURE_3D and false for TEXTURE_2D_ARRAY\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _makeUpdateRawTextureFunction(is3D) {\n return function (texture, data, format, invertY, compression = null, textureType = 0) {\n const target = is3D ? this._gl.TEXTURE_3D : this._gl.TEXTURE_2D_ARRAY;\n const internalType = this._getWebGLTextureType(textureType);\n const internalFormat = this._getInternalFormat(format);\n const internalSizedFomat = this._getRGBABufferInternalSizedFormat(textureType, format);\n this._bindTextureDirectly(target, texture, true);\n this._unpackFlipY(invertY === undefined ? true : invertY ? true : false);\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n texture.format = format;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (texture.width % 4 !== 0) {\n this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT, 1);\n }\n if (compression && data) {\n this._gl.compressedTexImage3D(target, 0, this.getCaps().s3tc[compression], texture.width, texture.height, texture.depth, 0, data);\n }\n else {\n this._gl.texImage3D(target, 0, internalSizedFomat, texture.width, texture.height, texture.depth, 0, internalFormat, internalType, data);\n }\n if (texture.generateMipMaps) {\n this._gl.generateMipmap(target);\n }\n this._bindTextureDirectly(target, null);\n // this.resetTextureCache();\n texture.isReady = true;\n };\n}\nThinEngine.prototype.updateRawTexture2DArray = _makeUpdateRawTextureFunction(false);\nThinEngine.prototype.updateRawTexture3D = _makeUpdateRawTextureFunction(true);\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,6CAA6C;AAC7E,SAASC,MAAM,QAAQ,sBAAsB;AAE7C,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,eAAe,QAAQ,+BAA+B;AAC/DD,UAAU,CAACE,SAAS,CAACC,gBAAgB,GAAG,UAAUC,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,GAAG,IAAI,EAAEC,IAAI,GAAG,CAAC,EAAEC,aAAa,GAAG,KAAK,EAAE;EACnI,IAAI,CAACN,OAAO,EAAE;IACV;EACJ;EACA;EACA,MAAMO,kBAAkB,GAAG,IAAI,CAACC,iCAAiC,CAACH,IAAI,EAAEH,MAAM,EAAEI,aAAa,CAAC;EAC9F;EACA,MAAMG,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACR,MAAM,CAAC;EACtD,MAAMS,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACP,IAAI,CAAC;EACnD,IAAI,CAACQ,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACC,UAAU,EAAEf,OAAO,EAAE,IAAI,CAAC;EAC7D,IAAI,CAACgB,YAAY,CAACb,OAAO,KAAKc,SAAS,GAAG,IAAI,GAAGd,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;EACxE,IAAI,CAAC,IAAI,CAACe,uBAAuB,EAAE;IAC/BlB,OAAO,CAACmB,WAAW,GAAGlB,IAAI;IAC1BD,OAAO,CAACE,MAAM,GAAGA,MAAM;IACvBF,OAAO,CAACK,IAAI,GAAGA,IAAI;IACnBL,OAAO,CAACG,OAAO,GAAGA,OAAO;IACzBH,OAAO,CAACoB,YAAY,GAAGhB,WAAW;EACtC;EACA,IAAIJ,OAAO,CAACqB,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;IACzB,IAAI,CAACP,GAAG,CAACQ,WAAW,CAAC,IAAI,CAACR,GAAG,CAACS,gBAAgB,EAAE,CAAC,CAAC;EACtD;EACA,IAAInB,WAAW,IAAIH,IAAI,EAAE;IACrB,IAAI,CAACa,GAAG,CAACU,oBAAoB,CAAC,IAAI,CAACV,GAAG,CAACC,UAAU,EAAE,CAAC,EAAE,IAAI,CAACU,OAAO,CAAC,CAAC,CAACC,IAAI,CAACtB,WAAW,CAAC,EAAEJ,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE,CAAC,EAAE1B,IAAI,CAAC;EACnI,CAAC,MACI;IACD,IAAI,CAACa,GAAG,CAACc,UAAU,CAAC,IAAI,CAACd,GAAG,CAACC,UAAU,EAAE,CAAC,EAAER,kBAAkB,EAAEP,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE,CAAC,EAAElB,cAAc,EAAEE,WAAW,EAAEV,IAAI,CAAC;EACxI;EACA,IAAID,OAAO,CAAC6B,eAAe,EAAE;IACzB,IAAI,CAACf,GAAG,CAACgB,cAAc,CAAC,IAAI,CAAChB,GAAG,CAACC,UAAU,CAAC;EAChD;EACA,IAAI,CAACF,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACC,UAAU,EAAE,IAAI,CAAC;EACpD;EACAf,OAAO,CAAC+B,OAAO,GAAG,IAAI;AAC1B,CAAC;AACDnC,UAAU,CAACE,SAAS,CAACkC,gBAAgB,GAAG,UAAU/B,IAAI,EAAEoB,KAAK,EAAEM,MAAM,EAAEzB,MAAM,EAAE2B,eAAe,EAAE1B,OAAO,EAAE8B,YAAY,EAAE7B,WAAW,GAAG,IAAI,EAAEC,IAAI,GAAG,CAAC;AACnJ;AACA6B,aAAa,GAAG,CAAC,EAAE5B,aAAa,GAAG,KAAK,EAAE;EACtC,MAAMN,OAAO,GAAG,IAAIN,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,+BAA+B,CAAC;EAC5EM,OAAO,CAACmC,SAAS,GAAGd,KAAK;EACzBrB,OAAO,CAACoC,UAAU,GAAGT,MAAM;EAC3B3B,OAAO,CAACqB,KAAK,GAAGA,KAAK;EACrBrB,OAAO,CAAC2B,MAAM,GAAGA,MAAM;EACvB3B,OAAO,CAACE,MAAM,GAAGA,MAAM;EACvBF,OAAO,CAAC6B,eAAe,GAAGA,eAAe;EACzC7B,OAAO,CAACiC,YAAY,GAAGA,YAAY;EACnCjC,OAAO,CAACG,OAAO,GAAGA,OAAO;EACzBH,OAAO,CAACoB,YAAY,GAAGhB,WAAW;EAClCJ,OAAO,CAACK,IAAI,GAAGA,IAAI;EACnBL,OAAO,CAACqC,cAAc,GAAG,IAAI,CAACC,iBAAiB,CAAChC,aAAa,EAAE,CAACuB,eAAe,CAAC;EAChF,IAAI,CAAC,IAAI,CAACX,uBAAuB,EAAE;IAC/BlB,OAAO,CAACmB,WAAW,GAAGlB,IAAI;EAC9B;EACA,IAAI,CAACF,gBAAgB,CAACC,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAEC,IAAI,EAAEL,OAAO,CAACqC,cAAc,CAAC;EAChG,IAAI,CAACxB,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACC,UAAU,EAAEf,OAAO,EAAE,IAAI,CAAC;EAC7D;EACA,MAAMuC,OAAO,GAAG,IAAI,CAACC,sBAAsB,CAACP,YAAY,EAAEJ,eAAe,CAAC;EAC1E,IAAI,CAACf,GAAG,CAAC2B,aAAa,CAAC,IAAI,CAAC3B,GAAG,CAACC,UAAU,EAAE,IAAI,CAACD,GAAG,CAAC4B,kBAAkB,EAAEH,OAAO,CAACI,GAAG,CAAC;EACrF,IAAI,CAAC7B,GAAG,CAAC2B,aAAa,CAAC,IAAI,CAAC3B,GAAG,CAACC,UAAU,EAAE,IAAI,CAACD,GAAG,CAAC8B,kBAAkB,EAAEL,OAAO,CAACM,GAAG,CAAC;EACrF,IAAIhB,eAAe,EAAE;IACjB,IAAI,CAACf,GAAG,CAACgB,cAAc,CAAC,IAAI,CAAChB,GAAG,CAACC,UAAU,CAAC;EAChD;EACA,IAAI,CAACF,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACC,UAAU,EAAE,IAAI,CAAC;EACpD,IAAI,CAAC+B,sBAAsB,CAACC,IAAI,CAAC/C,OAAO,CAAC;EACzC,OAAOA,OAAO;AAClB,CAAC;AACDJ,UAAU,CAACE,SAAS,CAACkD,oBAAoB,GAAG,UAAU/C,IAAI,EAAEgD,IAAI,EAAE/C,MAAM,EAAEG,IAAI,EAAEwB,eAAe,EAAE1B,OAAO,EAAE8B,YAAY,EAAE7B,WAAW,GAAG,IAAI,EAAE;EACxI,MAAM8C,EAAE,GAAG,IAAI,CAACpC,GAAG;EACnB,MAAMd,OAAO,GAAG,IAAIN,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,mCAAmC,CAAC;EAChFM,OAAO,CAACmD,MAAM,GAAG,IAAI;EACrBnD,OAAO,CAACE,MAAM,GAAGA,MAAM;EACvBF,OAAO,CAACK,IAAI,GAAGA,IAAI;EACnB,IAAI,CAAC,IAAI,CAACa,uBAAuB,EAAE;IAC/BlB,OAAO,CAACoD,gBAAgB,GAAGnD,IAAI;EACnC;EACA,MAAMU,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACP,IAAI,CAAC;EACnD,IAAII,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACR,MAAM,CAAC;EACpD,IAAIO,cAAc,KAAKyC,EAAE,CAACG,GAAG,EAAE;IAC3B5C,cAAc,GAAGyC,EAAE,CAACI,IAAI;EAC5B;EACA;EACA,IAAI3C,WAAW,KAAKuC,EAAE,CAACK,KAAK,IAAI,CAAC,IAAI,CAACC,KAAK,CAACC,2BAA2B,EAAE;IACrE5B,eAAe,GAAG,KAAK;IACvBI,YAAY,GAAG,CAAC;IAChBtC,MAAM,CAAC+D,IAAI,CAAC,mJAAmJ,CAAC;EACpK,CAAC,MACI,IAAI/C,WAAW,KAAK,IAAI,CAACG,GAAG,CAAC6C,cAAc,IAAI,CAAC,IAAI,CAACH,KAAK,CAACI,+BAA+B,EAAE;IAC7F/B,eAAe,GAAG,KAAK;IACvBI,YAAY,GAAG,CAAC;IAChBtC,MAAM,CAAC+D,IAAI,CAAC,wJAAwJ,CAAC;EACzK,CAAC,MACI,IAAI/C,WAAW,KAAKuC,EAAE,CAACK,KAAK,IAAI,CAAC,IAAI,CAACC,KAAK,CAACK,kBAAkB,EAAE;IACjEhC,eAAe,GAAG,KAAK;IACvBlC,MAAM,CAAC+D,IAAI,CAAC,+EAA+E,CAAC;EAChG,CAAC,MACI,IAAI/C,WAAW,KAAKuC,EAAE,CAACY,UAAU,IAAI,CAAC,IAAI,CAACN,KAAK,CAACO,gBAAgB,EAAE;IACpElC,eAAe,GAAG,KAAK;IACvBlC,MAAM,CAAC+D,IAAI,CAAC,oFAAoF,CAAC;EACrG;EACA,MAAMrC,KAAK,GAAG4B,IAAI;EAClB,MAAMtB,MAAM,GAAGN,KAAK;EACpBrB,OAAO,CAACqB,KAAK,GAAGA,KAAK;EACrBrB,OAAO,CAAC2B,MAAM,GAAGA,MAAM;EACvB3B,OAAO,CAACG,OAAO,GAAGA,OAAO;EACzBH,OAAO,CAACoB,YAAY,GAAGhB,WAAW;EAClC;EACA,MAAM4D,KAAK,GAAG,CAAC,IAAI,CAACC,eAAe,IAAKpE,eAAe,CAACG,OAAO,CAACqB,KAAK,CAAC,IAAIxB,eAAe,CAACG,OAAO,CAAC2B,MAAM,CAAE;EAC1G,IAAI,CAACqC,KAAK,EAAE;IACRnC,eAAe,GAAG,KAAK;EAC3B;EACA;EACA,IAAI5B,IAAI,EAAE;IACN,IAAI,CAACiE,oBAAoB,CAAClE,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEG,IAAI,EAAEF,OAAO,EAAEC,WAAW,CAAC;EAChF,CAAC,MACI;IACD,MAAMG,kBAAkB,GAAG,IAAI,CAACC,iCAAiC,CAACH,IAAI,CAAC;IACvE,MAAM8D,KAAK,GAAG,CAAC;IACf,IAAI,CAACtD,oBAAoB,CAACqC,EAAE,CAACkB,gBAAgB,EAAEpE,OAAO,EAAE,IAAI,CAAC;IAC7D,KAAK,IAAIqE,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAEA,SAAS,EAAE,EAAE;MAChD,IAAIjE,WAAW,EAAE;QACb8C,EAAE,CAAC1B,oBAAoB,CAAC0B,EAAE,CAACoB,2BAA2B,GAAGD,SAAS,EAAEF,KAAK,EAAE,IAAI,CAAC1C,OAAO,CAAC,CAAC,CAACC,IAAI,CAACtB,WAAW,CAAC,EAAEJ,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE,CAAC,EAAEV,SAAS,CAAC;MAC7J,CAAC,MACI;QACDiC,EAAE,CAACtB,UAAU,CAACsB,EAAE,CAACoB,2BAA2B,GAAGD,SAAS,EAAEF,KAAK,EAAE5D,kBAAkB,EAAEP,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE,CAAC,EAAElB,cAAc,EAAEE,WAAW,EAAE,IAAI,CAAC;MAC7J;IACJ;IACA,IAAI,CAACE,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACsD,gBAAgB,EAAE,IAAI,CAAC;EAC9D;EACA,IAAI,CAACvD,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACsD,gBAAgB,EAAEpE,OAAO,EAAE,IAAI,CAAC;EACnE;EACA,IAAIC,IAAI,IAAI4B,eAAe,EAAE;IACzB,IAAI,CAACf,GAAG,CAACgB,cAAc,CAAC,IAAI,CAAChB,GAAG,CAACsD,gBAAgB,CAAC;EACtD;EACA,MAAM7B,OAAO,GAAG,IAAI,CAACC,sBAAsB,CAACP,YAAY,EAAEJ,eAAe,CAAC;EAC1EqB,EAAE,CAACT,aAAa,CAACS,EAAE,CAACkB,gBAAgB,EAAElB,EAAE,CAACR,kBAAkB,EAAEH,OAAO,CAACI,GAAG,CAAC;EACzEO,EAAE,CAACT,aAAa,CAACS,EAAE,CAACkB,gBAAgB,EAAElB,EAAE,CAACN,kBAAkB,EAAEL,OAAO,CAACM,GAAG,CAAC;EACzEK,EAAE,CAACT,aAAa,CAACS,EAAE,CAACkB,gBAAgB,EAAElB,EAAE,CAACqB,cAAc,EAAErB,EAAE,CAACsB,aAAa,CAAC;EAC1EtB,EAAE,CAACT,aAAa,CAACS,EAAE,CAACkB,gBAAgB,EAAElB,EAAE,CAACuB,cAAc,EAAEvB,EAAE,CAACsB,aAAa,CAAC;EAC1E,IAAI,CAAC3D,oBAAoB,CAACqC,EAAE,CAACkB,gBAAgB,EAAE,IAAI,CAAC;EACpDpE,OAAO,CAAC6B,eAAe,GAAGA,eAAe;EACzC7B,OAAO,CAACiC,YAAY,GAAGA,YAAY;EACnCjC,OAAO,CAAC+B,OAAO,GAAG,IAAI;EACtB,OAAO/B,OAAO;AAClB,CAAC;AACDJ,UAAU,CAACE,SAAS,CAACoE,oBAAoB,GAAG,UAAUlE,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEG,IAAI,EAAEF,OAAO,EAAEC,WAAW,GAAG,IAAI,EAAE+D,KAAK,GAAG,CAAC,EAAE;EACvHnE,OAAO,CAACoD,gBAAgB,GAAGnD,IAAI;EAC/BD,OAAO,CAACE,MAAM,GAAGA,MAAM;EACvBF,OAAO,CAACK,IAAI,GAAGA,IAAI;EACnBL,OAAO,CAACG,OAAO,GAAGA,OAAO;EACzBH,OAAO,CAACoB,YAAY,GAAGhB,WAAW;EAClC,MAAM8C,EAAE,GAAG,IAAI,CAACpC,GAAG;EACnB,MAAMH,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACP,IAAI,CAAC;EACnD,IAAII,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACR,MAAM,CAAC;EACpD,MAAMK,kBAAkB,GAAG,IAAI,CAACC,iCAAiC,CAACH,IAAI,CAAC;EACvE,IAAIqE,cAAc,GAAG,KAAK;EAC1B,IAAIjE,cAAc,KAAKyC,EAAE,CAACG,GAAG,EAAE;IAC3B5C,cAAc,GAAGyC,EAAE,CAACI,IAAI;IACxBoB,cAAc,GAAG,IAAI;EACzB;EACA,IAAI,CAAC7D,oBAAoB,CAACqC,EAAE,CAACkB,gBAAgB,EAAEpE,OAAO,EAAE,IAAI,CAAC;EAC7D,IAAI,CAACgB,YAAY,CAACb,OAAO,KAAKc,SAAS,GAAG,IAAI,GAAGd,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;EACxE,IAAIH,OAAO,CAACqB,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;IACzB6B,EAAE,CAAC5B,WAAW,CAAC4B,EAAE,CAAC3B,gBAAgB,EAAE,CAAC,CAAC;EAC1C;EACA;EACA,KAAK,IAAI8C,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAEA,SAAS,EAAE,EAAE;IAChD,IAAIM,QAAQ,GAAG1E,IAAI,CAACoE,SAAS,CAAC;IAC9B,IAAIjE,WAAW,EAAE;MACb8C,EAAE,CAAC1B,oBAAoB,CAAC0B,EAAE,CAACoB,2BAA2B,GAAGD,SAAS,EAAEF,KAAK,EAAE,IAAI,CAAC1C,OAAO,CAAC,CAAC,CAACC,IAAI,CAACtB,WAAW,CAAC,EAAEJ,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE,CAAC,EAAEgD,QAAQ,CAAC;IAC5J,CAAC,MACI;MACD,IAAID,cAAc,EAAE;QAChBC,QAAQ,GAAGC,4BAA4B,CAACD,QAAQ,EAAE3E,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAEtB,IAAI,CAAC;MAC1F;MACA6C,EAAE,CAACtB,UAAU,CAACsB,EAAE,CAACoB,2BAA2B,GAAGD,SAAS,EAAEF,KAAK,EAAE5D,kBAAkB,EAAEP,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE,CAAC,EAAElB,cAAc,EAAEE,WAAW,EAAEgE,QAAQ,CAAC;IACjK;EACJ;EACA,MAAMX,KAAK,GAAG,CAAC,IAAI,CAACC,eAAe,IAAKpE,eAAe,CAACG,OAAO,CAACqB,KAAK,CAAC,IAAIxB,eAAe,CAACG,OAAO,CAAC2B,MAAM,CAAE;EAC1G,IAAIqC,KAAK,IAAIhE,OAAO,CAAC6B,eAAe,IAAIsC,KAAK,KAAK,CAAC,EAAE;IACjD,IAAI,CAACrD,GAAG,CAACgB,cAAc,CAAC,IAAI,CAAChB,GAAG,CAACsD,gBAAgB,CAAC;EACtD;EACA,IAAI,CAACvD,oBAAoB,CAAC,IAAI,CAACC,GAAG,CAACsD,gBAAgB,EAAE,IAAI,CAAC;EAC1D;EACApE,OAAO,CAAC+B,OAAO,GAAG,IAAI;AAC1B,CAAC;AACDnC,UAAU,CAACE,SAAS,CAAC+E,2BAA2B,GAAG,UAAUC,GAAG,EAAEC,KAAK,EAAE9B,IAAI,EAAE/C,MAAM,EAAEG,IAAI,EAAE2E,QAAQ,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,MAAM,GAAG,IAAI,EAAEC,OAAO,GAAG,IAAI,EAAEnD,YAAY,GAAG,CAAC,EAAE9B,OAAO,GAAG,KAAK,EAAE;EAChM,MAAM+C,EAAE,GAAG,IAAI,CAACpC,GAAG;EACnB,MAAMd,OAAO,GAAG,IAAI,CAACgD,oBAAoB,CAAC,IAAI,EAAEC,IAAI,EAAE/C,MAAM,EAAEG,IAAI,EAAE,CAAC2E,QAAQ,EAAE7E,OAAO,EAAE8B,YAAY,EAAE,IAAI,CAAC;EAC3G8C,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEM,cAAc,CAACrF,OAAO,CAAC;EAC9BA,OAAO,CAAC8E,GAAG,GAAGA,GAAG;EACjB9E,OAAO,CAAC+B,OAAO,GAAG,KAAK;EACvB,IAAI,CAACe,sBAAsB,CAACC,IAAI,CAAC/C,OAAO,CAAC;EACzC,MAAMsF,OAAO,GAAGA,CAACC,OAAO,EAAEC,SAAS,KAAK;IACpCT,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEU,iBAAiB,CAACzF,OAAO,CAAC;IACjC,IAAIoF,OAAO,IAAIG,OAAO,EAAE;MACpBH,OAAO,CAACG,OAAO,CAACG,MAAM,GAAG,GAAG,GAAGH,OAAO,CAACI,UAAU,EAAEH,SAAS,CAAC;IACjE;EACJ,CAAC;EACD,MAAMI,gBAAgB,GAAI3F,IAAI,IAAK;IAC/B,MAAMoB,KAAK,GAAGrB,OAAO,CAACqB,KAAK;IAC3B,MAAMwE,cAAc,GAAGZ,QAAQ,CAAChF,IAAI,CAAC;IACrC,IAAI,CAAC4F,cAAc,EAAE;MACjB;IACJ;IACA,IAAIX,eAAe,EAAE;MACjB,MAAMvE,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACP,IAAI,CAAC;MACnD,IAAII,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACR,MAAM,CAAC;MACpD,MAAMK,kBAAkB,GAAG,IAAI,CAACC,iCAAiC,CAACH,IAAI,CAAC;MACvE,IAAIqE,cAAc,GAAG,KAAK;MAC1B,IAAIjE,cAAc,KAAKyC,EAAE,CAACG,GAAG,EAAE;QAC3B5C,cAAc,GAAGyC,EAAE,CAACI,IAAI;QACxBoB,cAAc,GAAG,IAAI;MACzB;MACA,IAAI,CAAC7D,oBAAoB,CAACqC,EAAE,CAACkB,gBAAgB,EAAEpE,OAAO,EAAE,IAAI,CAAC;MAC7D,IAAI,CAACgB,YAAY,CAAC,KAAK,CAAC;MACxB,MAAM8E,OAAO,GAAGZ,eAAe,CAACW,cAAc,CAAC;MAC/C,KAAK,IAAI1B,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG2B,OAAO,CAACC,MAAM,EAAE5B,KAAK,EAAE,EAAE;QACjD,MAAM6B,OAAO,GAAG3E,KAAK,IAAI8C,KAAK;QAC9B,KAAK,IAAIE,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAEA,SAAS,EAAE,EAAE;UAChD,IAAI4B,WAAW,GAAGH,OAAO,CAAC3B,KAAK,CAAC,CAACE,SAAS,CAAC;UAC3C,IAAIK,cAAc,EAAE;YAChBuB,WAAW,GAAGrB,4BAA4B,CAACqB,WAAW,EAAED,OAAO,EAAEA,OAAO,EAAE3F,IAAI,CAAC;UACnF;UACA6C,EAAE,CAACtB,UAAU,CAACyC,SAAS,EAAEF,KAAK,EAAE5D,kBAAkB,EAAEyF,OAAO,EAAEA,OAAO,EAAE,CAAC,EAAEvF,cAAc,EAAEE,WAAW,EAAEsF,WAAW,CAAC;QACtH;MACJ;MACA,IAAI,CAACpF,oBAAoB,CAACqC,EAAE,CAACkB,gBAAgB,EAAE,IAAI,CAAC;IACxD,CAAC,MACI;MACD,IAAI,CAACF,oBAAoB,CAAClE,OAAO,EAAE6F,cAAc,EAAE3F,MAAM,EAAEG,IAAI,EAAEF,OAAO,CAAC;IAC7E;IACAH,OAAO,CAAC+B,OAAO,GAAG,IAAI;IACtB;IACAgD,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEU,iBAAiB,CAACzF,OAAO,CAAC;IACjCA,OAAO,CAACkG,kBAAkB,CAACC,eAAe,CAACnG,OAAO,CAAC;IACnDA,OAAO,CAACkG,kBAAkB,CAACE,KAAK,CAAC,CAAC;IAClC,IAAIjB,MAAM,EAAE;MACRA,MAAM,CAAC,CAAC;IACZ;EACJ,CAAC;EACD,IAAI,CAACkB,SAAS,CAACvB,GAAG,EAAG7E,IAAI,IAAK;IAC1B2F,gBAAgB,CAAC3F,IAAI,CAAC;EAC1B,CAAC,EAAEgB,SAAS,EAAE8D,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEuB,eAAe,EAAE,IAAI,EAAEhB,OAAO,CAAC;EACpD,OAAOtF,OAAO;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS4E,4BAA4BA,CAAC2B,OAAO,EAAElF,KAAK,EAAEM,MAAM,EAAEhB,WAAW,EAAE;EACvE;EACA,IAAI6F,QAAQ;EACZ,IAAIC,IAAI,GAAG,CAAC;EACZ,IAAI9F,WAAW,KAAK,CAAC,EAAE;IACnB6F,QAAQ,GAAG,IAAIE,YAAY,CAACrF,KAAK,GAAGM,MAAM,GAAG,CAAC,CAAC;EACnD,CAAC,MACI,IAAIhB,WAAW,KAAK,CAAC,EAAE;IACxB6F,QAAQ,GAAG,IAAIG,WAAW,CAACtF,KAAK,GAAGM,MAAM,GAAG,CAAC,CAAC;IAC9C8E,IAAI,GAAG,KAAK,CAAC,CAAC;EAClB,CAAC,MACI,IAAI9F,WAAW,KAAK,CAAC,EAAE;IACxB6F,QAAQ,GAAG,IAAII,WAAW,CAACvF,KAAK,GAAGM,MAAM,GAAG,CAAC,CAAC;EAClD,CAAC,MACI;IACD6E,QAAQ,GAAG,IAAIK,UAAU,CAACxF,KAAK,GAAGM,MAAM,GAAG,CAAC,CAAC;EACjD;EACA;EACA,KAAK,IAAImF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGzF,KAAK,EAAEyF,CAAC,EAAE,EAAE;IAC5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpF,MAAM,EAAEoF,CAAC,EAAE,EAAE;MAC7B,MAAMC,KAAK,GAAG,CAACD,CAAC,GAAG1F,KAAK,GAAGyF,CAAC,IAAI,CAAC;MACjC,MAAMG,QAAQ,GAAG,CAACF,CAAC,GAAG1F,KAAK,GAAGyF,CAAC,IAAI,CAAC;MACpC;MACAN,QAAQ,CAACS,QAAQ,GAAG,CAAC,CAAC,GAAGV,OAAO,CAACS,KAAK,GAAG,CAAC,CAAC;MAC3CR,QAAQ,CAACS,QAAQ,GAAG,CAAC,CAAC,GAAGV,OAAO,CAACS,KAAK,GAAG,CAAC,CAAC;MAC3CR,QAAQ,CAACS,QAAQ,GAAG,CAAC,CAAC,GAAGV,OAAO,CAACS,KAAK,GAAG,CAAC,CAAC;MAC3C;MACAR,QAAQ,CAACS,QAAQ,GAAG,CAAC,CAAC,GAAGR,IAAI;IACjC;EACJ;EACA,OAAOD,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,6BAA6BA,CAACC,IAAI,EAAE;EACzC,OAAO,UAAUlH,IAAI,EAAEoB,KAAK,EAAEM,MAAM,EAAEyF,KAAK,EAAElH,MAAM,EAAE2B,eAAe,EAAE1B,OAAO,EAAE8B,YAAY,EAAE7B,WAAW,GAAG,IAAI,EAAEO,WAAW,GAAG,CAAC,EAAE;IAC9H,MAAM0G,MAAM,GAAGF,IAAI,GAAG,IAAI,CAACrG,GAAG,CAACwG,UAAU,GAAG,IAAI,CAACxG,GAAG,CAACyG,gBAAgB;IACrE,MAAMC,MAAM,GAAGL,IAAI,GAAG,EAAE,CAAC,oCAAoC,EAAE,CAAC;IAChE,MAAMnH,OAAO,GAAG,IAAIN,eAAe,CAAC,IAAI,EAAE8H,MAAM,CAAC;IACjDxH,OAAO,CAACmC,SAAS,GAAGd,KAAK;IACzBrB,OAAO,CAACoC,UAAU,GAAGT,MAAM;IAC3B3B,OAAO,CAACyH,SAAS,GAAGL,KAAK;IACzBpH,OAAO,CAACqB,KAAK,GAAGA,KAAK;IACrBrB,OAAO,CAAC2B,MAAM,GAAGA,MAAM;IACvB3B,OAAO,CAACoH,KAAK,GAAGA,KAAK;IACrBpH,OAAO,CAACE,MAAM,GAAGA,MAAM;IACvBF,OAAO,CAACK,IAAI,GAAGM,WAAW;IAC1BX,OAAO,CAAC6B,eAAe,GAAGA,eAAe;IACzC7B,OAAO,CAACiC,YAAY,GAAGA,YAAY;IACnC,IAAIkF,IAAI,EAAE;MACNnH,OAAO,CAACmH,IAAI,GAAG,IAAI;IACvB,CAAC,MACI;MACDnH,OAAO,CAAC0H,SAAS,GAAG,IAAI;IAC5B;IACA,IAAI,CAAC,IAAI,CAACxG,uBAAuB,EAAE;MAC/BlB,OAAO,CAACmB,WAAW,GAAGlB,IAAI;IAC9B;IACA,IAAIkH,IAAI,EAAE;MACN,IAAI,CAACQ,kBAAkB,CAAC3H,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAEO,WAAW,CAAC;IACrF,CAAC,MACI;MACD,IAAI,CAACiH,uBAAuB,CAAC5H,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,EAAEO,WAAW,CAAC;IAC1F;IACA,IAAI,CAACE,oBAAoB,CAACwG,MAAM,EAAErH,OAAO,EAAE,IAAI,CAAC;IAChD;IACA,MAAMuC,OAAO,GAAG,IAAI,CAACC,sBAAsB,CAACP,YAAY,EAAEJ,eAAe,CAAC;IAC1E,IAAI,CAACf,GAAG,CAAC2B,aAAa,CAAC4E,MAAM,EAAE,IAAI,CAACvG,GAAG,CAAC4B,kBAAkB,EAAEH,OAAO,CAACI,GAAG,CAAC;IACxE,IAAI,CAAC7B,GAAG,CAAC2B,aAAa,CAAC4E,MAAM,EAAE,IAAI,CAACvG,GAAG,CAAC8B,kBAAkB,EAAEL,OAAO,CAACM,GAAG,CAAC;IACxE,IAAIhB,eAAe,EAAE;MACjB,IAAI,CAACf,GAAG,CAACgB,cAAc,CAACuF,MAAM,CAAC;IACnC;IACA,IAAI,CAACxG,oBAAoB,CAACwG,MAAM,EAAE,IAAI,CAAC;IACvC,IAAI,CAACvE,sBAAsB,CAACC,IAAI,CAAC/C,OAAO,CAAC;IACzC,OAAOA,OAAO;EAClB,CAAC;AACL;AACAJ,UAAU,CAACE,SAAS,CAAC+H,uBAAuB,GAAGX,6BAA6B,CAAC,KAAK,CAAC;AACnFtH,UAAU,CAACE,SAAS,CAACgI,kBAAkB,GAAGZ,6BAA6B,CAAC,IAAI,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,SAASa,6BAA6BA,CAACZ,IAAI,EAAE;EACzC,OAAO,UAAUnH,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,WAAW,GAAG,IAAI,EAAEO,WAAW,GAAG,CAAC,EAAE;IAClF,MAAM0G,MAAM,GAAGF,IAAI,GAAG,IAAI,CAACrG,GAAG,CAACwG,UAAU,GAAG,IAAI,CAACxG,GAAG,CAACyG,gBAAgB;IACrE,MAAMS,YAAY,GAAG,IAAI,CAACpH,oBAAoB,CAACD,WAAW,CAAC;IAC3D,MAAMF,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACR,MAAM,CAAC;IACtD,MAAMK,kBAAkB,GAAG,IAAI,CAACC,iCAAiC,CAACG,WAAW,EAAET,MAAM,CAAC;IACtF,IAAI,CAACW,oBAAoB,CAACwG,MAAM,EAAErH,OAAO,EAAE,IAAI,CAAC;IAChD,IAAI,CAACgB,YAAY,CAACb,OAAO,KAAKc,SAAS,GAAG,IAAI,GAAGd,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;IACxE,IAAI,CAAC,IAAI,CAACe,uBAAuB,EAAE;MAC/BlB,OAAO,CAACmB,WAAW,GAAGlB,IAAI;MAC1BD,OAAO,CAACE,MAAM,GAAGA,MAAM;MACvBF,OAAO,CAACG,OAAO,GAAGA,OAAO;MACzBH,OAAO,CAACoB,YAAY,GAAGhB,WAAW;IACtC;IACA,IAAIJ,OAAO,CAACqB,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;MACzB,IAAI,CAACP,GAAG,CAACQ,WAAW,CAAC,IAAI,CAACR,GAAG,CAACS,gBAAgB,EAAE,CAAC,CAAC;IACtD;IACA,IAAInB,WAAW,IAAIH,IAAI,EAAE;MACrB,IAAI,CAACa,GAAG,CAACmH,oBAAoB,CAACZ,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC5F,OAAO,CAAC,CAAC,CAACC,IAAI,CAACtB,WAAW,CAAC,EAAEJ,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE3B,OAAO,CAACoH,KAAK,EAAE,CAAC,EAAEnH,IAAI,CAAC;IACrI,CAAC,MACI;MACD,IAAI,CAACa,GAAG,CAACoH,UAAU,CAACb,MAAM,EAAE,CAAC,EAAE9G,kBAAkB,EAAEP,OAAO,CAACqB,KAAK,EAAErB,OAAO,CAAC2B,MAAM,EAAE3B,OAAO,CAACoH,KAAK,EAAE,CAAC,EAAE3G,cAAc,EAAEuH,YAAY,EAAE/H,IAAI,CAAC;IAC3I;IACA,IAAID,OAAO,CAAC6B,eAAe,EAAE;MACzB,IAAI,CAACf,GAAG,CAACgB,cAAc,CAACuF,MAAM,CAAC;IACnC;IACA,IAAI,CAACxG,oBAAoB,CAACwG,MAAM,EAAE,IAAI,CAAC;IACvC;IACArH,OAAO,CAAC+B,OAAO,GAAG,IAAI;EAC1B,CAAC;AACL;AACAnC,UAAU,CAACE,SAAS,CAAC8H,uBAAuB,GAAGG,6BAA6B,CAAC,KAAK,CAAC;AACnFnI,UAAU,CAACE,SAAS,CAAC6H,kBAAkB,GAAGI,6BAA6B,CAAC,IAAI,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|