1 |
- {"ast":null,"code":"import { __decorate } from \"../../tslib.es6.js\";\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsTexture } from \"../../Misc/decorators.js\";\nimport { GetEnvironmentBRDFTexture } from \"../../Misc/brdfTextureTools.js\";\nimport { Color3 } from \"../../Maths/math.color.js\";\nimport { PBRBaseMaterial } from \"./pbrBaseMaterial.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\nimport { Material } from \"../material.js\";\nimport { SerializationHelper } from \"../../Misc/decorators.serialization.js\";\n/**\n * The Physically based material of BJS.\n *\n * This offers the main features of a standard PBR material.\n * For more information, please refer to the documentation :\n * https://doc.babylonjs.com/features/featuresDeepDive/materials/using/introToPBR\n */\nexport class PBRMaterial extends PBRBaseMaterial {\n /**\n * Stores the refracted light information in a texture.\n */\n get refractionTexture() {\n return this.subSurface.refractionTexture;\n }\n set refractionTexture(value) {\n this.subSurface.refractionTexture = value;\n if (value) {\n this.subSurface.isRefractionEnabled = true;\n } else if (!this.subSurface.linkRefractionWithTransparency) {\n this.subSurface.isRefractionEnabled = false;\n }\n }\n /**\n * Index of refraction of the material base layer.\n * https://en.wikipedia.org/wiki/List_of_refractive_indices\n *\n * This does not only impact refraction but also the Base F0 of Dielectric Materials.\n *\n * From dielectric fresnel rules: F0 = square((iorT - iorI) / (iorT + iorI))\n */\n get indexOfRefraction() {\n return this.subSurface.indexOfRefraction;\n }\n set indexOfRefraction(value) {\n this.subSurface.indexOfRefraction = value;\n }\n /**\n * Controls if refraction needs to be inverted on Y. This could be useful for procedural texture.\n */\n get invertRefractionY() {\n return this.subSurface.invertRefractionY;\n }\n set invertRefractionY(value) {\n this.subSurface.invertRefractionY = value;\n }\n /**\n * This parameters will make the material used its opacity to control how much it is refracting against not.\n * Materials half opaque for instance using refraction could benefit from this control.\n */\n get linkRefractionWithTransparency() {\n return this.subSurface.linkRefractionWithTransparency;\n }\n set linkRefractionWithTransparency(value) {\n this.subSurface.linkRefractionWithTransparency = value;\n if (value) {\n this.subSurface.isRefractionEnabled = true;\n }\n }\n /**\n * BJS is using an hardcoded light falloff based on a manually sets up range.\n * In PBR, one way to represents the falloff is to use the inverse squared root algorithm.\n * This parameter can help you switch back to the BJS mode in order to create scenes using both materials.\n */\n get usePhysicalLightFalloff() {\n return this._lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_PHYSICAL;\n }\n /**\n * BJS is using an hardcoded light falloff based on a manually sets up range.\n * In PBR, one way to represents the falloff is to use the inverse squared root algorithm.\n * This parameter can help you switch back to the BJS mode in order to create scenes using both materials.\n */\n set usePhysicalLightFalloff(value) {\n if (value !== this.usePhysicalLightFalloff) {\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n if (value) {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_PHYSICAL;\n } else {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_STANDARD;\n }\n }\n }\n /**\n * In order to support the falloff compatibility with gltf, a special mode has been added\n * to reproduce the gltf light falloff.\n */\n get useGLTFLightFalloff() {\n return this._lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_GLTF;\n }\n /**\n * In order to support the falloff compatibility with gltf, a special mode has been added\n * to reproduce the gltf light falloff.\n */\n set useGLTFLightFalloff(value) {\n if (value !== this.useGLTFLightFalloff) {\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n if (value) {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_GLTF;\n } else {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_STANDARD;\n }\n }\n }\n /**\n * Gets the image processing configuration used either in this material.\n */\n get imageProcessingConfiguration() {\n return this._imageProcessingConfiguration;\n }\n /**\n * Sets the Default image processing configuration used either in the this material.\n *\n * If sets to null, the scene one is in use.\n */\n set imageProcessingConfiguration(value) {\n this._attachImageProcessingConfiguration(value);\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n }\n /**\n * Gets whether the color curves effect is enabled.\n */\n get cameraColorCurvesEnabled() {\n return this.imageProcessingConfiguration.colorCurvesEnabled;\n }\n /**\n * Sets whether the color curves effect is enabled.\n */\n set cameraColorCurvesEnabled(value) {\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n get cameraColorGradingEnabled() {\n return this.imageProcessingConfiguration.colorGradingEnabled;\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n set cameraColorGradingEnabled(value) {\n this.imageProcessingConfiguration.colorGradingEnabled = value;\n }\n /**\n * Gets whether tonemapping is enabled or not.\n */\n get cameraToneMappingEnabled() {\n return this._imageProcessingConfiguration.toneMappingEnabled;\n }\n /**\n * Sets whether tonemapping is enabled or not\n */\n set cameraToneMappingEnabled(value) {\n this._imageProcessingConfiguration.toneMappingEnabled = value;\n }\n /**\n * The camera exposure used on this material.\n * This property is here and not in the camera to allow controlling exposure without full screen post process.\n * This corresponds to a photographic exposure.\n */\n get cameraExposure() {\n return this._imageProcessingConfiguration.exposure;\n }\n /**\n * The camera exposure used on this material.\n * This property is here and not in the camera to allow controlling exposure without full screen post process.\n * This corresponds to a photographic exposure.\n */\n set cameraExposure(value) {\n this._imageProcessingConfiguration.exposure = value;\n }\n /**\n * Gets The camera contrast used on this material.\n */\n get cameraContrast() {\n return this._imageProcessingConfiguration.contrast;\n }\n /**\n * Sets The camera contrast used on this material.\n */\n set cameraContrast(value) {\n this._imageProcessingConfiguration.contrast = value;\n }\n /**\n * Gets the Color Grading 2D Lookup Texture.\n */\n get cameraColorGradingTexture() {\n return this._imageProcessingConfiguration.colorGradingTexture;\n }\n /**\n * Sets the Color Grading 2D Lookup Texture.\n */\n set cameraColorGradingTexture(value) {\n this._imageProcessingConfiguration.colorGradingTexture = value;\n }\n /**\n * The color grading curves provide additional color adjustment that is applied after any color grading transform (3D LUT).\n * They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects.\n * These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image;\n * corresponding to low luminance, medium luminance, and high luminance areas respectively.\n */\n get cameraColorCurves() {\n return this._imageProcessingConfiguration.colorCurves;\n }\n /**\n * The color grading curves provide additional color adjustment that is applied after any color grading transform (3D LUT).\n * They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects.\n * These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image;\n * corresponding to low luminance, medium luminance, and high luminance areas respectively.\n */\n set cameraColorCurves(value) {\n this._imageProcessingConfiguration.colorCurves = value;\n }\n /**\n * Instantiates a new PBRMaterial instance.\n *\n * @param name The material name\n * @param scene The scene the material will be use in.\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\n */\n constructor(name, scene, forceGLSL = false) {\n super(name, scene, forceGLSL);\n /**\n * Intensity of the direct lights e.g. the four lights available in your scene.\n * This impacts both the direct diffuse and specular highlights.\n */\n this.directIntensity = 1.0;\n /**\n * Intensity of the emissive part of the material.\n * This helps controlling the emissive effect without modifying the emissive color.\n */\n this.emissiveIntensity = 1.0;\n /**\n * Intensity of the environment e.g. how much the environment will light the object\n * either through harmonics for rough material or through the reflection for shiny ones.\n */\n this.environmentIntensity = 1.0;\n /**\n * This is a special control allowing the reduction of the specular highlights coming from the\n * four lights of the scene. Those highlights may not be needed in full environment lighting.\n */\n this.specularIntensity = 1.0;\n /**\n * Debug Control allowing disabling the bump map on this material.\n */\n this.disableBumpMap = false;\n /**\n * AKA Occlusion Texture Intensity in other nomenclature.\n */\n this.ambientTextureStrength = 1.0;\n /**\n * Defines how much the AO map is occluding the analytical lights (point spot...).\n * 1 means it completely occludes it\n * 0 mean it has no impact\n */\n this.ambientTextureImpactOnAnalyticalLights = PBRMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;\n /**\n * In metallic workflow, specifies an F0 factor to help configuring the material F0.\n * By default the indexOfrefraction is used to compute F0;\n *\n * This is used as a factor against the default reflectance at normal incidence to tweak it.\n *\n * F0 = defaultF0 * metallicF0Factor * metallicReflectanceColor;\n * F90 = metallicReflectanceColor;\n */\n this.metallicF0Factor = 1;\n /**\n * In metallic workflow, specifies an F0 color.\n * By default the F90 is always 1;\n *\n * Please note that this factor is also used as a factor against the default reflectance at normal incidence.\n *\n * F0 = defaultF0_from_IOR * metallicF0Factor * metallicReflectanceColor\n * F90 = metallicF0Factor;\n */\n this.metallicReflectanceColor = Color3.White();\n /**\n * Specifies that only the A channel from metallicReflectanceTexture should be used.\n * If false, both RGB and A channels will be used\n */\n this.useOnlyMetallicFromMetallicReflectanceTexture = false;\n /**\n * The color of a material in ambient lighting.\n */\n this.ambientColor = new Color3(0, 0, 0);\n /**\n * AKA Diffuse Color in other nomenclature.\n */\n this.albedoColor = new Color3(1, 1, 1);\n /**\n * AKA Specular Color in other nomenclature.\n */\n this.reflectivityColor = new Color3(1, 1, 1);\n /**\n * The color reflected from the material.\n */\n this.reflectionColor = new Color3(1.0, 1.0, 1.0);\n /**\n * The color emitted from the material.\n */\n this.emissiveColor = new Color3(0, 0, 0);\n /**\n * AKA Glossiness in other nomenclature.\n */\n this.microSurface = 1.0;\n /**\n * If true, the light map contains occlusion information instead of lighting info.\n */\n this.useLightmapAsShadowmap = false;\n /**\n * Specifies that the alpha is coming form the albedo channel alpha channel for alpha blending.\n */\n this.useAlphaFromAlbedoTexture = false;\n /**\n * Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.\n */\n this.forceAlphaTest = false;\n /**\n * Defines the alpha limits in alpha test mode.\n */\n this.alphaCutOff = 0.4;\n /**\n * Specifies that the material will keep the specular highlights over a transparent surface (only the most luminous ones).\n * A car glass is a good example of that. When sun reflects on it you can not see what is behind.\n */\n this.useSpecularOverAlpha = true;\n /**\n * Specifies if the reflectivity texture contains the glossiness information in its alpha channel.\n */\n this.useMicroSurfaceFromReflectivityMapAlpha = false;\n /**\n * Specifies if the metallic texture contains the roughness information in its alpha channel.\n */\n this.useRoughnessFromMetallicTextureAlpha = true;\n /**\n * Specifies if the metallic texture contains the roughness information in its green channel.\n * Needs useRoughnessFromMetallicTextureAlpha to be false.\n */\n this.useRoughnessFromMetallicTextureGreen = false;\n /**\n * Specifies if the metallic texture contains the metallness information in its blue channel.\n */\n this.useMetallnessFromMetallicTextureBlue = false;\n /**\n * Specifies if the metallic texture contains the ambient occlusion information in its red channel.\n */\n this.useAmbientOcclusionFromMetallicTextureRed = false;\n /**\n * Specifies if the ambient texture contains the ambient occlusion information in its red channel only.\n */\n this.useAmbientInGrayScale = false;\n /**\n * In case the reflectivity map does not contain the microsurface information in its alpha channel,\n * The material will try to infer what glossiness each pixel should be.\n */\n this.useAutoMicroSurfaceFromReflectivityMap = false;\n /**\n * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).\n * A car glass is a good example of that. When the street lights reflects on it you can not see what is behind.\n */\n this.useRadianceOverAlpha = true;\n /**\n * Allows using an object space normal map (instead of tangent space).\n */\n this.useObjectSpaceNormalMap = false;\n /**\n * Allows using the bump map in parallax mode.\n */\n this.useParallax = false;\n /**\n * Allows using the bump map in parallax occlusion mode.\n */\n this.useParallaxOcclusion = false;\n /**\n * Controls the scale bias of the parallax mode.\n */\n this.parallaxScaleBias = 0.05;\n /**\n * If sets to true, disables all the lights affecting the material.\n */\n this.disableLighting = false;\n /**\n * Force the shader to compute irradiance in the fragment shader in order to take bump in account.\n */\n this.forceIrradianceInFragment = false;\n /**\n * Number of Simultaneous lights allowed on the material.\n */\n this.maxSimultaneousLights = 4;\n /**\n * If sets to true, x component of normal map value will invert (x = 1.0 - x).\n */\n this.invertNormalMapX = false;\n /**\n * If sets to true, y component of normal map value will invert (y = 1.0 - y).\n */\n this.invertNormalMapY = false;\n /**\n * If sets to true and backfaceCulling is false, normals will be flipped on the backside.\n */\n this.twoSidedLighting = false;\n /**\n * A fresnel is applied to the alpha of the model to ensure grazing angles edges are not alpha tested.\n * And/Or occlude the blended part. (alpha is converted to gamma to compute the fresnel)\n */\n this.useAlphaFresnel = false;\n /**\n * A fresnel is applied to the alpha of the model to ensure grazing angles edges are not alpha tested.\n * And/Or occlude the blended part. (alpha stays linear to compute the fresnel)\n */\n this.useLinearAlphaFresnel = false;\n /**\n * Let user defines the brdf lookup texture used for IBL.\n * A default 8bit version is embedded but you could point at :\n * * Default texture: https://assets.babylonjs.com/environments/correlatedMSBRDF_RGBD.png\n * * Default 16bit pixel depth texture: https://assets.babylonjs.com/environments/correlatedMSBRDF.dds\n * * LEGACY Default None correlated https://assets.babylonjs.com/environments/uncorrelatedBRDF_RGBD.png\n * * LEGACY Default None correlated 16bit pixel depth https://assets.babylonjs.com/environments/uncorrelatedBRDF.dds\n */\n this.environmentBRDFTexture = null;\n /**\n * Force normal to face away from face.\n */\n this.forceNormalForward = false;\n /**\n * Enables specular anti aliasing in the PBR shader.\n * It will both interacts on the Geometry for analytical and IBL lighting.\n * It also prefilter the roughness map based on the bump values.\n */\n this.enableSpecularAntiAliasing = false;\n /**\n * This parameters will enable/disable Horizon occlusion to prevent normal maps to look shiny when the normal\n * makes the reflect vector face the model (under horizon).\n */\n this.useHorizonOcclusion = true;\n /**\n * This parameters will enable/disable radiance occlusion by preventing the radiance to lit\n * too much the area relying on ambient texture to define their ambient occlusion.\n */\n this.useRadianceOcclusion = true;\n /**\n * If set to true, no lighting calculations will be applied.\n */\n this.unlit = false;\n /**\n * If sets to true, the decal map will be applied after the detail map. Else, it is applied before (default: false)\n */\n this.applyDecalMapAfterDetailMap = false;\n this._environmentBRDFTexture = GetEnvironmentBRDFTexture(this.getScene());\n }\n /**\n * @returns the name of this material class.\n */\n getClassName() {\n return \"PBRMaterial\";\n }\n /**\n * Makes a duplicate of the current material.\n * @param name - name to use for the new material.\n * @param cloneTexturesOnlyOnce - if a texture is used in more than one channel (e.g diffuse and opacity), only clone it once and reuse it on the other channels. Default false.\n * @param rootUrl defines the root URL to use to load textures\n * @returns cloned material instance\n */\n clone(name, cloneTexturesOnlyOnce = true, rootUrl = \"\") {\n const clone = SerializationHelper.Clone(() => new PBRMaterial(name, this.getScene()), this, {\n cloneTexturesOnlyOnce\n });\n clone.id = name;\n clone.name = name;\n this.stencil.copyTo(clone.stencil);\n this._clonePlugins(clone, rootUrl);\n return clone;\n }\n /**\n * Serializes this PBR Material.\n * @returns - An object with the serialized material.\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.customType = \"BABYLON.PBRMaterial\";\n return serializationObject;\n }\n // Statics\n /**\n * Parses a PBR Material from a serialized object.\n * @param source - Serialized object.\n * @param scene - BJS scene instance.\n * @param rootUrl - url for the scene object\n * @returns - PBRMaterial\n */\n static Parse(source, scene, rootUrl) {\n const material = SerializationHelper.Parse(() => new PBRMaterial(source.name, scene), source, scene, rootUrl);\n if (source.stencil) {\n material.stencil.parse(source.stencil, scene, rootUrl);\n }\n Material._ParsePlugins(source, material, scene, rootUrl);\n // The code block below ensures backward compatibility with serialized materials before plugins are automatically serialized.\n if (source.clearCoat) {\n material.clearCoat.parse(source.clearCoat, scene, rootUrl);\n }\n if (source.anisotropy) {\n material.anisotropy.parse(source.anisotropy, scene, rootUrl);\n }\n if (source.brdf) {\n material.brdf.parse(source.brdf, scene, rootUrl);\n }\n if (source.sheen) {\n material.sheen.parse(source.sheen, scene, rootUrl);\n }\n if (source.subSurface) {\n material.subSurface.parse(source.subSurface, scene, rootUrl);\n }\n if (source.iridescence) {\n material.iridescence.parse(source.iridescence, scene, rootUrl);\n }\n return material;\n }\n}\n/**\n * PBRMaterialTransparencyMode: No transparency mode, Alpha channel is not use.\n */\nPBRMaterial.PBRMATERIAL_OPAQUE = PBRBaseMaterial.PBRMATERIAL_OPAQUE;\n/**\n * PBRMaterialTransparencyMode: Alpha Test mode, pixel are discarded below a certain threshold defined by the alpha cutoff value.\n */\nPBRMaterial.PBRMATERIAL_ALPHATEST = PBRBaseMaterial.PBRMATERIAL_ALPHATEST;\n/**\n * PBRMaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer.\n */\nPBRMaterial.PBRMATERIAL_ALPHABLEND = PBRBaseMaterial.PBRMATERIAL_ALPHABLEND;\n/**\n * PBRMaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer.\n * They are also discarded below the alpha cutoff threshold to improve performances.\n */\nPBRMaterial.PBRMATERIAL_ALPHATESTANDBLEND = PBRBaseMaterial.PBRMATERIAL_ALPHATESTANDBLEND;\n/**\n * Defines the default value of how much AO map is occluding the analytical lights\n * (point spot...).\n */\nPBRMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS = PBRBaseMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"directIntensity\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"emissiveIntensity\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"environmentIntensity\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"specularIntensity\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"disableBumpMap\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"albedoTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"ambientTexture\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"ambientTextureStrength\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"ambientTextureImpactOnAnalyticalLights\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")], PBRMaterial.prototype, \"opacityTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"reflectionTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"emissiveTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"reflectivityTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"metallicTexture\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"metallic\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"roughness\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"metallicF0Factor\", void 0);\n__decorate([serializeAsColor3(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"metallicReflectanceColor\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useOnlyMetallicFromMetallicReflectanceTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"metallicReflectanceTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"reflectanceTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"microSurfaceTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"bumpTexture\", void 0);\n__decorate([serializeAsTexture(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\", null)], PBRMaterial.prototype, \"lightmapTexture\", void 0);\n__decorate([serializeAsColor3(\"ambient\"), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"ambientColor\", void 0);\n__decorate([serializeAsColor3(\"albedo\"), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"albedoColor\", void 0);\n__decorate([serializeAsColor3(\"reflectivity\"), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"reflectivityColor\", void 0);\n__decorate([serializeAsColor3(\"reflection\"), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"reflectionColor\", void 0);\n__decorate([serializeAsColor3(\"emissive\"), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"emissiveColor\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"microSurface\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useLightmapAsShadowmap\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")], PBRMaterial.prototype, \"useAlphaFromAlbedoTexture\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")], PBRMaterial.prototype, \"forceAlphaTest\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")], PBRMaterial.prototype, \"alphaCutOff\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useSpecularOverAlpha\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useMicroSurfaceFromReflectivityMapAlpha\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useRoughnessFromMetallicTextureAlpha\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useRoughnessFromMetallicTextureGreen\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useMetallnessFromMetallicTextureBlue\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useAmbientOcclusionFromMetallicTextureRed\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useAmbientInGrayScale\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useAutoMicroSurfaceFromReflectivityMap\", void 0);\n__decorate([serialize()], PBRMaterial.prototype, \"usePhysicalLightFalloff\", null);\n__decorate([serialize()], PBRMaterial.prototype, \"useGLTFLightFalloff\", null);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useRadianceOverAlpha\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useObjectSpaceNormalMap\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useParallax\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useParallaxOcclusion\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"parallaxScaleBias\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsLightsDirty\")], PBRMaterial.prototype, \"disableLighting\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"forceIrradianceInFragment\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsLightsDirty\")], PBRMaterial.prototype, \"maxSimultaneousLights\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"invertNormalMapX\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"invertNormalMapY\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"twoSidedLighting\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useAlphaFresnel\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useLinearAlphaFresnel\", void 0);\n__decorate([expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"environmentBRDFTexture\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"forceNormalForward\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"enableSpecularAntiAliasing\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useHorizonOcclusion\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], PBRMaterial.prototype, \"useRadianceOcclusion\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsMiscDirty\")], PBRMaterial.prototype, \"unlit\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsMiscDirty\")], PBRMaterial.prototype, \"applyDecalMapAfterDetailMap\", void 0);\nRegisterClass(\"BABYLON.PBRMaterial\", PBRMaterial);","map":{"version":3,"names":["__decorate","serialize","serializeAsColor3","expandToProperty","serializeAsTexture","GetEnvironmentBRDFTexture","Color3","PBRBaseMaterial","RegisterClass","Material","SerializationHelper","PBRMaterial","refractionTexture","subSurface","value","isRefractionEnabled","linkRefractionWithTransparency","indexOfRefraction","invertRefractionY","usePhysicalLightFalloff","_lightFalloff","LIGHTFALLOFF_PHYSICAL","_markAllSubMeshesAsTexturesDirty","LIGHTFALLOFF_STANDARD","useGLTFLightFalloff","LIGHTFALLOFF_GLTF","imageProcessingConfiguration","_imageProcessingConfiguration","_attachImageProcessingConfiguration","cameraColorCurvesEnabled","colorCurvesEnabled","cameraColorGradingEnabled","colorGradingEnabled","cameraToneMappingEnabled","toneMappingEnabled","cameraExposure","exposure","cameraContrast","contrast","cameraColorGradingTexture","colorGradingTexture","cameraColorCurves","colorCurves","constructor","name","scene","forceGLSL","directIntensity","emissiveIntensity","environmentIntensity","specularIntensity","disableBumpMap","ambientTextureStrength","ambientTextureImpactOnAnalyticalLights","DEFAULT_AO_ON_ANALYTICAL_LIGHTS","metallicF0Factor","metallicReflectanceColor","White","useOnlyMetallicFromMetallicReflectanceTexture","ambientColor","albedoColor","reflectivityColor","reflectionColor","emissiveColor","microSurface","useLightmapAsShadowmap","useAlphaFromAlbedoTexture","forceAlphaTest","alphaCutOff","useSpecularOverAlpha","useMicroSurfaceFromReflectivityMapAlpha","useRoughnessFromMetallicTextureAlpha","useRoughnessFromMetallicTextureGreen","useMetallnessFromMetallicTextureBlue","useAmbientOcclusionFromMetallicTextureRed","useAmbientInGrayScale","useAutoMicroSurfaceFromReflectivityMap","useRadianceOverAlpha","useObjectSpaceNormalMap","useParallax","useParallaxOcclusion","parallaxScaleBias","disableLighting","forceIrradianceInFragment","maxSimultaneousLights","invertNormalMapX","invertNormalMapY","twoSidedLighting","useAlphaFresnel","useLinearAlphaFresnel","environmentBRDFTexture","forceNormalForward","enableSpecularAntiAliasing","useHorizonOcclusion","useRadianceOcclusion","unlit","applyDecalMapAfterDetailMap","_environmentBRDFTexture","getScene","getClassName","clone","cloneTexturesOnlyOnce","rootUrl","Clone","id","stencil","copyTo","_clonePlugins","serializationObject","customType","Parse","source","material","parse","_ParsePlugins","clearCoat","anisotropy","brdf","sheen","iridescence","PBRMATERIAL_OPAQUE","PBRMATERIAL_ALPHATEST","PBRMATERIAL_ALPHABLEND","PBRMATERIAL_ALPHATESTANDBLEND","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/PBR/pbrMaterial.js"],"sourcesContent":["import { __decorate } from \"../../tslib.es6.js\";\nimport { serialize, serializeAsColor3, expandToProperty, serializeAsTexture } from \"../../Misc/decorators.js\";\nimport { GetEnvironmentBRDFTexture } from \"../../Misc/brdfTextureTools.js\";\nimport { Color3 } from \"../../Maths/math.color.js\";\nimport { PBRBaseMaterial } from \"./pbrBaseMaterial.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\nimport { Material } from \"../material.js\";\nimport { SerializationHelper } from \"../../Misc/decorators.serialization.js\";\n/**\n * The Physically based material of BJS.\n *\n * This offers the main features of a standard PBR material.\n * For more information, please refer to the documentation :\n * https://doc.babylonjs.com/features/featuresDeepDive/materials/using/introToPBR\n */\nexport class PBRMaterial extends PBRBaseMaterial {\n /**\n * Stores the refracted light information in a texture.\n */\n get refractionTexture() {\n return this.subSurface.refractionTexture;\n }\n set refractionTexture(value) {\n this.subSurface.refractionTexture = value;\n if (value) {\n this.subSurface.isRefractionEnabled = true;\n }\n else if (!this.subSurface.linkRefractionWithTransparency) {\n this.subSurface.isRefractionEnabled = false;\n }\n }\n /**\n * Index of refraction of the material base layer.\n * https://en.wikipedia.org/wiki/List_of_refractive_indices\n *\n * This does not only impact refraction but also the Base F0 of Dielectric Materials.\n *\n * From dielectric fresnel rules: F0 = square((iorT - iorI) / (iorT + iorI))\n */\n get indexOfRefraction() {\n return this.subSurface.indexOfRefraction;\n }\n set indexOfRefraction(value) {\n this.subSurface.indexOfRefraction = value;\n }\n /**\n * Controls if refraction needs to be inverted on Y. This could be useful for procedural texture.\n */\n get invertRefractionY() {\n return this.subSurface.invertRefractionY;\n }\n set invertRefractionY(value) {\n this.subSurface.invertRefractionY = value;\n }\n /**\n * This parameters will make the material used its opacity to control how much it is refracting against not.\n * Materials half opaque for instance using refraction could benefit from this control.\n */\n get linkRefractionWithTransparency() {\n return this.subSurface.linkRefractionWithTransparency;\n }\n set linkRefractionWithTransparency(value) {\n this.subSurface.linkRefractionWithTransparency = value;\n if (value) {\n this.subSurface.isRefractionEnabled = true;\n }\n }\n /**\n * BJS is using an hardcoded light falloff based on a manually sets up range.\n * In PBR, one way to represents the falloff is to use the inverse squared root algorithm.\n * This parameter can help you switch back to the BJS mode in order to create scenes using both materials.\n */\n get usePhysicalLightFalloff() {\n return this._lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_PHYSICAL;\n }\n /**\n * BJS is using an hardcoded light falloff based on a manually sets up range.\n * In PBR, one way to represents the falloff is to use the inverse squared root algorithm.\n * This parameter can help you switch back to the BJS mode in order to create scenes using both materials.\n */\n set usePhysicalLightFalloff(value) {\n if (value !== this.usePhysicalLightFalloff) {\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n if (value) {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_PHYSICAL;\n }\n else {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_STANDARD;\n }\n }\n }\n /**\n * In order to support the falloff compatibility with gltf, a special mode has been added\n * to reproduce the gltf light falloff.\n */\n get useGLTFLightFalloff() {\n return this._lightFalloff === PBRBaseMaterial.LIGHTFALLOFF_GLTF;\n }\n /**\n * In order to support the falloff compatibility with gltf, a special mode has been added\n * to reproduce the gltf light falloff.\n */\n set useGLTFLightFalloff(value) {\n if (value !== this.useGLTFLightFalloff) {\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n if (value) {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_GLTF;\n }\n else {\n this._lightFalloff = PBRBaseMaterial.LIGHTFALLOFF_STANDARD;\n }\n }\n }\n /**\n * Gets the image processing configuration used either in this material.\n */\n get imageProcessingConfiguration() {\n return this._imageProcessingConfiguration;\n }\n /**\n * Sets the Default image processing configuration used either in the this material.\n *\n * If sets to null, the scene one is in use.\n */\n set imageProcessingConfiguration(value) {\n this._attachImageProcessingConfiguration(value);\n // Ensure the effect will be rebuilt.\n this._markAllSubMeshesAsTexturesDirty();\n }\n /**\n * Gets whether the color curves effect is enabled.\n */\n get cameraColorCurvesEnabled() {\n return this.imageProcessingConfiguration.colorCurvesEnabled;\n }\n /**\n * Sets whether the color curves effect is enabled.\n */\n set cameraColorCurvesEnabled(value) {\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n get cameraColorGradingEnabled() {\n return this.imageProcessingConfiguration.colorGradingEnabled;\n }\n /**\n * Gets whether the color grading effect is enabled.\n */\n set cameraColorGradingEnabled(value) {\n this.imageProcessingConfiguration.colorGradingEnabled = value;\n }\n /**\n * Gets whether tonemapping is enabled or not.\n */\n get cameraToneMappingEnabled() {\n return this._imageProcessingConfiguration.toneMappingEnabled;\n }\n /**\n * Sets whether tonemapping is enabled or not\n */\n set cameraToneMappingEnabled(value) {\n this._imageProcessingConfiguration.toneMappingEnabled = value;\n }\n /**\n * The camera exposure used on this material.\n * This property is here and not in the camera to allow controlling exposure without full screen post process.\n * This corresponds to a photographic exposure.\n */\n get cameraExposure() {\n return this._imageProcessingConfiguration.exposure;\n }\n /**\n * The camera exposure used on this material.\n * This property is here and not in the camera to allow controlling exposure without full screen post process.\n * This corresponds to a photographic exposure.\n */\n set cameraExposure(value) {\n this._imageProcessingConfiguration.exposure = value;\n }\n /**\n * Gets The camera contrast used on this material.\n */\n get cameraContrast() {\n return this._imageProcessingConfiguration.contrast;\n }\n /**\n * Sets The camera contrast used on this material.\n */\n set cameraContrast(value) {\n this._imageProcessingConfiguration.contrast = value;\n }\n /**\n * Gets the Color Grading 2D Lookup Texture.\n */\n get cameraColorGradingTexture() {\n return this._imageProcessingConfiguration.colorGradingTexture;\n }\n /**\n * Sets the Color Grading 2D Lookup Texture.\n */\n set cameraColorGradingTexture(value) {\n this._imageProcessingConfiguration.colorGradingTexture = value;\n }\n /**\n * The color grading curves provide additional color adjustment that is applied after any color grading transform (3D LUT).\n * They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects.\n * These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image;\n * corresponding to low luminance, medium luminance, and high luminance areas respectively.\n */\n get cameraColorCurves() {\n return this._imageProcessingConfiguration.colorCurves;\n }\n /**\n * The color grading curves provide additional color adjustment that is applied after any color grading transform (3D LUT).\n * They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects.\n * These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image;\n * corresponding to low luminance, medium luminance, and high luminance areas respectively.\n */\n set cameraColorCurves(value) {\n this._imageProcessingConfiguration.colorCurves = value;\n }\n /**\n * Instantiates a new PBRMaterial instance.\n *\n * @param name The material name\n * @param scene The scene the material will be use in.\n * @param forceGLSL Use the GLSL code generation for the shader (even on WebGPU). Default is false\n */\n constructor(name, scene, forceGLSL = false) {\n super(name, scene, forceGLSL);\n /**\n * Intensity of the direct lights e.g. the four lights available in your scene.\n * This impacts both the direct diffuse and specular highlights.\n */\n this.directIntensity = 1.0;\n /**\n * Intensity of the emissive part of the material.\n * This helps controlling the emissive effect without modifying the emissive color.\n */\n this.emissiveIntensity = 1.0;\n /**\n * Intensity of the environment e.g. how much the environment will light the object\n * either through harmonics for rough material or through the reflection for shiny ones.\n */\n this.environmentIntensity = 1.0;\n /**\n * This is a special control allowing the reduction of the specular highlights coming from the\n * four lights of the scene. Those highlights may not be needed in full environment lighting.\n */\n this.specularIntensity = 1.0;\n /**\n * Debug Control allowing disabling the bump map on this material.\n */\n this.disableBumpMap = false;\n /**\n * AKA Occlusion Texture Intensity in other nomenclature.\n */\n this.ambientTextureStrength = 1.0;\n /**\n * Defines how much the AO map is occluding the analytical lights (point spot...).\n * 1 means it completely occludes it\n * 0 mean it has no impact\n */\n this.ambientTextureImpactOnAnalyticalLights = PBRMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;\n /**\n * In metallic workflow, specifies an F0 factor to help configuring the material F0.\n * By default the indexOfrefraction is used to compute F0;\n *\n * This is used as a factor against the default reflectance at normal incidence to tweak it.\n *\n * F0 = defaultF0 * metallicF0Factor * metallicReflectanceColor;\n * F90 = metallicReflectanceColor;\n */\n this.metallicF0Factor = 1;\n /**\n * In metallic workflow, specifies an F0 color.\n * By default the F90 is always 1;\n *\n * Please note that this factor is also used as a factor against the default reflectance at normal incidence.\n *\n * F0 = defaultF0_from_IOR * metallicF0Factor * metallicReflectanceColor\n * F90 = metallicF0Factor;\n */\n this.metallicReflectanceColor = Color3.White();\n /**\n * Specifies that only the A channel from metallicReflectanceTexture should be used.\n * If false, both RGB and A channels will be used\n */\n this.useOnlyMetallicFromMetallicReflectanceTexture = false;\n /**\n * The color of a material in ambient lighting.\n */\n this.ambientColor = new Color3(0, 0, 0);\n /**\n * AKA Diffuse Color in other nomenclature.\n */\n this.albedoColor = new Color3(1, 1, 1);\n /**\n * AKA Specular Color in other nomenclature.\n */\n this.reflectivityColor = new Color3(1, 1, 1);\n /**\n * The color reflected from the material.\n */\n this.reflectionColor = new Color3(1.0, 1.0, 1.0);\n /**\n * The color emitted from the material.\n */\n this.emissiveColor = new Color3(0, 0, 0);\n /**\n * AKA Glossiness in other nomenclature.\n */\n this.microSurface = 1.0;\n /**\n * If true, the light map contains occlusion information instead of lighting info.\n */\n this.useLightmapAsShadowmap = false;\n /**\n * Specifies that the alpha is coming form the albedo channel alpha channel for alpha blending.\n */\n this.useAlphaFromAlbedoTexture = false;\n /**\n * Enforces alpha test in opaque or blend mode in order to improve the performances of some situations.\n */\n this.forceAlphaTest = false;\n /**\n * Defines the alpha limits in alpha test mode.\n */\n this.alphaCutOff = 0.4;\n /**\n * Specifies that the material will keep the specular highlights over a transparent surface (only the most luminous ones).\n * A car glass is a good example of that. When sun reflects on it you can not see what is behind.\n */\n this.useSpecularOverAlpha = true;\n /**\n * Specifies if the reflectivity texture contains the glossiness information in its alpha channel.\n */\n this.useMicroSurfaceFromReflectivityMapAlpha = false;\n /**\n * Specifies if the metallic texture contains the roughness information in its alpha channel.\n */\n this.useRoughnessFromMetallicTextureAlpha = true;\n /**\n * Specifies if the metallic texture contains the roughness information in its green channel.\n * Needs useRoughnessFromMetallicTextureAlpha to be false.\n */\n this.useRoughnessFromMetallicTextureGreen = false;\n /**\n * Specifies if the metallic texture contains the metallness information in its blue channel.\n */\n this.useMetallnessFromMetallicTextureBlue = false;\n /**\n * Specifies if the metallic texture contains the ambient occlusion information in its red channel.\n */\n this.useAmbientOcclusionFromMetallicTextureRed = false;\n /**\n * Specifies if the ambient texture contains the ambient occlusion information in its red channel only.\n */\n this.useAmbientInGrayScale = false;\n /**\n * In case the reflectivity map does not contain the microsurface information in its alpha channel,\n * The material will try to infer what glossiness each pixel should be.\n */\n this.useAutoMicroSurfaceFromReflectivityMap = false;\n /**\n * Specifies that the material will keeps the reflection highlights over a transparent surface (only the most luminous ones).\n * A car glass is a good example of that. When the street lights reflects on it you can not see what is behind.\n */\n this.useRadianceOverAlpha = true;\n /**\n * Allows using an object space normal map (instead of tangent space).\n */\n this.useObjectSpaceNormalMap = false;\n /**\n * Allows using the bump map in parallax mode.\n */\n this.useParallax = false;\n /**\n * Allows using the bump map in parallax occlusion mode.\n */\n this.useParallaxOcclusion = false;\n /**\n * Controls the scale bias of the parallax mode.\n */\n this.parallaxScaleBias = 0.05;\n /**\n * If sets to true, disables all the lights affecting the material.\n */\n this.disableLighting = false;\n /**\n * Force the shader to compute irradiance in the fragment shader in order to take bump in account.\n */\n this.forceIrradianceInFragment = false;\n /**\n * Number of Simultaneous lights allowed on the material.\n */\n this.maxSimultaneousLights = 4;\n /**\n * If sets to true, x component of normal map value will invert (x = 1.0 - x).\n */\n this.invertNormalMapX = false;\n /**\n * If sets to true, y component of normal map value will invert (y = 1.0 - y).\n */\n this.invertNormalMapY = false;\n /**\n * If sets to true and backfaceCulling is false, normals will be flipped on the backside.\n */\n this.twoSidedLighting = false;\n /**\n * A fresnel is applied to the alpha of the model to ensure grazing angles edges are not alpha tested.\n * And/Or occlude the blended part. (alpha is converted to gamma to compute the fresnel)\n */\n this.useAlphaFresnel = false;\n /**\n * A fresnel is applied to the alpha of the model to ensure grazing angles edges are not alpha tested.\n * And/Or occlude the blended part. (alpha stays linear to compute the fresnel)\n */\n this.useLinearAlphaFresnel = false;\n /**\n * Let user defines the brdf lookup texture used for IBL.\n * A default 8bit version is embedded but you could point at :\n * * Default texture: https://assets.babylonjs.com/environments/correlatedMSBRDF_RGBD.png\n * * Default 16bit pixel depth texture: https://assets.babylonjs.com/environments/correlatedMSBRDF.dds\n * * LEGACY Default None correlated https://assets.babylonjs.com/environments/uncorrelatedBRDF_RGBD.png\n * * LEGACY Default None correlated 16bit pixel depth https://assets.babylonjs.com/environments/uncorrelatedBRDF.dds\n */\n this.environmentBRDFTexture = null;\n /**\n * Force normal to face away from face.\n */\n this.forceNormalForward = false;\n /**\n * Enables specular anti aliasing in the PBR shader.\n * It will both interacts on the Geometry for analytical and IBL lighting.\n * It also prefilter the roughness map based on the bump values.\n */\n this.enableSpecularAntiAliasing = false;\n /**\n * This parameters will enable/disable Horizon occlusion to prevent normal maps to look shiny when the normal\n * makes the reflect vector face the model (under horizon).\n */\n this.useHorizonOcclusion = true;\n /**\n * This parameters will enable/disable radiance occlusion by preventing the radiance to lit\n * too much the area relying on ambient texture to define their ambient occlusion.\n */\n this.useRadianceOcclusion = true;\n /**\n * If set to true, no lighting calculations will be applied.\n */\n this.unlit = false;\n /**\n * If sets to true, the decal map will be applied after the detail map. Else, it is applied before (default: false)\n */\n this.applyDecalMapAfterDetailMap = false;\n this._environmentBRDFTexture = GetEnvironmentBRDFTexture(this.getScene());\n }\n /**\n * @returns the name of this material class.\n */\n getClassName() {\n return \"PBRMaterial\";\n }\n /**\n * Makes a duplicate of the current material.\n * @param name - name to use for the new material.\n * @param cloneTexturesOnlyOnce - if a texture is used in more than one channel (e.g diffuse and opacity), only clone it once and reuse it on the other channels. Default false.\n * @param rootUrl defines the root URL to use to load textures\n * @returns cloned material instance\n */\n clone(name, cloneTexturesOnlyOnce = true, rootUrl = \"\") {\n const clone = SerializationHelper.Clone(() => new PBRMaterial(name, this.getScene()), this, { cloneTexturesOnlyOnce });\n clone.id = name;\n clone.name = name;\n this.stencil.copyTo(clone.stencil);\n this._clonePlugins(clone, rootUrl);\n return clone;\n }\n /**\n * Serializes this PBR Material.\n * @returns - An object with the serialized material.\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.customType = \"BABYLON.PBRMaterial\";\n return serializationObject;\n }\n // Statics\n /**\n * Parses a PBR Material from a serialized object.\n * @param source - Serialized object.\n * @param scene - BJS scene instance.\n * @param rootUrl - url for the scene object\n * @returns - PBRMaterial\n */\n static Parse(source, scene, rootUrl) {\n const material = SerializationHelper.Parse(() => new PBRMaterial(source.name, scene), source, scene, rootUrl);\n if (source.stencil) {\n material.stencil.parse(source.stencil, scene, rootUrl);\n }\n Material._ParsePlugins(source, material, scene, rootUrl);\n // The code block below ensures backward compatibility with serialized materials before plugins are automatically serialized.\n if (source.clearCoat) {\n material.clearCoat.parse(source.clearCoat, scene, rootUrl);\n }\n if (source.anisotropy) {\n material.anisotropy.parse(source.anisotropy, scene, rootUrl);\n }\n if (source.brdf) {\n material.brdf.parse(source.brdf, scene, rootUrl);\n }\n if (source.sheen) {\n material.sheen.parse(source.sheen, scene, rootUrl);\n }\n if (source.subSurface) {\n material.subSurface.parse(source.subSurface, scene, rootUrl);\n }\n if (source.iridescence) {\n material.iridescence.parse(source.iridescence, scene, rootUrl);\n }\n return material;\n }\n}\n/**\n * PBRMaterialTransparencyMode: No transparency mode, Alpha channel is not use.\n */\nPBRMaterial.PBRMATERIAL_OPAQUE = PBRBaseMaterial.PBRMATERIAL_OPAQUE;\n/**\n * PBRMaterialTransparencyMode: Alpha Test mode, pixel are discarded below a certain threshold defined by the alpha cutoff value.\n */\nPBRMaterial.PBRMATERIAL_ALPHATEST = PBRBaseMaterial.PBRMATERIAL_ALPHATEST;\n/**\n * PBRMaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer.\n */\nPBRMaterial.PBRMATERIAL_ALPHABLEND = PBRBaseMaterial.PBRMATERIAL_ALPHABLEND;\n/**\n * PBRMaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer.\n * They are also discarded below the alpha cutoff threshold to improve performances.\n */\nPBRMaterial.PBRMATERIAL_ALPHATESTANDBLEND = PBRBaseMaterial.PBRMATERIAL_ALPHATESTANDBLEND;\n/**\n * Defines the default value of how much AO map is occluding the analytical lights\n * (point spot...).\n */\nPBRMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS = PBRBaseMaterial.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"directIntensity\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"emissiveIntensity\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"environmentIntensity\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"specularIntensity\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"disableBumpMap\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"albedoTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"ambientTexture\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"ambientTextureStrength\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"ambientTextureImpactOnAnalyticalLights\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], PBRMaterial.prototype, \"opacityTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"reflectionTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"emissiveTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"reflectivityTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"metallicTexture\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"metallic\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"roughness\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"metallicF0Factor\", void 0);\n__decorate([\n serializeAsColor3(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"metallicReflectanceColor\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useOnlyMetallicFromMetallicReflectanceTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"metallicReflectanceTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"reflectanceTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"microSurfaceTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"bumpTexture\", void 0);\n__decorate([\n serializeAsTexture(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\", null)\n], PBRMaterial.prototype, \"lightmapTexture\", void 0);\n__decorate([\n serializeAsColor3(\"ambient\"),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"ambientColor\", void 0);\n__decorate([\n serializeAsColor3(\"albedo\"),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"albedoColor\", void 0);\n__decorate([\n serializeAsColor3(\"reflectivity\"),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"reflectivityColor\", void 0);\n__decorate([\n serializeAsColor3(\"reflection\"),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"reflectionColor\", void 0);\n__decorate([\n serializeAsColor3(\"emissive\"),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"emissiveColor\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"microSurface\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useLightmapAsShadowmap\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], PBRMaterial.prototype, \"useAlphaFromAlbedoTexture\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], PBRMaterial.prototype, \"forceAlphaTest\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\n], PBRMaterial.prototype, \"alphaCutOff\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useSpecularOverAlpha\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useMicroSurfaceFromReflectivityMapAlpha\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useRoughnessFromMetallicTextureAlpha\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useRoughnessFromMetallicTextureGreen\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useMetallnessFromMetallicTextureBlue\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useAmbientOcclusionFromMetallicTextureRed\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useAmbientInGrayScale\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useAutoMicroSurfaceFromReflectivityMap\", void 0);\n__decorate([\n serialize()\n], PBRMaterial.prototype, \"usePhysicalLightFalloff\", null);\n__decorate([\n serialize()\n], PBRMaterial.prototype, \"useGLTFLightFalloff\", null);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useRadianceOverAlpha\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useObjectSpaceNormalMap\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useParallax\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useParallaxOcclusion\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"parallaxScaleBias\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\n], PBRMaterial.prototype, \"disableLighting\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"forceIrradianceInFragment\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\n], PBRMaterial.prototype, \"maxSimultaneousLights\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"invertNormalMapX\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"invertNormalMapY\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"twoSidedLighting\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useAlphaFresnel\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useLinearAlphaFresnel\", void 0);\n__decorate([\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"environmentBRDFTexture\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"forceNormalForward\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"enableSpecularAntiAliasing\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useHorizonOcclusion\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], PBRMaterial.prototype, \"useRadianceOcclusion\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\n], PBRMaterial.prototype, \"unlit\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsMiscDirty\")\n], PBRMaterial.prototype, \"applyDecalMapAfterDetailMap\", void 0);\nRegisterClass(\"BABYLON.PBRMaterial\", PBRMaterial);\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,SAAS,EAAEC,iBAAiB,EAAEC,gBAAgB,EAAEC,kBAAkB,QAAQ,0BAA0B;AAC7G,SAASC,yBAAyB,QAAQ,gCAAgC;AAC1E,SAASC,MAAM,QAAQ,2BAA2B;AAClD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,aAAa,QAAQ,yBAAyB;AACvD,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,mBAAmB,QAAQ,wCAAwC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,SAASJ,eAAe,CAAC;EAC7C;AACJ;AACA;EACI,IAAIK,iBAAiBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACC,UAAU,CAACD,iBAAiB;EAC5C;EACA,IAAIA,iBAAiBA,CAACE,KAAK,EAAE;IACzB,IAAI,CAACD,UAAU,CAACD,iBAAiB,GAAGE,KAAK;IACzC,IAAIA,KAAK,EAAE;MACP,IAAI,CAACD,UAAU,CAACE,mBAAmB,GAAG,IAAI;IAC9C,CAAC,MACI,IAAI,CAAC,IAAI,CAACF,UAAU,CAACG,8BAA8B,EAAE;MACtD,IAAI,CAACH,UAAU,CAACE,mBAAmB,GAAG,KAAK;IAC/C;EACJ;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI,IAAIE,iBAAiBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACJ,UAAU,CAACI,iBAAiB;EAC5C;EACA,IAAIA,iBAAiBA,CAACH,KAAK,EAAE;IACzB,IAAI,CAACD,UAAU,CAACI,iBAAiB,GAAGH,KAAK;EAC7C;EACA;AACJ;AACA;EACI,IAAII,iBAAiBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACL,UAAU,CAACK,iBAAiB;EAC5C;EACA,IAAIA,iBAAiBA,CAACJ,KAAK,EAAE;IACzB,IAAI,CAACD,UAAU,CAACK,iBAAiB,GAAGJ,KAAK;EAC7C;EACA;AACJ;AACA;AACA;EACI,IAAIE,8BAA8BA,CAAA,EAAG;IACjC,OAAO,IAAI,CAACH,UAAU,CAACG,8BAA8B;EACzD;EACA,IAAIA,8BAA8BA,CAACF,KAAK,EAAE;IACtC,IAAI,CAACD,UAAU,CAACG,8BAA8B,GAAGF,KAAK;IACtD,IAAIA,KAAK,EAAE;MACP,IAAI,CAACD,UAAU,CAACE,mBAAmB,GAAG,IAAI;IAC9C;EACJ;EACA;AACJ;AACA;AACA;AACA;EACI,IAAII,uBAAuBA,CAAA,EAAG;IAC1B,OAAO,IAAI,CAACC,aAAa,KAAKb,eAAe,CAACc,qBAAqB;EACvE;EACA;AACJ;AACA;AACA;AACA;EACI,IAAIF,uBAAuBA,CAACL,KAAK,EAAE;IAC/B,IAAIA,KAAK,KAAK,IAAI,CAACK,uBAAuB,EAAE;MACxC;MACA,IAAI,CAACG,gCAAgC,CAAC,CAAC;MACvC,IAAIR,KAAK,EAAE;QACP,IAAI,CAACM,aAAa,GAAGb,eAAe,CAACc,qBAAqB;MAC9D,CAAC,MACI;QACD,IAAI,CAACD,aAAa,GAAGb,eAAe,CAACgB,qBAAqB;MAC9D;IACJ;EACJ;EACA;AACJ;AACA;AACA;EACI,IAAIC,mBAAmBA,CAAA,EAAG;IACtB,OAAO,IAAI,CAACJ,aAAa,KAAKb,eAAe,CAACkB,iBAAiB;EACnE;EACA;AACJ;AACA;AACA;EACI,IAAID,mBAAmBA,CAACV,KAAK,EAAE;IAC3B,IAAIA,KAAK,KAAK,IAAI,CAACU,mBAAmB,EAAE;MACpC;MACA,IAAI,CAACF,gCAAgC,CAAC,CAAC;MACvC,IAAIR,KAAK,EAAE;QACP,IAAI,CAACM,aAAa,GAAGb,eAAe,CAACkB,iBAAiB;MAC1D,CAAC,MACI;QACD,IAAI,CAACL,aAAa,GAAGb,eAAe,CAACgB,qBAAqB;MAC9D;IACJ;EACJ;EACA;AACJ;AACA;EACI,IAAIG,4BAA4BA,CAAA,EAAG;IAC/B,OAAO,IAAI,CAACC,6BAA6B;EAC7C;EACA;AACJ;AACA;AACA;AACA;EACI,IAAID,4BAA4BA,CAACZ,KAAK,EAAE;IACpC,IAAI,CAACc,mCAAmC,CAACd,KAAK,CAAC;IAC/C;IACA,IAAI,CAACQ,gCAAgC,CAAC,CAAC;EAC3C;EACA;AACJ;AACA;EACI,IAAIO,wBAAwBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,4BAA4B,CAACI,kBAAkB;EAC/D;EACA;AACJ;AACA;EACI,IAAID,wBAAwBA,CAACf,KAAK,EAAE;IAChC,IAAI,CAACY,4BAA4B,CAACI,kBAAkB,GAAGhB,KAAK;EAChE;EACA;AACJ;AACA;EACI,IAAIiB,yBAAyBA,CAAA,EAAG;IAC5B,OAAO,IAAI,CAACL,4BAA4B,CAACM,mBAAmB;EAChE;EACA;AACJ;AACA;EACI,IAAID,yBAAyBA,CAACjB,KAAK,EAAE;IACjC,IAAI,CAACY,4BAA4B,CAACM,mBAAmB,GAAGlB,KAAK;EACjE;EACA;AACJ;AACA;EACI,IAAImB,wBAAwBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACN,6BAA6B,CAACO,kBAAkB;EAChE;EACA;AACJ;AACA;EACI,IAAID,wBAAwBA,CAACnB,KAAK,EAAE;IAChC,IAAI,CAACa,6BAA6B,CAACO,kBAAkB,GAAGpB,KAAK;EACjE;EACA;AACJ;AACA;AACA;AACA;EACI,IAAIqB,cAAcA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACR,6BAA6B,CAACS,QAAQ;EACtD;EACA;AACJ;AACA;AACA;AACA;EACI,IAAID,cAAcA,CAACrB,KAAK,EAAE;IACtB,IAAI,CAACa,6BAA6B,CAACS,QAAQ,GAAGtB,KAAK;EACvD;EACA;AACJ;AACA;EACI,IAAIuB,cAAcA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACV,6BAA6B,CAACW,QAAQ;EACtD;EACA;AACJ;AACA;EACI,IAAID,cAAcA,CAACvB,KAAK,EAAE;IACtB,IAAI,CAACa,6BAA6B,CAACW,QAAQ,GAAGxB,KAAK;EACvD;EACA;AACJ;AACA;EACI,IAAIyB,yBAAyBA,CAAA,EAAG;IAC5B,OAAO,IAAI,CAACZ,6BAA6B,CAACa,mBAAmB;EACjE;EACA;AACJ;AACA;EACI,IAAID,yBAAyBA,CAACzB,KAAK,EAAE;IACjC,IAAI,CAACa,6BAA6B,CAACa,mBAAmB,GAAG1B,KAAK;EAClE;EACA;AACJ;AACA;AACA;AACA;AACA;EACI,IAAI2B,iBAAiBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACd,6BAA6B,CAACe,WAAW;EACzD;EACA;AACJ;AACA;AACA;AACA;AACA;EACI,IAAID,iBAAiBA,CAAC3B,KAAK,EAAE;IACzB,IAAI,CAACa,6BAA6B,CAACe,WAAW,GAAG5B,KAAK;EAC1D;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI6B,WAAWA,CAACC,IAAI,EAAEC,KAAK,EAAEC,SAAS,GAAG,KAAK,EAAE;IACxC,KAAK,CAACF,IAAI,EAAEC,KAAK,EAAEC,SAAS,CAAC;IAC7B;AACR;AACA;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,GAAG;IAC1B;AACR;AACA;AACA;IACQ,IAAI,CAACC,iBAAiB,GAAG,GAAG;IAC5B;AACR;AACA;AACA;IACQ,IAAI,CAACC,oBAAoB,GAAG,GAAG;IAC/B;AACR;AACA;AACA;IACQ,IAAI,CAACC,iBAAiB,GAAG,GAAG;IAC5B;AACR;AACA;IACQ,IAAI,CAACC,cAAc,GAAG,KAAK;IAC3B;AACR;AACA;IACQ,IAAI,CAACC,sBAAsB,GAAG,GAAG;IACjC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,sCAAsC,GAAG1C,WAAW,CAAC2C,+BAA+B;IACzF;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAG,CAAC;IACzB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,wBAAwB,GAAGlD,MAAM,CAACmD,KAAK,CAAC,CAAC;IAC9C;AACR;AACA;AACA;IACQ,IAAI,CAACC,6CAA6C,GAAG,KAAK;IAC1D;AACR;AACA;IACQ,IAAI,CAACC,YAAY,GAAG,IAAIrD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC;AACR;AACA;IACQ,IAAI,CAACsD,WAAW,GAAG,IAAItD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtC;AACR;AACA;IACQ,IAAI,CAACuD,iBAAiB,GAAG,IAAIvD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C;AACR;AACA;IACQ,IAAI,CAACwD,eAAe,GAAG,IAAIxD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChD;AACR;AACA;IACQ,IAAI,CAACyD,aAAa,GAAG,IAAIzD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC;AACR;AACA;IACQ,IAAI,CAAC0D,YAAY,GAAG,GAAG;IACvB;AACR;AACA;IACQ,IAAI,CAACC,sBAAsB,GAAG,KAAK;IACnC;AACR;AACA;IACQ,IAAI,CAACC,yBAAyB,GAAG,KAAK;IACtC;AACR;AACA;IACQ,IAAI,CAACC,cAAc,GAAG,KAAK;IAC3B;AACR;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,GAAG;IACtB;AACR;AACA;AACA;IACQ,IAAI,CAACC,oBAAoB,GAAG,IAAI;IAChC;AACR;AACA;IACQ,IAAI,CAACC,uCAAuC,GAAG,KAAK;IACpD;AACR;AACA;IACQ,IAAI,CAACC,oCAAoC,GAAG,IAAI;IAChD;AACR;AACA;AACA;IACQ,IAAI,CAACC,oCAAoC,GAAG,KAAK;IACjD;AACR;AACA;IACQ,IAAI,CAACC,oCAAoC,GAAG,KAAK;IACjD;AACR;AACA;IACQ,IAAI,CAACC,yCAAyC,GAAG,KAAK;IACtD;AACR;AACA;IACQ,IAAI,CAACC,qBAAqB,GAAG,KAAK;IAClC;AACR;AACA;AACA;IACQ,IAAI,CAACC,sCAAsC,GAAG,KAAK;IACnD;AACR;AACA;AACA;IACQ,IAAI,CAACC,oBAAoB,GAAG,IAAI;IAChC;AACR;AACA;IACQ,IAAI,CAACC,uBAAuB,GAAG,KAAK;IACpC;AACR;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB;AACR;AACA;IACQ,IAAI,CAACC,oBAAoB,GAAG,KAAK;IACjC;AACR;AACA;IACQ,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACR;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,KAAK;IAC5B;AACR;AACA;IACQ,IAAI,CAACC,yBAAyB,GAAG,KAAK;IACtC;AACR;AACA;IACQ,IAAI,CAACC,qBAAqB,GAAG,CAAC;IAC9B;AACR;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAC7B;AACR;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAC7B;AACR;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAC7B;AACR;AACA;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,KAAK;IAC5B;AACR;AACA;AACA;IACQ,IAAI,CAACC,qBAAqB,GAAG,KAAK;IAClC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,sBAAsB,GAAG,IAAI;IAClC;AACR;AACA;IACQ,IAAI,CAACC,kBAAkB,GAAG,KAAK;IAC/B;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,0BAA0B,GAAG,KAAK;IACvC;AACR;AACA;AACA;IACQ,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAC/B;AACR;AACA;AACA;IACQ,IAAI,CAACC,oBAAoB,GAAG,IAAI;IAChC;AACR;AACA;IACQ,IAAI,CAACC,KAAK,GAAG,KAAK;IAClB;AACR;AACA;IACQ,IAAI,CAACC,2BAA2B,GAAG,KAAK;IACxC,IAAI,CAACC,uBAAuB,GAAG5F,yBAAyB,CAAC,IAAI,CAAC6F,QAAQ,CAAC,CAAC,CAAC;EAC7E;EACA;AACJ;AACA;EACIC,YAAYA,CAAA,EAAG;IACX,OAAO,aAAa;EACxB;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIC,KAAKA,CAACxD,IAAI,EAAEyD,qBAAqB,GAAG,IAAI,EAAEC,OAAO,GAAG,EAAE,EAAE;IACpD,MAAMF,KAAK,GAAG1F,mBAAmB,CAAC6F,KAAK,CAAC,MAAM,IAAI5F,WAAW,CAACiC,IAAI,EAAE,IAAI,CAACsD,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;MAAEG;IAAsB,CAAC,CAAC;IACtHD,KAAK,CAACI,EAAE,GAAG5D,IAAI;IACfwD,KAAK,CAACxD,IAAI,GAAGA,IAAI;IACjB,IAAI,CAAC6D,OAAO,CAACC,MAAM,CAACN,KAAK,CAACK,OAAO,CAAC;IAClC,IAAI,CAACE,aAAa,CAACP,KAAK,EAAEE,OAAO,CAAC;IAClC,OAAOF,KAAK;EAChB;EACA;AACJ;AACA;AACA;EACInG,SAASA,CAAA,EAAG;IACR,MAAM2G,mBAAmB,GAAG,KAAK,CAAC3G,SAAS,CAAC,CAAC;IAC7C2G,mBAAmB,CAACC,UAAU,GAAG,qBAAqB;IACtD,OAAOD,mBAAmB;EAC9B;EACA;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,OAAOE,KAAKA,CAACC,MAAM,EAAElE,KAAK,EAAEyD,OAAO,EAAE;IACjC,MAAMU,QAAQ,GAAGtG,mBAAmB,CAACoG,KAAK,CAAC,MAAM,IAAInG,WAAW,CAACoG,MAAM,CAACnE,IAAI,EAAEC,KAAK,CAAC,EAAEkE,MAAM,EAAElE,KAAK,EAAEyD,OAAO,CAAC;IAC7G,IAAIS,MAAM,CAACN,OAAO,EAAE;MAChBO,QAAQ,CAACP,OAAO,CAACQ,KAAK,CAACF,MAAM,CAACN,OAAO,EAAE5D,KAAK,EAAEyD,OAAO,CAAC;IAC1D;IACA7F,QAAQ,CAACyG,aAAa,CAACH,MAAM,EAAEC,QAAQ,EAAEnE,KAAK,EAAEyD,OAAO,CAAC;IACxD;IACA,IAAIS,MAAM,CAACI,SAAS,EAAE;MAClBH,QAAQ,CAACG,SAAS,CAACF,KAAK,CAACF,MAAM,CAACI,SAAS,EAAEtE,KAAK,EAAEyD,OAAO,CAAC;IAC9D;IACA,IAAIS,MAAM,CAACK,UAAU,EAAE;MACnBJ,QAAQ,CAACI,UAAU,CAACH,KAAK,CAACF,MAAM,CAACK,UAAU,EAAEvE,KAAK,EAAEyD,OAAO,CAAC;IAChE;IACA,IAAIS,MAAM,CAACM,IAAI,EAAE;MACbL,QAAQ,CAACK,IAAI,CAACJ,KAAK,CAACF,MAAM,CAACM,IAAI,EAAExE,KAAK,EAAEyD,OAAO,CAAC;IACpD;IACA,IAAIS,MAAM,CAACO,KAAK,EAAE;MACdN,QAAQ,CAACM,KAAK,CAACL,KAAK,CAACF,MAAM,CAACO,KAAK,EAAEzE,KAAK,EAAEyD,OAAO,CAAC;IACtD;IACA,IAAIS,MAAM,CAAClG,UAAU,EAAE;MACnBmG,QAAQ,CAACnG,UAAU,CAACoG,KAAK,CAACF,MAAM,CAAClG,UAAU,EAAEgC,KAAK,EAAEyD,OAAO,CAAC;IAChE;IACA,IAAIS,MAAM,CAACQ,WAAW,EAAE;MACpBP,QAAQ,CAACO,WAAW,CAACN,KAAK,CAACF,MAAM,CAACQ,WAAW,EAAE1E,KAAK,EAAEyD,OAAO,CAAC;IAClE;IACA,OAAOU,QAAQ;EACnB;AACJ;AACA;AACA;AACA;AACArG,WAAW,CAAC6G,kBAAkB,GAAGjH,eAAe,CAACiH,kBAAkB;AACnE;AACA;AACA;AACA7G,WAAW,CAAC8G,qBAAqB,GAAGlH,eAAe,CAACkH,qBAAqB;AACzE;AACA;AACA;AACA9G,WAAW,CAAC+G,sBAAsB,GAAGnH,eAAe,CAACmH,sBAAsB;AAC3E;AACA;AACA;AACA;AACA/G,WAAW,CAACgH,6BAA6B,GAAGpH,eAAe,CAACoH,6BAA6B;AACzF;AACA;AACA;AACA;AACAhH,WAAW,CAAC2C,+BAA+B,GAAG/C,eAAe,CAAC+C,+BAA+B;AAC7FtD,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACtD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACzD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACtD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AAClD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC3D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,wCAAwC,EAAE,KAAK,CAAC,CAAC;AAC3E5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,yCAAyC,CAAC,CAC9D,EAAEQ,WAAW,CAACiH,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACtD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACxD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC7C5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC9C5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACrD5H,UAAU,CAAC,CACPE,iBAAiB,CAAC,CAAC,EACnBC,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;AAC7D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,+CAA+C,EAAE,KAAK,CAAC,CAAC;AAClF5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAC/D5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACvD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACxD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAChD5H,UAAU,CAAC,CACPI,kBAAkB,CAAC,CAAC,EACpBD,gBAAgB,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAC7D,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPE,iBAAiB,CAAC,SAAS,CAAC,EAC5BC,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACjD5H,UAAU,CAAC,CACPE,iBAAiB,CAAC,QAAQ,CAAC,EAC3BC,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAChD5H,UAAU,CAAC,CACPE,iBAAiB,CAAC,cAAc,CAAC,EACjCC,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACtD5H,UAAU,CAAC,CACPE,iBAAiB,CAAC,YAAY,CAAC,EAC/BC,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPE,iBAAiB,CAAC,UAAU,CAAC,EAC7BC,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AAClD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACjD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC3D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,yCAAyC,CAAC,CAC9D,EAAEQ,WAAW,CAACiH,SAAS,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAC9D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,yCAAyC,CAAC,CAC9D,EAAEQ,WAAW,CAACiH,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACnD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,yCAAyC,CAAC,CAC9D,EAAEQ,WAAW,CAACiH,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAChD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACzD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAC5E5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sCAAsC,EAAE,KAAK,CAAC,CAAC;AACzE5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sCAAsC,EAAE,KAAK,CAAC,CAAC;AACzE5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sCAAsC,EAAE,KAAK,CAAC,CAAC;AACzE5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,2CAA2C,EAAE,KAAK,CAAC,CAAC;AAC9E5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC1D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,wCAAwC,EAAE,KAAK,CAAC,CAAC;AAC3E5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,CACd,EAAEU,WAAW,CAACiH,SAAS,EAAE,yBAAyB,EAAE,IAAI,CAAC;AAC1D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,CACd,EAAEU,WAAW,CAACiH,SAAS,EAAE,qBAAqB,EAAE,IAAI,CAAC;AACtD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACzD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAC5D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAChD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACzD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACtD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,gCAAgC,CAAC,CACrD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAC9D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,gCAAgC,CAAC,CACrD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC1D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACrD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACrD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACrD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACpD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC1D5H,UAAU,CAAC,CACPG,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC3D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACvD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAC/D5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACxD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,kCAAkC,CAAC,CACvD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACzD5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,8BAA8B,CAAC,CACnD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C5H,UAAU,CAAC,CACPC,SAAS,CAAC,CAAC,EACXE,gBAAgB,CAAC,8BAA8B,CAAC,CACnD,EAAEQ,WAAW,CAACiH,SAAS,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAC;AAChEpH,aAAa,CAAC,qBAAqB,EAAEG,WAAW,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|