{"version":3,"file":"ng2-konva.mjs","sources":["../../../projects/ng2-konva/src/lib/utils/updatePicture.ts","../../../projects/ng2-konva/src/lib/utils/applyNodeProps.ts","../../../projects/ng2-konva/src/lib/utils/index.ts","../../../projects/ng2-konva/src/lib/components/core-shape.component.ts","../../../projects/ng2-konva/src/lib/components/stage.component.ts","../../../projects/ng2-konva/src/lib/interfaces/ko-component.interface.ts","../../../projects/ng2-konva/src/public-api.ts","../../../projects/ng2-konva/src/ng2-konva.ts"],"sourcesContent":["// adapted FROM: https://github.com/lavrton/react-konva/blob/master/src/react-konva-fiber.js\n\nimport Konva from 'konva';\nimport Node = Konva.Node;\n\nexport default function updatePicture(node: Node) {\n  const drawingNode = node.getLayer() || node.getStage();\n  if (drawingNode) {\n    drawingNode.batchDraw();\n  }\n}\n","// adapted FROM: https://github.com/lavrton/react-konva/blob/master/src/react-konva-fiber.js\n\nimport updatePicture from './updatePicture';\nimport { KonvaComponent } from '../interfaces/ko-component.interface';\nimport { KonvaEventObject } from 'konva/lib/Node';\nimport { NgKonvaEventObject } from '../interfaces/ngKonvaEventObject';\nimport { PropsType } from './types';\n\nexport default function applyNodeProps(\n  component: KonvaComponent,\n  props: PropsType = {},\n  oldProps: PropsType = {}\n): void {\n  if ('id' in props) {\n    const message = `ng2-konva: You are using \"id\" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use \"name\" attribute instead.`;\n    console.warn(message);\n  }\n\n  const instance = component.getStage();\n  const updatedProps: PropsType = {};\n  let hasUpdates = false;\n\n  Object.keys(oldProps).forEach((key) => {\n    const isEvent = key.slice(0, 2) === 'on';\n    const propChanged = oldProps[key] !== props[key];\n    if (isEvent && propChanged) {\n      let eventName = key.slice(2).toLowerCase();\n      if (eventName.slice(0, 7) === 'content') {\n        eventName =\n          'content' + eventName.slice(7, 8).toUpperCase() + eventName.slice(8);\n      }\n      instance.off(eventName, oldProps[key]);\n    }\n    const toRemove = !Object.hasOwn(props, key);\n    if (toRemove) {\n      instance.setAttr(key, undefined);\n    }\n  });\n  Object.keys(props).forEach((key) => {\n    const isEvent = key.slice(0, 2) === 'on';\n    const toAdd = oldProps[key] !== props[key];\n    if (isEvent && toAdd) {\n      let eventName = key.slice(2).toLowerCase();\n      if (eventName.slice(0, 7) === 'content') {\n        eventName =\n          'content' + eventName.slice(7, 8).toUpperCase() + eventName.slice(8);\n      }\n      if (props[key]) {\n        instance.off(eventName);\n        instance.on(eventName, (event: KonvaEventObject<unknown>) => {\n          props[key]({\n            angularComponent: component,\n            event,\n          } as NgKonvaEventObject<unknown>);\n        });\n      }\n    }\n    if (\n      !isEvent &&\n      (props[key] !== oldProps[key] || props[key] !== instance.getAttr(key))\n    ) {\n      hasUpdates = true;\n      updatedProps[key] = props[key];\n    }\n  });\n\n  if (hasUpdates) {\n    instance.setAttrs(updatedProps);\n    updatePicture(instance);\n    let val;\n    Object.keys(updatedProps).forEach((prop) => {\n      val = updatedProps[prop];\n      if (val instanceof Image && !val.complete) {\n        const node = instance;\n        val.addEventListener('load', function () {\n          const layer = node.getLayer();\n          if (layer) {\n            layer.batchDraw();\n          }\n        });\n      }\n    });\n  }\n}\n","import updatePicture from './updatePicture';\nimport applyNodeProps from './applyNodeProps';\nimport { KonvaComponent } from '../interfaces/ko-component.interface';\nimport { EventEmitter } from '@angular/core';\nimport { ListenerRecord } from './types';\n\nfunction camelize(str: string): string {\n  return str\n    .replace(/^\\w|[A-Z]|\\b\\w/g, function (letter, index) {\n      return index == 0 ? letter.toLowerCase() : letter.toUpperCase();\n    })\n    .replace(/\\s+/g, '');\n}\n\nfunction capitalizeFirstLetter(string: string): string {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function getName(componentTag: string): string {\n  return capitalizeFirstLetter(\n    camelize(componentTag.slice(3).replace('-', ' '))\n  );\n}\n\nexport function createListener(instance: KonvaComponent): ListenerRecord {\n  const output: ListenerRecord = {};\n  [\n    'mouseover',\n    'mousemove',\n    'mouseout',\n    'mouseenter',\n    'mouseleave',\n    'mousedown',\n    'mouseup',\n    'wheel',\n    'contextmenu',\n    'click',\n    'dblclick',\n    'touchstart',\n    'touchmove',\n    'touchend',\n    'tap',\n    'dbltap',\n    'dragstart',\n    'dragmove',\n    'dragend',\n  ].forEach((eventName) => {\n    const name: keyof KonvaComponent = <keyof KonvaComponent>eventName;\n\n    const eventEmitter: EventEmitter<unknown> = <EventEmitter<unknown>>(\n      instance[name]\n    );\n    if (eventEmitter.observed) {\n      output['on' + eventName] = eventEmitter.emit.bind(eventEmitter);\n    }\n  });\n  return output;\n}\n\nexport { updatePicture, applyNodeProps };\n","/* eslint-disable @angular-eslint/no-output-native */\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  ContentChildren,\n  QueryList,\n  OnDestroy,\n  OnInit,\n  inject,\n  AfterContentChecked,\n} from '@angular/core';\nimport { getName, createListener, applyNodeProps } from '../utils/index';\nimport { KonvaComponent } from '../interfaces/ko-component.interface';\nimport { ShapeConfigTypes } from '../utils/configTypes';\nimport { ShapeTypes } from '../utils/shapeTypes';\nimport Konva from 'konva';\nimport { updatePicture } from '../utils';\nimport { Group } from 'konva/lib/Group';\nimport { Layer } from 'konva/lib/Layer';\nimport { Shape } from 'konva/lib/Shape';\nimport { Sprite, SpriteConfig } from 'konva/lib/shapes/Sprite';\nimport { Arc } from 'konva/lib/shapes/Arc';\nimport { Arrow } from 'konva/lib/shapes/Arrow';\nimport { Circle } from 'konva/lib/shapes/Circle';\nimport { Ellipse } from 'konva/lib/shapes/Ellipse';\nimport { Image } from 'konva/lib/shapes/Image';\nimport { Label, Tag } from 'konva/lib/shapes/Label';\nimport { Line } from 'konva/lib/shapes/Line';\nimport { Path } from 'konva/lib/shapes/Path';\nimport { Rect } from 'konva/lib/shapes/Rect';\nimport { RegularPolygon } from 'konva/lib/shapes/RegularPolygon';\nimport { Ring } from 'konva/lib/shapes/Ring';\nimport { Star } from 'konva/lib/shapes/Star';\nimport { Text } from 'konva/lib/shapes/Text';\nimport { TextPath } from 'konva/lib/shapes/TextPath';\nimport { Transformer } from 'konva/lib/shapes/Transformer';\nimport { Wedge } from 'konva/lib/shapes/Wedge';\nimport { FastLayer } from 'konva/lib/FastLayer';\nimport { NgKonvaEventObject } from '../interfaces/ngKonvaEventObject';\nimport { PropsType } from '../utils/types';\n\n@Component({\n  selector:\n    'ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer',\n  standalone: true,\n  template: `<div><ng-content></ng-content></div>`,\n})\nexport class CoreShapeComponent\n  implements KonvaComponent, AfterContentChecked, OnDestroy, OnInit\n{\n  @ContentChildren(CoreShapeComponent)\n  shapes = new QueryList<CoreShapeComponent>();\n  @Input() set config(config: ShapeConfigTypes) {\n    this._config = config;\n    this.uploadKonva(config);\n  }\n  get config(): ShapeConfigTypes {\n    return this._config;\n  }\n\n  @Output() mouseover: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mousemove: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseout: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseenter: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseleave: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mousedown: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseup: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() wheel: EventEmitter<NgKonvaEventObject<WheelEvent>> =\n    new EventEmitter<NgKonvaEventObject<WheelEvent>>();\n  @Output() contextmenu: EventEmitter<NgKonvaEventObject<PointerEvent>> =\n    new EventEmitter<NgKonvaEventObject<PointerEvent>>();\n  @Output() click: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() dblclick: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() touchstart: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() touchmove: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() touchend: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() tap: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() dbltap: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() dragstart: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() dragmove: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() dragend: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n\n  public nameNode: keyof typeof ShapeTypes | 'Shape' | 'Sprite' = getName(\n    inject(ElementRef).nativeElement.localName\n  ) as keyof typeof ShapeTypes | 'Shape' | 'Sprite';\n\n  private cacheProps: PropsType = {};\n  private _stage:\n    | Shape\n    | Arc\n    | Arrow\n    | Circle\n    | Ellipse\n    | Image\n    | Label\n    | Tag\n    | Line\n    | Path\n    | Rect\n    | RegularPolygon\n    | Ring\n    | Sprite\n    | Star\n    | Text\n    | TextPath\n    | Transformer\n    | Wedge\n    | Group\n    | Layer\n    | FastLayer;\n  protected _config: ShapeConfigTypes;\n\n  public getStage():\n    | Shape\n    | Arc\n    | Arrow\n    | Circle\n    | Ellipse\n    | Image\n    | Label\n    | Tag\n    | Line\n    | Path\n    | Rect\n    | RegularPolygon\n    | Ring\n    | Sprite\n    | Star\n    | Text\n    | TextPath\n    | Transformer\n    | Wedge\n    | Group\n    | Layer\n    | FastLayer {\n    return this._stage;\n  }\n\n  public getConfig(): ShapeConfigTypes {\n    return this._config || {};\n  }\n\n  ngOnInit(): void {\n    this.initKonva();\n  }\n\n  private initKonva(): void {\n    if (!this._stage) {\n      this._stage = new Shape();\n    }\n    if (this.nameNode === 'Shape') {\n      this._stage = new Shape();\n    } else if (this.nameNode === 'Sprite') {\n      this._stage = new Sprite(this.config as SpriteConfig);\n    } else {\n      this._stage = new Konva[this.nameNode](undefined);\n    }\n\n    const animationStage = this._stage.to.bind(this._stage);\n\n    this._stage.to = (newConfig: ShapeConfigTypes): void => {\n      animationStage(newConfig);\n      setTimeout(() => {\n        Object.keys(this._stage.attrs).forEach((key) => {\n          if (typeof this._stage.attrs[key] !== 'function') {\n            this.config[key] = this._stage.attrs[key];\n          }\n        });\n      }, 200);\n    };\n\n    if (this._config) {\n      this.uploadKonva(this.config);\n    }\n  }\n\n  protected uploadKonva(config: ShapeConfigTypes): void {\n    if (!this._stage) return;\n    const props = {\n      ...config,\n      ...createListener(this),\n    };\n    applyNodeProps(this, props, this.cacheProps);\n    this.cacheProps = props;\n  }\n\n  ngAfterContentChecked(): void {\n    this.shapes.forEach((item: CoreShapeComponent) => {\n      if (this !== item) {\n        if (this._stage instanceof Group || this._stage instanceof Layer) {\n          this._stage.add(item.getStage());\n        }\n        updatePicture(this._stage);\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._stage.destroy();\n  }\n}\n","/* eslint-disable @angular-eslint/no-output-native */\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  AfterContentInit,\n  ElementRef,\n  ContentChildren,\n  QueryList,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { CoreShapeComponent as CoreShape } from './core-shape.component';\nimport { updatePicture, createListener, applyNodeProps } from '../utils/index';\nimport { KonvaComponent } from '../interfaces/ko-component.interface';\nimport { Stage } from 'konva/lib/Stage';\nimport { Layer } from 'konva/lib/Layer';\nimport { ContainerConfig } from 'konva/lib/Container';\nimport { NgKonvaEventObject } from '../interfaces/ngKonvaEventObject';\nimport { PropsType } from '../utils/types';\n\n@Component({\n  selector: 'ko-stage',\n  standalone: true,\n  template: `<div><ng-content></ng-content></div>`,\n})\nexport class StageComponent\n  implements KonvaComponent, AfterContentInit, OnDestroy\n{\n  private nodeContainer = inject(ElementRef).nativeElement;\n  @ContentChildren(CoreShape) shapes = new QueryList<CoreShape>();\n  @Input() set config(config: ContainerConfig) {\n    this._config = config;\n    if (!this._stage) {\n      this._stage = new Stage({\n        ...config,\n        container: this.nodeContainer,\n      });\n      this.uploadKonva(config);\n    } else {\n      this.uploadKonva(config);\n    }\n  }\n\n  @Output() mouseover: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mousemove: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseout: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseenter: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseleave: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mousedown: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() mouseup: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() wheel: EventEmitter<NgKonvaEventObject<WheelEvent>> =\n    new EventEmitter<NgKonvaEventObject<WheelEvent>>();\n  @Output() contextmenu: EventEmitter<NgKonvaEventObject<PointerEvent>> =\n    new EventEmitter<NgKonvaEventObject<PointerEvent>>();\n  @Output() click: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() dblclick: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() touchstart: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() touchmove: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() touchend: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() tap: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() dbltap: EventEmitter<NgKonvaEventObject<TouchEvent>> =\n    new EventEmitter<NgKonvaEventObject<TouchEvent>>();\n  @Output() dragstart: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() dragmove: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n  @Output() dragend: EventEmitter<NgKonvaEventObject<MouseEvent>> =\n    new EventEmitter<NgKonvaEventObject<MouseEvent>>();\n\n  private _stage: Stage;\n  private _config: ContainerConfig;\n  private cacheProps: PropsType = {};\n\n  public getStage(): Stage {\n    return this._stage;\n  }\n\n  public getConfig(): ContainerConfig {\n    return this._config;\n  }\n\n  private uploadKonva(config: ContainerConfig): void {\n    const props = {\n      ...config,\n      ...createListener(this),\n    };\n    applyNodeProps(this, props, this.cacheProps);\n    this.cacheProps = props;\n  }\n\n  ngAfterContentInit(): void {\n    this.shapes.forEach((item: CoreShape) => {\n      if (!(item.getStage() instanceof Layer)) {\n        throw 'You can only add Layer Nodes to Stage Nodes!';\n      }\n      this._stage.add(<Layer>item.getStage());\n      updatePicture(this._stage);\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._stage.destroy();\n  }\n}\n","import { Component, EventEmitter } from '@angular/core';\nimport { ShapeConfigTypes } from '../utils/configTypes';\nimport { Stage } from 'konva/lib/Stage';\nimport { Shape } from 'konva/lib/Shape';\nimport { Arc } from 'konva/lib/shapes/Arc';\nimport { Arrow } from 'konva/lib/shapes/Arrow';\nimport { Circle } from 'konva/lib/shapes/Circle';\nimport { Ellipse } from 'konva/lib/shapes/Ellipse';\nimport { Image } from 'konva/lib/shapes/Image';\nimport { Label, Tag } from 'konva/lib/shapes/Label';\nimport { Line } from 'konva/lib/shapes/Line';\nimport { Path } from 'konva/lib/shapes/Path';\nimport { Rect } from 'konva/lib/shapes/Rect';\nimport { RegularPolygon } from 'konva/lib/shapes/RegularPolygon';\nimport { Ring } from 'konva/lib/shapes/Ring';\nimport { Sprite } from 'konva/lib/shapes/Sprite';\nimport { Star } from 'konva/lib/shapes/Star';\nimport { Text } from 'konva/lib/shapes/Text';\nimport { TextPath } from 'konva/lib/shapes/TextPath';\nimport { Transformer } from 'konva/lib/shapes/Transformer';\nimport { Wedge } from 'konva/lib/shapes/Wedge';\nimport { Group } from 'konva/lib/Group';\nimport { Layer } from 'konva/lib/Layer';\nimport { FastLayer } from 'konva/lib/FastLayer';\nimport { NgKonvaEventObject } from './ngKonvaEventObject';\n\nexport abstract class KonvaComponent extends Component {\n  getStage: () =>\n    | Stage\n    | Shape\n    | Arc\n    | Arrow\n    | Circle\n    | Ellipse\n    | Image\n    | Label\n    | Tag\n    | Line\n    | Path\n    | Rect\n    | RegularPolygon\n    | Ring\n    | Sprite\n    | Star\n    | Text\n    | TextPath\n    | Transformer\n    | Wedge\n    | Group\n    | Layer\n    | FastLayer;\n  getConfig: () => ShapeConfigTypes;\n  config: ShapeConfigTypes;\n\n  mouseover?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  mousemove?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  mouseout?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  mouseenter?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  mouseleave?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  mousedown?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  mouseup?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  wheel?: EventEmitter<NgKonvaEventObject<WheelEvent>>;\n  contextmenu?: EventEmitter<NgKonvaEventObject<PointerEvent>>;\n  click?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  dblclick?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  touchstart?: EventEmitter<NgKonvaEventObject<TouchEvent>>;\n  touchmove?: EventEmitter<NgKonvaEventObject<TouchEvent>>;\n  touchend?: EventEmitter<NgKonvaEventObject<TouchEvent>>;\n  tap?: EventEmitter<NgKonvaEventObject<TouchEvent>>;\n  dbltap?: EventEmitter<NgKonvaEventObject<TouchEvent>>;\n  dragstart?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  dragmove?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n  dragend?: EventEmitter<NgKonvaEventObject<MouseEvent>>;\n}\n","/*\n * Public API Surface of ng2-konva\n */\nexport { CoreShapeComponent } from './lib/components/core-shape.component';\nexport { StageComponent } from './lib/components/stage.component';\nexport { KonvaComponent } from './lib/interfaces/ko-component.interface';\nexport { NgKonvaEventObject } from './lib/interfaces/ngKonvaEventObject';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CoreShape"],"mappings":"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"}