{"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/soba/materials/src/lib/convolution-material.ts","../../../../libs/soba/materials/src/lib/blur-pass.ts","../../../../libs/soba/materials/src/lib/image-shader-material.ts","../../../../libs/soba/materials/src/lib/mesh-reflector-material.ts","../../../../libs/soba/materials/src/lib/spot-light-material.ts","../../../../libs/soba/materials/src/lib/star-field-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import * as THREE from 'three';\n\nexport class ConvolutionMaterial extends THREE.ShaderMaterial {\n  readonly kernel: Float32Array;\n  constructor(texelSize = new THREE.Vector2()) {\n    super({\n      uniforms: {\n        inputBuffer: new THREE.Uniform(null),\n        depthBuffer: new THREE.Uniform(null),\n        resolution: new THREE.Uniform(new THREE.Vector2()),\n        texelSize: new THREE.Uniform(new THREE.Vector2()),\n        halfTexelSize: new THREE.Uniform(new THREE.Vector2()),\n        kernel: new THREE.Uniform(0.0),\n        scale: new THREE.Uniform(1.0),\n        cameraNear: new THREE.Uniform(0.0),\n        cameraFar: new THREE.Uniform(1.0),\n        minDepthThreshold: new THREE.Uniform(0.0),\n        maxDepthThreshold: new THREE.Uniform(1.0),\n        depthScale: new THREE.Uniform(0.0),\n        depthToBlurRatioBias: new THREE.Uniform(0.25),\n      },\n      fragmentShader: `#include <common>\n          #include <dithering_pars_fragment>\n          uniform sampler2D inputBuffer;\n          uniform sampler2D depthBuffer;\n          uniform float cameraNear;\n          uniform float cameraFar;\n          uniform float minDepthThreshold;\n          uniform float maxDepthThreshold;\n          uniform float depthScale;\n          uniform float depthToBlurRatioBias;\n          varying vec2 vUv;\n          varying vec2 vUv0;\n          varying vec2 vUv1;\n          varying vec2 vUv2;\n          varying vec2 vUv3;\n\n          void main() {\n            float depthFactor = 0.0;\n\n            #ifdef USE_DEPTH\n              vec4 depth = texture2D(depthBuffer, vUv);\n              depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n              depthFactor *= depthScale;\n              depthFactor = max(0.0, min(1.0, depthFactor + 0.25));\n            #endif\n\n            vec4 sum = texture2D(inputBuffer, mix(vUv0, vUv, depthFactor));\n            sum += texture2D(inputBuffer, mix(vUv1, vUv, depthFactor));\n            sum += texture2D(inputBuffer, mix(vUv2, vUv, depthFactor));\n            sum += texture2D(inputBuffer, mix(vUv3, vUv, depthFactor));\n            gl_FragColor = sum * 0.25 ;\n\n            #include <dithering_fragment>\n            #include <tonemapping_fragment>\n            #include <encodings_fragment>\n          }`,\n      vertexShader: `uniform vec2 texelSize;\n          uniform vec2 halfTexelSize;\n          uniform float kernel;\n          uniform float scale;\n          varying vec2 vUv;\n          varying vec2 vUv0;\n          varying vec2 vUv1;\n          varying vec2 vUv2;\n          varying vec2 vUv3;\n\n          void main() {\n            vec2 uv = position.xy * 0.5 + 0.5;\n            vUv = uv;\n\n            vec2 dUv = (texelSize * vec2(kernel) + halfTexelSize) * scale;\n            vUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);\n            vUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);\n            vUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);\n            vUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);\n\n            gl_Position = vec4(position.xy, 1.0, 1.0);\n          }`,\n      blending: THREE.NoBlending,\n      depthWrite: false,\n      depthTest: false,\n    });\n\n    this.toneMapped = false;\n    this.setTexelSize(texelSize.x, texelSize.y);\n    this.kernel = new Float32Array([0.0, 1.0, 2.0, 2.0, 3.0]);\n  }\n\n  setTexelSize(x: number, y: number) {\n    this.uniforms['texelSize'].value.set(x, y);\n    this.uniforms['halfTexelSize'].value.set(x, y).multiplyScalar(0.5);\n  }\n  setResolution(resolution: THREE.Vector2) {\n    this.uniforms['resolution'].value.copy(resolution);\n  }\n}\n","import * as THREE from 'three';\nimport { ConvolutionMaterial } from './convolution-material';\n\nexport interface BlurPassProps {\n  gl: THREE.WebGLRenderer;\n  resolution: number;\n  width?: number;\n  height?: number;\n  minDepthThreshold?: number;\n  maxDepthThreshold?: number;\n  depthScale?: number;\n  depthToBlurRatioBias?: number;\n}\n\nexport class BlurPass {\n  readonly renderTargetA: THREE.WebGLRenderTarget;\n  readonly renderTargetB: THREE.WebGLRenderTarget;\n  readonly convolutionMaterial: ConvolutionMaterial;\n  readonly scene: THREE.Scene;\n  readonly camera: THREE.Camera;\n  readonly screen: THREE.Mesh;\n  renderToScreen = false;\n\n  constructor({\n    gl,\n    resolution,\n    width = 500,\n    height = 500,\n    minDepthThreshold = 0,\n    maxDepthThreshold = 1,\n    depthScale = 0,\n    depthToBlurRatioBias = 0.25,\n  }: BlurPassProps) {\n    this.renderTargetA = new THREE.WebGLRenderTarget(resolution, resolution, {\n      minFilter: THREE.LinearFilter,\n      magFilter: THREE.LinearFilter,\n      stencilBuffer: false,\n      depthBuffer: false,\n      encoding: gl.outputEncoding,\n    });\n    this.renderTargetB = this.renderTargetA.clone();\n    this.convolutionMaterial = new ConvolutionMaterial();\n    this.convolutionMaterial.setTexelSize(1.0 / width, 1.0 / height);\n    this.convolutionMaterial.setResolution(new THREE.Vector2(width, height));\n    this.scene = new THREE.Scene();\n    this.camera = new THREE.Camera();\n    this.convolutionMaterial.uniforms['minDepthThreshold'].value = minDepthThreshold;\n    this.convolutionMaterial.uniforms['maxDepthThreshold'].value = maxDepthThreshold;\n    this.convolutionMaterial.uniforms['depthScale'].value = depthScale;\n    this.convolutionMaterial.uniforms['depthToBlurRatioBias'].value = depthToBlurRatioBias;\n    this.convolutionMaterial.defines['USE_DEPTH'] = depthScale > 0;\n    const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);\n    const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);\n    const geometry = new THREE.BufferGeometry();\n    geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 3));\n    geometry.setAttribute('uv', new THREE.BufferAttribute(uvs, 2));\n    this.screen = new THREE.Mesh(geometry, this.convolutionMaterial);\n    this.screen.frustumCulled = false;\n    this.scene.add(this.screen);\n  }\n\n  render(renderer: THREE.WebGLRenderer, inputBuffer: any, outputBuffer: any) {\n    const scene = this.scene;\n    const camera = this.camera;\n    const renderTargetA = this.renderTargetA;\n    const renderTargetB = this.renderTargetB;\n    const material = this.convolutionMaterial;\n    const uniforms = material.uniforms;\n    uniforms['depthBuffer'].value = inputBuffer.depthTexture;\n    const kernel = material.kernel;\n    let lastRT = inputBuffer;\n    let destRT;\n    let i, l;\n    // Apply the multi-pass blur.\n    for (i = 0, l = kernel.length - 1; i < l; ++i) {\n      // Alternate between targets.\n      destRT = (i & 1) === 0 ? renderTargetA : renderTargetB;\n      uniforms['kernel'].value = kernel[i];\n      uniforms['inputBuffer'].value = lastRT.texture;\n      renderer.setRenderTarget(destRT);\n      renderer.render(scene, camera);\n      lastRT = destRT;\n    }\n    uniforms['kernel'].value = kernel[i];\n    uniforms['inputBuffer'].value = lastRT.texture;\n    renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n    renderer.render(scene, camera);\n  }\n}\n","import { shaderMaterial } from '@angular-three/core';\nimport * as THREE from 'three';\n\nexport const ImageShaderMaterial = shaderMaterial(\n  {\n    color: new THREE.Color('white'),\n    scale: [1, 1],\n    imageBounds: [1, 1],\n    map: null,\n    zoom: 1,\n    grayscale: 0,\n  },\n  // language=glsl\n  `\n    varying vec2 vUv;\n    void main() {\n      gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n      vUv = uv;\n    }\n  `,\n  // language=glsl\n  `\n    // mostly from https://gist.github.com/statico/df64c5d167362ecf7b34fca0b1459a44\n    varying vec2 vUv;\n    uniform vec2 scale;\n    uniform vec2 imageBounds;\n    uniform vec3 color;\n    uniform sampler2D map;\n    uniform float zoom;\n    uniform float grayscale;\n    const vec3 luma = vec3(.299, 0.587, 0.114);\n    vec4 toGrayscale(vec4 color, float intensity) {\n      return vec4(mix(color.rgb, vec3(dot(color.rgb, luma)), intensity), color.a);\n    }\n    vec2 aspect(vec2 size) {\n      return size / min(size.x, size.y);\n    }\n    void main() {\n      vec2 s = aspect(scale);\n      vec2 i = aspect(imageBounds);\n      float rs = s.x / s.y;\n      float ri = i.x / i.y;\n      vec2 new = rs < ri ? vec2(i.x * s.y / i.y, s.y) : vec2(s.x, i.y * s.x / i.x);\n      vec2 offset = (rs < ri ? vec2((new.x - s.x) / 2.0, 0.0) : vec2(0.0, (new.y - s.y) / 2.0)) / new;\n      vec2 uv = vUv * s / new + offset;\n      vec2 zUv = (uv - vec2(0.5, 0.5)) / zoom + vec2(0.5, 0.5);\n      gl_FragColor = toGrayscale(texture2D(map, zUv) * vec4(color, 1.0), grayscale);\n    }\n  `\n);\n","import * as THREE from 'three';\n\ntype UninitializedUniform<Value> = { value: Value | null };\n\nexport class MeshReflectorMaterial extends THREE.MeshStandardMaterial {\n  private _tDepth: UninitializedUniform<THREE.Texture> = { value: null };\n  private _distortionMap: UninitializedUniform<THREE.Texture> = { value: null };\n  private _tDiffuse: UninitializedUniform<THREE.Texture> = { value: null };\n  private _tDiffuseBlur: UninitializedUniform<THREE.Texture> = { value: null };\n  private _textureMatrix: UninitializedUniform<THREE.Matrix4> = { value: null };\n  private _hasBlur: { value: boolean } = { value: false };\n  private _mirror: { value: number } = { value: 0.0 };\n  private _mixBlur: { value: number } = { value: 0.0 };\n  private _blurStrength: { value: number } = { value: 0.5 };\n  private _minDepthThreshold: { value: number } = { value: 0.9 };\n  private _maxDepthThreshold: { value: number } = { value: 1 };\n  private _depthScale: { value: number } = { value: 0 };\n  private _depthToBlurRatioBias: { value: number } = { value: 0.25 };\n  private _distortion: { value: number } = { value: 1 };\n  private _mixContrast: { value: number } = { value: 1.0 };\n\n  constructor(parameters = {}) {\n    super(parameters);\n    this.setValues(parameters);\n  }\n\n  override onBeforeCompile(shader: any) {\n    if (!shader.defines?.USE_UV) {\n      shader.defines.USE_UV = '';\n    }\n    shader.uniforms.hasBlur = this._hasBlur;\n    shader.uniforms.tDiffuse = this._tDiffuse;\n    shader.uniforms.tDepth = this._tDepth;\n    shader.uniforms.distortionMap = this._distortionMap;\n    shader.uniforms.tDiffuseBlur = this._tDiffuseBlur;\n    shader.uniforms.textureMatrix = this._textureMatrix;\n    shader.uniforms.mirror = this._mirror;\n    shader.uniforms.mixBlur = this._mixBlur;\n    shader.uniforms.mixStrength = this._blurStrength;\n    shader.uniforms.minDepthThreshold = this._minDepthThreshold;\n    shader.uniforms.maxDepthThreshold = this._maxDepthThreshold;\n    shader.uniforms.depthScale = this._depthScale;\n    shader.uniforms.depthToBlurRatioBias = this._depthToBlurRatioBias;\n    shader.uniforms.distortion = this._distortion;\n    shader.uniforms.mixContrast = this._mixContrast;\n    shader.vertexShader = `\n        uniform mat4 textureMatrix;\n        varying vec4 my_vUv;\n      ${shader.vertexShader}`;\n    shader.vertexShader = shader.vertexShader.replace(\n      '#include <project_vertex>',\n      `#include <project_vertex>\n        my_vUv = textureMatrix * vec4( position, 1.0 );\n        gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );`\n    );\n    shader.fragmentShader = `\n        uniform sampler2D tDiffuse;\n        uniform sampler2D tDiffuseBlur;\n        uniform sampler2D tDepth;\n        uniform sampler2D distortionMap;\n        uniform float distortion;\n        uniform float cameraNear;\n\t\t\t  uniform float cameraFar;\n        uniform bool hasBlur;\n        uniform float mixBlur;\n        uniform float mirror;\n        uniform float mixStrength;\n        uniform float minDepthThreshold;\n        uniform float maxDepthThreshold;\n        uniform float mixContrast;\n        uniform float depthScale;\n        uniform float depthToBlurRatioBias;\n        varying vec4 my_vUv;\n        ${shader.fragmentShader}`;\n    shader.fragmentShader = shader.fragmentShader.replace(\n      '#include <emissivemap_fragment>',\n      `#include <emissivemap_fragment>\n\n      float distortionFactor = 0.0;\n      #ifdef USE_DISTORTION\n        distortionFactor = texture2D(distortionMap, vUv).r * distortion;\n      #endif\n\n      vec4 new_vUv = my_vUv;\n      new_vUv.x += distortionFactor;\n      new_vUv.y += distortionFactor;\n\n      vec4 base = texture2DProj(tDiffuse, new_vUv);\n      vec4 blur = texture2DProj(tDiffuseBlur, new_vUv);\n\n      vec4 merge = base;\n\n      #ifdef USE_NORMALMAP\n        vec2 normal_uv = vec2(0.0);\n        vec4 normalColor = texture2D(normalMap, vUv * normalScale);\n        vec3 my_normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b,  normalColor.g * 2.0 - 1.0 ) );\n        vec3 coord = new_vUv.xyz / new_vUv.w;\n        normal_uv = coord.xy + coord.z * my_normal.xz * 0.05;\n        vec4 base_normal = texture2D(tDiffuse, normal_uv);\n        vec4 blur_normal = texture2D(tDiffuseBlur, normal_uv);\n        merge = base_normal;\n        blur = blur_normal;\n      #endif\n\n      float depthFactor = 0.0001;\n      float blurFactor = 0.0;\n\n      #ifdef USE_DEPTH\n        vec4 depth = texture2DProj(tDepth, new_vUv);\n        depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n        depthFactor *= depthScale;\n        depthFactor = max(0.0001, min(1.0, depthFactor));\n\n        #ifdef USE_BLUR\n          blur = blur * min(1.0, depthFactor + depthToBlurRatioBias);\n          merge = merge * min(1.0, depthFactor + 0.5);\n        #else\n          merge = merge * depthFactor;\n        #endif\n\n      #endif\n\n      float reflectorRoughnessFactor = roughness;\n      #ifdef USE_ROUGHNESSMAP\n        vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );\n        reflectorRoughnessFactor *= reflectorTexelRoughness.g;\n      #endif\n\n      #ifdef USE_BLUR\n        blurFactor = min(1.0, mixBlur * reflectorRoughnessFactor);\n        merge = mix(merge, blur, blurFactor);\n      #endif\n\n      vec4 newMerge = vec4(0.0, 0.0, 0.0, 1.0);\n      newMerge.r = (merge.r - 0.5) * mixContrast + 0.5;\n      newMerge.g = (merge.g - 0.5) * mixContrast + 0.5;\n      newMerge.b = (merge.b - 0.5) * mixContrast + 0.5;\n\n      diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + newMerge.rgb * mixStrength);\n      `\n    );\n  }\n\n  get tDiffuse(): THREE.Texture | null {\n    return this._tDiffuse.value;\n  }\n\n  set tDiffuse(v: THREE.Texture | null) {\n    this._tDiffuse.value = v;\n  }\n\n  get tDepth(): THREE.Texture | null {\n    return this._tDepth.value;\n  }\n\n  set tDepth(v: THREE.Texture | null) {\n    this._tDepth.value = v;\n  }\n\n  get distortionMap(): THREE.Texture | null {\n    return this._distortionMap.value;\n  }\n\n  set distortionMap(v: THREE.Texture | null) {\n    this._distortionMap.value = v;\n  }\n\n  get tDiffuseBlur(): THREE.Texture | null {\n    return this._tDiffuseBlur.value;\n  }\n\n  set tDiffuseBlur(v: THREE.Texture | null) {\n    this._tDiffuseBlur.value = v;\n  }\n\n  get textureMatrix(): THREE.Matrix4 | null {\n    return this._textureMatrix.value;\n  }\n\n  set textureMatrix(v: THREE.Matrix4 | null) {\n    this._textureMatrix.value = v;\n  }\n\n  get hasBlur(): boolean {\n    return this._hasBlur.value;\n  }\n\n  set hasBlur(v: boolean) {\n    this._hasBlur.value = v;\n  }\n\n  get mirror(): number {\n    return this._mirror.value;\n  }\n\n  set mirror(v: number) {\n    this._mirror.value = v;\n  }\n\n  get mixBlur(): number {\n    return this._mixBlur.value;\n  }\n\n  set mixBlur(v: number) {\n    this._mixBlur.value = v;\n  }\n\n  get mixStrength(): number {\n    return this._blurStrength.value;\n  }\n\n  set mixStrength(v: number) {\n    this._blurStrength.value = v;\n  }\n\n  get minDepthThreshold(): number {\n    return this._minDepthThreshold.value;\n  }\n\n  set minDepthThreshold(v: number) {\n    this._minDepthThreshold.value = v;\n  }\n\n  get maxDepthThreshold(): number {\n    return this._maxDepthThreshold.value;\n  }\n\n  set maxDepthThreshold(v: number) {\n    this._maxDepthThreshold.value = v;\n  }\n\n  get depthScale(): number {\n    return this._depthScale.value;\n  }\n\n  set depthScale(v: number) {\n    this._depthScale.value = v;\n  }\n\n  get depthToBlurRatioBias(): number {\n    return this._depthToBlurRatioBias.value;\n  }\n\n  set depthToBlurRatioBias(v: number) {\n    this._depthToBlurRatioBias.value = v;\n  }\n\n  get distortion(): number {\n    return this._distortion.value;\n  }\n\n  set distortion(v: number) {\n    this._distortion.value = v;\n  }\n\n  get mixContrast(): number {\n    return this._mixContrast.value;\n  }\n\n  set mixContrast(v: number) {\n    this._mixContrast.value = v;\n  }\n}\n","import * as THREE from 'three';\n\nexport class SpotLightMaterial extends THREE.ShaderMaterial {\n  constructor() {\n    super({\n      uniforms: {\n        depth: { value: null },\n        opacity: { value: 1 },\n        attenuation: { value: 2.5 },\n        anglePower: { value: 12 },\n        spotPosition: { value: new THREE.Vector3(0, 0, 0) },\n        lightColor: { value: new THREE.Color('white') },\n        cameraNear: { value: 0 },\n        cameraFar: { value: 1 },\n        resolution: { value: new THREE.Vector2(0, 0) },\n      },\n      transparent: true,\n      depthWrite: false,\n      vertexShader: /* glsl */ `\n        varying vec3 vNormal;\n        varying vec3 vWorldPosition;\n        varying float vViewZ;\n        varying float vIntensity;\n        uniform vec3 spotPosition;\n        uniform float attenuation;\n\n        void main() {\n          // compute intensity\n          vNormal = normalize( normalMatrix * normal );\n          vec4 worldPosition\t= modelMatrix * vec4( position, 1.0 );\n          vWorldPosition = worldPosition.xyz;\n          vec4 viewPosition = viewMatrix * worldPosition;\n          vViewZ = viewPosition.z;\n          float intensity\t= distance(worldPosition.xyz, spotPosition) / attenuation;\n          intensity\t= 1.0 - clamp(intensity, 0.0, 1.0);\n          vIntensity = intensity;\n          // set gl_Position\n          gl_Position\t= projectionMatrix * viewPosition;\n\n        }`,\n      fragmentShader: /* glsl */ `\n        #include <packing>\n\n        varying vec3 vNormal;\n        varying vec3 vWorldPosition;\n        uniform vec3 lightColor;\n        uniform vec3 spotPosition;\n        uniform float attenuation;\n        uniform float anglePower;\n        uniform sampler2D depth;\n        uniform vec2 resolution;\n        uniform float cameraNear;\n        uniform float cameraFar;\n        varying float vViewZ;\n        varying float vIntensity;\n        uniform float opacity;\n\n        float readDepth( sampler2D depthSampler, vec2 coord ) {\n          float fragCoordZ = texture2D( depthSampler, coord ).x;\n          float viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\n          return viewZ;\n        }\n\n        void main() {\n          float d = 1.0;\n          bool isSoft = resolution[0] > 0.0 && resolution[1] > 0.0;\n          if (isSoft) {\n            vec2 sUv = gl_FragCoord.xy / resolution;\n            d = readDepth(depth, sUv);\n          }\n          float intensity = vIntensity;\n          vec3 normal\t= vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n          float angleIntensity\t= pow( dot(normal, vec3(0.0, 0.0, 1.0)), anglePower );\n          intensity\t*= angleIntensity;\n          // fades when z is close to sampled depth, meaning the cone is intersecting existing geometry\n          if (isSoft) {\n            intensity\t*= smoothstep(0., 1., vViewZ - d);\n          }\n          gl_FragColor = vec4(lightColor, intensity * opacity);\n\n          #include <tonemapping_fragment>\n            #include <encodings_fragment>\n        }`,\n    });\n  }\n}\n","import * as THREE from 'three';\n\nexport class StarFieldMaterial extends THREE.ShaderMaterial {\n  constructor() {\n    super({\n      uniforms: { time: { value: 0.0 }, fade: { value: 1.0 } },\n      vertexShader: /* glsl */ `\n      uniform float time;\n      attribute float size;\n      varying vec3 vColor;\n      void main() {\n        vColor = color;\n        vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n        gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(mvPosition.x + 2.0 * time + 100.0));\n        gl_Position = projectionMatrix * mvPosition;\n      }`,\n      fragmentShader: /* glsl */ `\n      uniform sampler2D pointTexture;\n      uniform float fade;\n      varying vec3 vColor;\n      void main() {\n        float opacity = 1.0;\n        if (fade == 1.0) {\n          float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n          opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n        }\n        gl_FragColor = vec4(vColor, opacity);\n      }`,\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}