{"version":3,"file":"covalent-core-file.mjs","sources":["../../../../libs/angular/file/src/directives/file-select.directive.ts","../../../../libs/angular/file/src/directives/file-drop.directive.ts","../../../../libs/angular/file/src/file-input/file-input.component.ts","../../../../libs/angular/file/src/file-input/file-input.component.html","../../../../libs/angular/file/src/file-upload/file-upload.component.html","../../../../libs/angular/file/src/file-upload/file-upload.component.ts","../../../../libs/angular/file/src/services/file.service.ts","../../../../libs/angular/file/src/file.module.ts","../../../../libs/angular/file/src/covalent-core-file.ts"],"sourcesContent":["import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n  selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n  private _multiple = false;\n\n  /**\n   * multiple?: boolean\n   * Sets whether multiple files can be selected at once in host element, or just a single file.\n   * Can also be 'multiple' native attribute.\n   */\n  @Input()\n  set multiple(multiple: boolean | string) {\n    this._multiple = coerceBooleanProperty(multiple);\n  }\n\n  /**\n   * fileSelect?: function\n   * Event emitted when a file or files are selected in host [HTMLInputElement].\n   * Emits a [FileList | File] object.\n   * Alternative to not use [(ngModel)].\n   */\n  @Output() fileSelect: EventEmitter<FileList | File> = new EventEmitter<\n    FileList | File\n  >();\n\n  /**\n   * Binds native 'multiple' attribute if [multiple] property is 'true'.\n   */\n  @HostBinding('attr.multiple')\n  get multipleBinding(): string | undefined {\n    return this._multiple ? '' : undefined;\n  }\n\n  constructor(@Optional() @Host() private model: NgModel) {}\n\n  /**\n   * Listens to 'change' host event to get [HTMLInputElement] files.\n   * Emits the 'fileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n   * Uses [(ngModel)] if declared, instead of emitting 'fileSelect' event.\n   */\n  @HostListener('change', ['$event'])\n  onChange(event: Event): void {\n    if (event.target instanceof HTMLInputElement) {\n      const fileInputEl: HTMLInputElement = event.target;\n      const files: FileList = fileInputEl.files || new FileList();\n      if (files.length) {\n        const value: FileList | File = this._multiple\n          ? files.length > 1\n            ? files\n            : files[0]\n          : files[0];\n        this.model\n          ? this.model.update.emit(value)\n          : this.fileSelect.emit(value);\n      }\n    }\n  }\n}\n","import {\n  Directive,\n  Input,\n  Output,\n  EventEmitter,\n  HostListener,\n  HostBinding,\n  ElementRef,\n  Renderer2,\n  OnInit,\n  OnDestroy,\n  NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class TdFileDropBase {}\n\n@Directive({ selector: '[tdFileDrop]' })\nexport class TdFileDropDirective implements OnInit, OnDestroy {\n  private _multiple = false;\n  private _dragenterListener?: VoidFunction;\n  private _dragleaveListener?: VoidFunction;\n  private _dragoverListener?: VoidFunction;\n\n  /**\n   * multiple?: boolean\n   * Sets whether multiple files can be dropped at once in host element, or just a single file.\n   * Can also be 'multiple' native attribute.\n   */\n  @Input()\n  set multiple(multiple: boolean | string) {\n    this._multiple = coerceBooleanProperty(multiple);\n  }\n\n  @Input() disabled? = false;\n\n  /**\n   * fileDrop?: function\n   * Event emitted when a file or files are dropped in host element after being validated.\n   * Emits a [FileList | File] object.\n   */\n  @Output() fileDrop: EventEmitter<FileList | File> = new EventEmitter<\n    FileList | File\n  >();\n\n  /**\n   * Binds native 'multiple' attribute if [multiple] property is 'true'.\n   */\n  @HostBinding('attr.multiple')\n  get multipleBinding(): string | undefined {\n    return this._multiple ? '' : undefined;\n  }\n\n  /**\n   * Binds native 'disabled' attribute if [disabled] property is 'true'.\n   */\n  @HostBinding('attr.disabled')\n  get disabledBinding(): string | undefined {\n    return this.disabled ? '' : undefined;\n  }\n\n  constructor(\n    private _renderer: Renderer2,\n    private _element: ElementRef<HTMLElement>,\n    private _ngZone: NgZone\n  ) {}\n\n  ngOnInit(): void {\n    this._ngZone.runOutsideAngular(() => {\n      // Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n      // Stops event propagation and default action from browser for 'dragenter' event.\n      this._dragenterListener = this._renderer.listen(\n        this._element.nativeElement,\n        'dragenter',\n        (event: Event) => {\n          if (!this.disabled) {\n            this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n          }\n          this._stopEvent(event);\n        }\n      );\n\n      // Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n      // Stops event propagation and default action from browser for 'dragleave' event.\n      this._dragleaveListener = this._renderer.listen(\n        this._element.nativeElement,\n        'dragleave',\n        (event: Event) => {\n          this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n          this._stopEvent(event);\n        }\n      );\n\n      // Listens to 'dragover' host event to validate transfer items.\n      // Checks if 'multiple' attr exists in host to allow multiple file drops.\n      // Stops event propagation and default action from browser for 'dragover' event.\n      this._dragoverListener = this._renderer.listen(\n        this._element.nativeElement,\n        'dragover',\n        (event: DragEvent) => {\n          const transfer: DataTransfer =\n            event.dataTransfer || new DataTransfer();\n          transfer.dropEffect = this._typeCheck(transfer.types);\n          if (\n            this.disabled ||\n            (!this._multiple &&\n              ((transfer.items && transfer.items.length > 1) ||\n                (<any>transfer).mozItemCount > 1))\n          ) {\n            transfer.dropEffect = 'none';\n          } else {\n            transfer.dropEffect = 'copy';\n          }\n          this._stopEvent(event);\n        }\n      );\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._dragenterListener?.();\n    this._dragleaveListener?.();\n    this._dragoverListener?.();\n  }\n\n  /**\n   * Listens to 'drop' host event to get validated transfer items.\n   * Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n   * Stops event propagation and default action from browser for 'drop' event.\n   */\n  @HostListener('drop', ['$event'])\n  onDrop(event: Event): void {\n    if (!this.disabled) {\n      const transfer: DataTransfer =\n        (<DragEvent>event).dataTransfer ?? new DataTransfer();\n      const files: FileList = transfer.files;\n      if (files.length) {\n        const value: FileList | File = this._multiple\n          ? files.length > 1\n            ? files\n            : files[0]\n          : files[0];\n        this.fileDrop.emit(value);\n      }\n    }\n    this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n    this._stopEvent(event);\n  }\n\n  /**\n   * Validates if the transfer item types are 'Files'.\n   */\n  private _typeCheck(\n    types: ReadonlyArray<string> | DOMStringList\n  ): 'none' | 'copy' | 'link' | 'move' {\n    let dropEffect: 'none' | 'copy' | 'link' | 'move' = 'none';\n    if (\n      types &&\n      (((<any>types).contains && (<any>types).contains('Files')) ||\n        ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1))\n    ) {\n      dropEffect = 'copy';\n    }\n\n    return dropEffect;\n  }\n\n  private _stopEvent(event: Event): void {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n}\n","import {\n  Component,\n  Directive,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  TemplateRef,\n  ViewContainerRef,\n  ChangeDetectorRef,\n  forwardRef,\n  OnInit,\n  OnDestroy,\n  NgZone,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { ENTER } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport {\n  ICanDisable,\n  IControlValueAccessor,\n  mixinControlValueAccessor,\n  mixinDisabled,\n} from '@covalent/core/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TdFileDropDirective } from '../directives/file-drop.directive';\nimport { TdFileSelectDirective } from '../directives/file-select.directive';\n\n@Directive({\n  selector: '[tdFileInputLabel]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n  constructor(\n    templateRef: TemplateRef<unknown>,\n    viewContainerRef: ViewContainerRef\n  ) {\n    super(templateRef, viewContainerRef);\n  }\n}\n\nexport class TdFileInputBase {\n  constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(\n  mixinDisabled(TdFileInputBase)\n);\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TdFileInputComponent),\n      multi: true,\n    },\n  ],\n  selector: 'td-file-input',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n  inputs: ['disabled', 'value'],\n  styleUrls: ['./file-input.component.scss'],\n  templateUrl: './file-input.component.html',\n  imports: [MatButtonModule, TdFileDropDirective, TdFileSelectDirective],\n})\nexport class TdFileInputComponent\n  extends _TdFileInputMixinBase\n  implements OnInit, OnDestroy, IControlValueAccessor, ICanDisable\n{\n  private _multiple = false;\n\n  /** The native `<button class=\"td-file-input\"></button>` element */\n  @ViewChild('fileInputButton', { static: true, read: ElementRef })\n  _inputButton!: ElementRef<HTMLElement>;\n\n  /** The native `<input type=\"file\"> element */\n  @ViewChild('fileInput', { static: true })\n  _inputElement!: ElementRef<HTMLInputElement>;\n  get inputElement(): HTMLInputElement {\n    return this._inputElement.nativeElement;\n  }\n\n  /**\n   * color?: 'accent' | 'primary' | 'warn'\n   * Sets button color. Uses same color palette accepted as [MatButton].\n   */\n  @Input() color?: 'accent' | 'primary' | 'warn';\n\n  /**\n   * multiple?: boolean\n   * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n   */\n  @Input()\n  set multiple(multiple: boolean | string) {\n    this._multiple = coerceBooleanProperty(multiple);\n  }\n  get multiple(): boolean {\n    return this._multiple;\n  }\n\n  /**\n   * accept?: string\n   * Sets files accepted when opening the file browser dialog.\n   * Same as 'accept' attribute in <input/> element.\n   */\n  @Input() accept?: string;\n\n  /**\n   * select?: function\n   * Event emitted a file is selected\n   * Emits a [File | FileList] object.\n   */\n  @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n    File | FileList\n  >();\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    private _ngZone: NgZone,\n    private _renderer: Renderer2,\n    _changeDetectorRef: ChangeDetectorRef\n  ) {\n    super(_changeDetectorRef);\n  }\n\n  ngOnInit(): void {\n    this._ngZone.runOutsideAngular(() => {\n      merge(\n        fromEvent(this._inputButton.nativeElement, 'click'),\n        fromEvent<KeyboardEvent>(this._inputButton.nativeElement, 'keyup').pipe(\n          filter((event) => event.keyCode === ENTER)\n        )\n      )\n        .pipe(takeUntil(this._destroy$))\n        .subscribe(() => this._inputElement.nativeElement.click());\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._destroy$.next();\n  }\n\n  /**\n   * Method executed when a file is selected.\n   */\n  handleSelect(files: File | FileList): void {\n    this.writeValue(files);\n    this.selectFile.emit(files);\n  }\n\n  /**\n   * Used to clear the selected files from the [TdFileInputComponent].\n   */\n  clear(): void {\n    this.writeValue(undefined);\n    this._renderer.setProperty(this.inputElement, 'value', '');\n  }\n\n  /** Method executed when the disabled value changes */\n  override onDisabledChange(v: boolean): void {\n    if (v) {\n      this.clear();\n    }\n  }\n  /**\n   * Sets disable to the component. Implemented as part of ControlValueAccessor.\n   */\n  override setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<button\n  #fileInputButton\n  mat-stroked-button\n  class=\"td-file-input\"\n  type=\"button\"\n  [color]=\"color\"\n  [multiple]=\"multiple\"\n  [disabled]=\"disabled\"\n  (fileDrop)=\"handleSelect($event)\"\n  tdFileDrop\n>\n  <ng-content></ng-content>\n</button>\n<input\n  #fileInput\n  class=\"td-file-input-hidden\"\n  type=\"file\"\n  [attr.accept]=\"accept\"\n  (fileSelect)=\"handleSelect($event)\"\n  [multiple]=\"multiple\"\n  [disabled]=\"disabled\"\n  tdFileSelect\n/>\n","<td-file-input\n  *ngIf=\"!value\"\n  [(ngModel)]=\"value\"\n  [multiple]=\"multiple\"\n  [disabled]=\"disabled\"\n  [accept]=\"accept\"\n  [color]=\"defaultColor\"\n  (selectFile)=\"handleSelect(value)\"\n>\n  <ng-template [cdkPortalOutlet]=\"inputLabel\" [ngIf]=\"true\"></ng-template>\n</td-file-input>\n<div *ngIf=\"value\">\n  <button\n    #fileUpload\n    class=\"td-file-upload\"\n    mat-raised-button\n    type=\"button\"\n    [color]=\"activeColor\"\n    (keyup.delete)=\"_cancel()\"\n    (keyup.backspace)=\"_cancel()\"\n    (keyup.escape)=\"_cancel()\"\n    (click)=\"uploadPressed()\"\n  >\n    <ng-content></ng-content>\n  </button>\n  <button\n    mat-icon-button\n    type=\"button\"\n    class=\"td-file-upload-cancel\"\n    [color]=\"cancelColor\"\n    (click)=\"_cancel()\"\n  >\n    <mat-icon>cancel</mat-icon>\n  </button>\n</div>\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ViewChild,\n  ContentChild,\n  ChangeDetectorRef,\n  forwardRef,\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  TdFileInputComponent,\n  TdFileInputLabelDirective,\n} from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\n\nexport class TdFileUploadBase {\n  constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TdFileUploadComponent),\n      multi: true,\n    },\n  ],\n  selector: 'td-file-upload',\n  styleUrls: ['./file-upload.component.scss'],\n  templateUrl: './file-upload.component.html',\n  imports: [CommonModule, FormsModule, TdFileInputComponent, MatButtonModule, MatIcon, CdkPortalOutlet],\n})\nexport class TdFileUploadComponent implements ControlValueAccessor {\n  private _multiple = false;\n  private _required = false;\n  private _disabled = false;\n\n  @ViewChild(TdFileInputComponent) fileInput?: TdFileInputComponent;\n\n  @ContentChild(TdFileInputLabelDirective)\n  inputLabel?: TdFileInputLabelDirective;\n\n  /**\n   * defaultColor?: 'accent' | 'primary' | 'warn'\n   * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n   */\n  @Input() defaultColor: 'accent' | 'primary' | 'warn' = 'primary';\n\n  /**\n   * activeColor?: 'accent' | 'primary' | 'warn'\n   * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n   */\n  @Input() activeColor: 'accent' | 'primary' | 'warn' = 'accent';\n\n  /**\n   * cancelColor?: 'accent' | 'primary' | 'warn'\n   * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n   */\n  @Input() cancelColor: 'accent' | 'primary' | 'warn' = 'warn';\n\n  /**\n   * multiple?: boolean\n   * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n   */\n  @Input()\n  set multiple(multiple: boolean) {\n    this._multiple = coerceBooleanProperty(multiple);\n  }\n  get multiple(): boolean {\n    return this._multiple;\n  }\n\n  /**\n   * required?: boolean\n   * Forces at least one file upload.\n   * Defaults to 'false'\n   */\n  @Input()\n  set required(required: boolean) {\n    this._required = coerceBooleanProperty(required);\n  }\n  get required(): boolean {\n    return this._required;\n  }\n\n  /**\n   * accept?: string\n   * Sets files accepted when opening the file browser dialog.\n   * Same as 'accept' attribute in <input/> element.\n   */\n  @Input() accept?: string;\n\n  @Input()\n  set disabled(disabled: boolean) {\n    this._disabled = disabled;\n    this.onDisabledChange(disabled);\n  }\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  @Input() value?: File | FileList | undefined;\n\n  /**\n   * select?: function\n   * Event emitted when a file is selected.\n   * Emits a [File | FileList] object.\n   */\n  @Output() selectFile: EventEmitter<File | FileList> = new EventEmitter<\n    File | FileList\n  >();\n\n  /**\n   * upload?: function\n   * Event emitted when upload button is clicked.\n   * Emits a [File | FileList] object.\n   */\n  @Output() upload: EventEmitter<File | FileList | unknown> = new EventEmitter<\n    File | FileList | unknown\n  >();\n\n  /**\n   * cancel?: function\n   * Event emitted when cancel button is clicked.\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() cancel: EventEmitter<void> = new EventEmitter<void>(); // TODO: check if we can change the name of this emitter\n\n  constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n  writeValue(value: File | FileList): void {\n    this.value = value;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  registerOnChange(): void {\n    //\n  }\n\n  registerOnTouched(): void {\n    //\n  }\n\n  /**\n   * Method executed when upload button is clicked.\n   */\n  uploadPressed(): void {\n    if (this.value) {\n      this.upload.emit(this.value);\n    }\n  }\n\n  /**\n   * Method executed when a file is selected.\n   */\n  handleSelect(value: File | FileList | undefined): void {\n    if (value) {\n      this.value = value;\n      this.selectFile.emit(value);\n    }\n  }\n\n  /**\n   * Methods executed when cancel button is clicked.\n   * Clears files.\n   */\n  _cancel(): void {\n    this.value = undefined;\n    this.cancel.emit();\n    // check if the file input is rendered before clearing it\n    if (this.fileInput) {\n      this.fileInput.clear();\n    }\n  }\n\n  /** Method executed when the disabled value changes */\n  onDisabledChange(v: boolean): void {\n    if (v) {\n      this._cancel();\n    }\n  }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport {\n  HttpClient,\n  HttpRequest,\n  HttpEvent,\n  HttpEventType,\n  HttpHeaders,\n  HttpParams,\n} from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport interface IUploadExtras {\n  headers?: { [name: string]: string | string[] };\n  params?: { [param: string]: string | string[] };\n}\n\n@Injectable()\nexport class TdFileService {\n  private _progressSubject: Subject<number> = new Subject<number>();\n  private _progressObservable: Observable<number>;\n\n  /**\n   * Gets progress observable to keep track of the files being uploaded.\n   * Needs to be supported by backend.\n   */\n  get progress(): Observable<number> {\n    return this._progressObservable;\n  }\n\n  /**\n   * Creates a new instance\n   * @param _http the http client instance\n   * @breaking-change 3.0.0 remove 'Optional' decorator once the legay upload method is removed\n   */\n  constructor(@Optional() private readonly _http: HttpClient) {\n    this._progressObservable = this._progressSubject.asObservable();\n  }\n\n  /**\n   * Uploads a file to a URL.\n   */\n  send(\n    url: string,\n    method: string,\n    body: File | FormData,\n    { headers, params }: IUploadExtras = {}\n  ): Observable<HttpEvent<any>> {\n    if (!this._http) {\n      throw new Error(\n        'The HttpClient module needs to be imported at root module level'\n      );\n    }\n    const req: HttpRequest<File | FormData> = new HttpRequest(\n      method.toUpperCase(),\n      url,\n      body,\n      {\n        reportProgress: true,\n        headers: new HttpHeaders(headers || {}),\n        params: new HttpParams({ fromObject: params || {} }),\n      }\n    );\n    return this._http\n      .request(req)\n      .pipe(tap((event: HttpEvent<any>) => this.handleEvent(event)));\n  }\n\n  private handleEvent<T = any>(event: HttpEvent<T>): void {\n    switch (event.type) {\n      case HttpEventType.Sent:\n        this._progressSubject.next(0);\n        break;\n      case HttpEventType.UploadProgress:\n        this._progressSubject.next(\n          Math.round((100 * event.loaded) / (event.total ?? 0))\n        );\n        break;\n      case HttpEventType.Response:\n        this._progressSubject.next(100);\n        break;\n      default:\n        break;\n    }\n  }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport {\n  TdFileInputComponent,\n  TdFileInputLabelDirective,\n} from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n  TdFileSelectDirective,\n  TdFileDropDirective,\n  TdFileUploadComponent,\n  TdFileInputComponent,\n  TdFileInputLabelDirective,\n];\n\n/**\n * @deprecated This module is deprecated and will be removed in future versions.\n * Please migrate to using standalone components as soon as possible.\n */\n@NgModule({\n  imports: [TD_FILE],\n  exports: [TD_FILE],\n  providers: [TdFileService],\n})\nexport class CovalentFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}