{"version":3,"file":"ngx-gilmapi.mjs","sources":["../../../projects/ui-angular-components/login/src/login.component.ts","../../../projects/ui-angular-components/login/src/login.component.html","../../../projects/ui-angular-components/login/src/login.module.ts","../../../projects/ui-angular-components/register/src/register.component.ts","../../../projects/ui-angular-components/register/src/register.component.html","../../../projects/ui-angular-components/register/src/register.module.ts","../../../projects/ui-angular-components/forgot-password/src/forgot-password.component.ts","../../../projects/ui-angular-components/forgot-password/src/forgot-password.component.html","../../../projects/ui-angular-components/forgot-password/src/forgot-password.module.ts","../../../projects/ui-angular-components/change-password/src/change-password.component.ts","../../../projects/ui-angular-components/change-password/src/change-password.component.html","../../../projects/ui-angular-components/change-password/src/change-password.module.ts","../../../projects/ui-angular-components/table/src/components/avatar/gmp-avatar.component.ts","../../../projects/ui-angular-components/table/src/components/avatar/gmp-avatar.component.html","../../../projects/ui-angular-components/table/src/interfaces/ISort.ts","../../../projects/ui-angular-components/table/src/interfaces/TableTypeColumns.ts","../../../projects/ui-angular-components/table/src/components/table/table.component.ts","../../../projects/ui-angular-components/table/src/components/table/table.component.html","../../../projects/ui-angular-components/table/src/components/table/table.module.ts","../../../projects/ui-angular-components/table/src/components/table-config/table-config.component.ts","../../../projects/ui-angular-components/table/src/components/table-config/table-config.component.html","../../../projects/ui-angular-components/table/src/components/table-config/table-config.module.ts","../../../projects/ui-angular-components/table/src/interfaces/ITablePaginator.ts","../../../projects/ui-angular-components/alert-modal/src/alert-modal.component.ts","../../../projects/ui-angular-components/alert-modal/src/alert-modal.component.html","../../../projects/ui-angular-components/alert-modal/src/alert-modal.module.ts","../../../projects/ui-angular-components/view-pic-modal/src/view-pic-modal.component.ts","../../../projects/ui-angular-components/view-pic-modal/src/view-pic-modal.component.html","../../../projects/ui-angular-components/view-pic-modal/src/view-pic-modal.module.ts","../../../projects/ui-angular-components/layout/src/service/layout.service.ts","../../../projects/ui-angular-components/layout/src/components/breadcrumb/breadcrumb.component.ts","../../../projects/ui-angular-components/layout/src/components/breadcrumb/breadcrumb.component.html","../../../projects/ui-angular-components/layout/src/components/configurator/configurator.component.ts","../../../projects/ui-angular-components/layout/src/components/configurator/configurator.component.html","../../../projects/ui-angular-components/layout/src/components/menuitem/menuitem.component.ts","../../../projects/ui-angular-components/layout/src/components/menuitem/menuitem.component.html","../../../projects/ui-angular-components/layout/src/components/menu/menu.component.ts","../../../projects/ui-angular-components/layout/src/components/menu/menu.component.html","../../../projects/ui-angular-components/layout/src/components/sidebar/sidebar.component.ts","../../../projects/ui-angular-components/layout/src/components/sidebar/sidebar.component.html","../../../projects/ui-angular-components/layout/src/components/topbar/topbar.component.ts","../../../projects/ui-angular-components/layout/src/components/topbar/topbar.component.html","../../../projects/ui-angular-components/layout/src/components/layout/layout.component.ts","../../../projects/ui-angular-components/layout/src/components/layout/layout.component.html","../../../projects/ui-angular-components/layout/src/components/profile-menu/profile-menu.component.ts","../../../projects/ui-angular-components/layout/src/components/profile-menu/profile-menu.component.html","../../../projects/ui-angular-components/layout/src/layout.module.ts","../../../projects/ui-angular-components/paginator/src/components/paginator/paginator.component.ts","../../../projects/ui-angular-components/paginator/src/components/paginator/paginator.component.html","../../../projects/ui-angular-components/paginator/src/components/paginator/paginator.module.ts","../../../projects/ui-angular-components/paginator/src/interfaces/IPaginator.ts","../../../projects/ui-angular-components/filter-group/src/interfaces/IFilter.ts","../../../projects/ui-angular-components/filter-group/src/services/filter.service.ts","../../../projects/ui-angular-components/filter-group/src/components/filter-group/filter-group.component.ts","../../../projects/ui-angular-components/filter-group/src/components/filter-group/filter-group.component.html","../../../projects/ui-angular-components/filter-group/src/components/filter-group/filter-group.module.ts","../../../projects/ui-angular-components/ngx-gilmapi.ts"],"sourcesContent":["import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, inject, Inject, Optional, signal, Type, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\n\nimport { LoginConfig, LoginCredentials, LoginServiceInterface } from './interfaces/login.interface';\n\n@Component({\n  selector: 'ngx-gmp-login',\n  templateUrl: './login.component.html',\n  styleUrls: ['./login.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class GmpLoginComponent {\n  fb = inject(FormBuilder);\n  router = inject(Router);\n  messageService = inject(MessageService);\n  activatedRoute = inject(ActivatedRoute);\n\n  private authService: LoginServiceInterface | null = null;\n  public welcomeContentComponent: Type<any> | null = null;\n  loginConfig: LoginConfig | null = null;\n\n  isLoading = signal<boolean>(false);\n  showPassword = signal<boolean>(false);\n\n  eyeOpenIcon = 'pi pi-eye';\n  eyeClosedIcon = 'pi pi-eye-slash';\n\n  loginForm = this.fb.group({\n    email: ['', [Validators.required, Validators.email]],\n    password: ['', [Validators.required]],\n  });\n\n  constructor(\n    @Optional() @Inject('AUTH_SERVICE') authService: LoginServiceInterface,\n    @Optional() @Inject('WELCOME_CONTENT_COMPONENT') welcomeContentComponent: Type<any>,\n    @Optional() @Inject('LOGIN_CONFIG') loginConfig: LoginConfig,\n  ) {\n    this.authService = authService;\n    this.welcomeContentComponent = welcomeContentComponent;\n    this.loginConfig = loginConfig;\n  }\n\n  togglePasswordVisibility() {\n    this.showPassword.update(current => !current);\n  }\n\n  goToRegister() {\n    if (this.loginConfig?.registerRoute) {\n      // Obtener los parámetros actuales de la ruta\n      const currentParams = this.activatedRoute.snapshot.queryParams;\n\n      // Navegar al registro con los parámetros actuales\n      this.router.navigate([this.loginConfig.registerRoute], {\n        queryParams: currentParams,\n      });\n    }\n  }\n\n  async signIn() {\n    this.isLoading.set(true);\n    if (!this.authService) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error de autenticación',\n        detail: 'No se encontró el servicio de autenticación. Por favor intente nuevamente.',\n        life: 5000,\n      });\n      return;\n    }\n    if (!this.loginForm.valid) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error de autenticación',\n        detail: 'Por favor ingrese un email y contraseña válidos.',\n        life: 5000,\n      });\n      return;\n    }\n    const credentials: LoginCredentials = {\n      email: this.loginForm.value.email ?? '',\n      password: this.loginForm.value.password ?? '',\n    };\n    this.authService.login(credentials).subscribe({\n      next: () => {\n        this.isLoading.set(false);\n      },\n      error: (error: HttpErrorResponse) => {\n        this.isLoading.set(false);\n        if (error.status === 401) {\n          this.messageService.add({\n            severity: 'error',\n            summary: 'Error de autenticación',\n            detail: 'Las credenciales ingresadas son inválidas. Por favor intente nuevamente.',\n            life: 5000,\n          });\n        } else {\n          this.messageService.add({\n            severity: 'error',\n            summary: 'Error',\n            detail: 'Ocurrió un problema al intentar ingresar. Por favor intente nuevamente más tarde.',\n            life: 5000,\n          });\n        }\n\n        console.error('Login error:', error);\n      },\n    });\n  }\n\n  resetForm() {\n    this.loginForm.reset();\n    this.loginForm.patchValue({\n      email: '',\n      password: '',\n    });\n  }\n}\n","<p-toast></p-toast>\n\n<div class=\"login-page\">\n  <!-- Card Container - only has card styling on large screens -->\n  <div class=\"login-card\">\n    <!-- Left side - Login Form -->\n    <div class=\"login-panel login-panel-form\">\n      <!-- Logo -->\n      @if(loginConfig?.logoUrl) {<div class=\"login-logo-wrap\">\n        <img [src]=\"loginConfig?.logoUrl\" class=\"login-logo\" alt=\"logo\" />\n      </div>\n      }\n\n      <!-- Login Header -->\n      <h1 class=\"login-title\">Ingreso</h1>\n\n      <!-- Login Form -->\n      <form [formGroup]=\"loginForm\" class=\"login-form fade-in\" (ngSubmit)=\"signIn()\">\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"email\" class=\"login-label\">Email*</label>\n          <input\n            id=\"email\"\n            pInputText\n            type=\"text\"\n            class=\"input-field login-input\"\n            placeholder=\"Ingrese su email\"\n            formControlName=\"email\"\n          />\n        </div>\n\n        <div class=\"form-group form-group-tight\">\n          <label for=\"password\" class=\"login-label\">Contraseña *</label>\n          <div class=\"password-field-wrap\">\n            <input\n              id=\"password\"\n              pInputText\n              [type]=\"showPassword() ? 'text' : 'password'\"\n              class=\"input-field login-input login-input-password\"\n              placeholder=\"Ingrese su contraseña\"\n              formControlName=\"password\"\n            />\n            <button\n              type=\"button\"\n              class=\"password-toggle password-toggle-button\"\n              (click)=\"togglePasswordVisibility()\"\n            >\n              <i [class]=\"showPassword() ? eyeClosedIcon : eyeOpenIcon\"></i>\n            </button>\n          </div>\n        </div>\n\n        <div class=\"login-options-row\">\n          <div class=\"login-remember-row\">\n            <input\n              type=\"checkbox\"\n              id=\"remember\"\n              class=\"checkbox-field login-checkbox\"\n            />\n            <label for=\"remember\" class=\"login-checkbox-label\">Recordarme</label>\n          </div>\n          @if(loginConfig?.forgotPasswordRoute) {\n          <a [href]=\"loginConfig?.forgotPasswordRoute\" class=\"login-link\">¿Olvidó su contraseña?</a>\n          }\n        </div>\n\n        <button\n          type=\"submit\"\n          [class]=\"\n            'submit-button login-submit-button ' +\n            (isLoading() || !loginForm.valid\n              ? 'login-submit-button-disabled'\n              : 'login-submit-button-enabled')\n          \"\n          [disabled]=\"isLoading() || !loginForm.valid\"\n        >\n          @if(isLoading()) {\n          <span class=\"loading-inline\">\n            <i class=\"pi pi-spin pi-spinner loading-inline-icon\"></i>\n            Cargando...\n          </span>\n          } @else {\n          <span>Ingresar</span>\n          }\n        </button>\n\n        @if(loginConfig?.registerRoute) {\n        <div class=\"login-register-row\">\n          <span class=\"login-register-text\">\n            ¿No tiene una cuenta?\n            <a (click)=\"goToRegister()\" class=\"login-register-link\">\n              Registrarse\n            </a>\n          </span>\n        </div>\n        }\n      </form>\n    </div>\n\n    <!-- Right side - Welcome Content (Dynamic) -->\n    <div *ngIf=\"welcomeContentComponent\" class=\"login-panel login-panel-welcome welcome-content\">\n      <ng-container *ngComponentOutlet=\"welcomeContentComponent\"></ng-container>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  CUSTOM_ELEMENTS_SCHEMA,\n  NgModule,\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterModule } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { PasswordModule } from 'primeng/password';\nimport { RippleModule } from 'primeng/ripple';\nimport { ToastModule } from 'primeng/toast';\n\nimport { GmpLoginComponent } from './login.component';\n\n@NgModule({\n  declarations: [GmpLoginComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forChild([{ path: '', component: GmpLoginComponent }]),\n    MatButtonModule,\n    MatInputModule,\n    ButtonModule,\n    CheckboxModule,\n    InputTextModule,\n    PasswordModule,\n    RippleModule,\n    ToastModule,\n    MessageModule,\n  ],\n  providers: [MessageService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [GmpLoginComponent],\n})\nexport class GmpLoginModule {\n  constructor() {}\n}\n","import { Component, inject, Inject, Optional, signal, Type, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, FormBuilder, ValidationErrors, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\n\nimport { RegisterConfig, RegisterCredentials, RegisterServiceInterface } from './interfaces/register.interface';\n\n@Component({\n  selector: 'ngx-gmp-register',\n  templateUrl: './register.component.html',\n  styleUrls: ['./register.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class GmpRegisterComponent {\n  fb = inject(FormBuilder);\n  router = inject(Router);\n  messageService = inject(MessageService);\n  activatedRoute = inject(ActivatedRoute);\n\n  private authService: RegisterServiceInterface | null = null;\n  public welcomeContentComponent: Type<any> | null = null;\n  registerConfig: RegisterConfig | null = null;\n\n  $isLoading = signal<boolean>(false);\n  $showPassword = signal<boolean>(false);\n  $showConfirmPassword = signal<boolean>(false);\n  $confirmed = signal<boolean>(false);\n\n  // Iconos de Material\n  eyeOpenIcon = 'pi pi-eye';\n  eyeClosedIcon = 'pi pi-eye-slash';\n\n  registerForm = this.fb.group(\n    {\n      username: ['', [Validators.required, Validators.minLength(3)]],\n      email: ['', [Validators.required, Validators.email]],\n      password: ['', [Validators.required, Validators.minLength(6)]],\n      confirmPassword: ['', [Validators.required]],\n    },\n    { validators: this.passwordMatchValidator },\n  );\n\n  constructor(\n    @Optional() @Inject('AUTH_SERVICE') authService: RegisterServiceInterface,\n    @Optional() @Inject('WELCOME_CONTENT_COMPONENT') welcomeContentComponent: Type<any>,\n    @Optional() @Inject('REGISTER_CONFIG') registerConfig: RegisterConfig,\n  ) {\n    this.authService = authService;\n    this.welcomeContentComponent = welcomeContentComponent;\n    this.registerConfig = registerConfig;\n  }\n\n  passwordMatchValidator(control: AbstractControl): ValidationErrors | null {\n    const password = control.get('password');\n    const confirmPassword = control.get('confirmPassword');\n    if (password && confirmPassword && password.value !== confirmPassword.value) {\n      return { passwordMismatch: true };\n    }\n    return null;\n  }\n\n  togglePasswordVisibility() {\n    this.$showPassword.update(current => !current);\n  }\n\n  toggleConfirmPasswordVisibility() {\n    this.$showConfirmPassword.update(current => !current);\n  }\n\n  toggleConfirmed() {\n    this.$confirmed.update(current => !current);\n  }\n\n  async register() {\n    this.$isLoading.set(true);\n\n    if (this.registerConfig?.showTermsCheckbox && !this.$confirmed()) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error de registro',\n        detail: 'Debe aceptar los términos y condiciones para continuar.',\n        life: 5000,\n      });\n      this.$isLoading.set(false);\n      return;\n    }\n    const credentials: RegisterCredentials = {\n      username: this.registerForm.value.username ?? '',\n      email: this.registerForm.value.email ?? '',\n      password: this.registerForm.value.password ?? '',\n      confirmPassword: this.registerForm.value.confirmPassword ?? '',\n    };\n\n    // Llamar al servicio de autenticación para el registro\n    this.authService?.register(credentials).subscribe({\n      next: (response: any) => {\n        this.$isLoading.set(false);\n      },\n      error: (error: any) => {\n        this.$isLoading.set(false);\n        this.messageService.add({\n          severity: 'error',\n          summary: 'Error de registro',\n          detail: error.message || 'Ocurrió un problema al registrar su cuenta. Por favor intente nuevamente.',\n          life: 5000,\n        });\n        console.error('Register error:', error);\n      },\n    });\n  }\n\n  goToLogin() {\n    if (this.registerConfig?.loginRoute) {\n      this.router.navigate([this.registerConfig.loginRoute]);\n    }\n  }\n\n  resetForm() {\n    this.registerForm.reset();\n    this.$confirmed.set(false);\n    this.registerForm.patchValue({\n      username: '',\n      email: '',\n      password: '',\n      confirmPassword: '',\n    });\n  }\n\n  isSubmitDisabled(): boolean {\n    if (this.$isLoading() || !this.registerForm.valid) {\n      return true;\n    }\n    if (this.registerConfig?.showTermsCheckbox && !this.$confirmed()) {\n      return true;\n    }\n    return false;\n  }\n}\n","<p-toast></p-toast>\n@let isLoading = $isLoading();\n<div class=\"register-page\">\n  <!-- Card Container - only has card styling on large screens -->\n  <div class=\"register-card\">\n    <!-- Left side - Register Form -->\n    <div class=\"register-panel register-panel-form\">\n      <!-- Logo -->\n      @if(registerConfig?.logoUrl) {<div class=\"register-logo-wrap\">\n        <img [src]=\"registerConfig?.logoUrl\" class=\"register-logo\" alt=\"logo\" />\n      </div>\n      }\n\n      <!-- Register Header -->\n      <h1 class=\"register-title\">Registro</h1>\n      <p class=\"register-subtitle\">Creemos su cuenta</p>\n\n      <!-- Register Form -->\n      <form [formGroup]=\"registerForm\" class=\"register-form fade-in\" (ngSubmit)=\"register()\">\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"username\" class=\"register-label\">Nombre de usuario *</label>\n          <input\n            id=\"username\"\n            pInputText\n            type=\"text\"\n            class=\"input-field register-input\"\n            placeholder=\"Ingrese su nombre de usuario\"\n            formControlName=\"username\"\n          />\n        </div>\n\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"email\" class=\"register-label\">Email *</label>\n          <input\n            id=\"email\"\n            pInputText\n            type=\"email\"\n            class=\"input-field register-input\"\n            placeholder=\"Ingrese su email\"\n            formControlName=\"email\"\n          />\n        </div>\n\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"password\" class=\"register-label\">Contraseña *</label>\n          <div class=\"password-field-wrap\">\n            <input\n              id=\"password\"\n              pInputText\n              [type]=\"$showPassword() ? 'text' : 'password'\"\n              class=\"input-field register-input register-input-password\"\n              placeholder=\"Ingrese su contraseña\"\n              formControlName=\"password\"\n            />\n            <button\n              type=\"button\"\n              class=\"password-toggle password-toggle-button\"\n              (click)=\"togglePasswordVisibility()\"\n            >\n              <i [class]=\"$showPassword() ? eyeClosedIcon : eyeOpenIcon\"></i>\n            </button>\n          </div>\n        </div>\n\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"confirmPassword\" class=\"register-label\">Confirmar contraseña *</label>\n          <div class=\"password-field-wrap\">\n            <input\n              id=\"confirmPassword\"\n              pInputText\n              [type]=\"$showConfirmPassword() ? 'text' : 'password'\"\n              class=\"input-field register-input register-input-password\"\n              placeholder=\"Confirme su contraseña\"\n              formControlName=\"confirmPassword\"\n            />\n            <button\n              type=\"button\"\n              class=\"password-toggle password-toggle-button\"\n              (click)=\"toggleConfirmPasswordVisibility()\"\n            >\n              <i [class]=\"$showConfirmPassword() ? eyeClosedIcon : eyeOpenIcon\"></i>\n            </button>\n          </div>\n        </div>\n\n        @if(registerConfig?.showTermsCheckbox) {\n        <div class=\"register-terms-row\">\n          <input\n            type=\"checkbox\"\n            id=\"terms\"\n            [checked]=\"$confirmed()\"\n            (change)=\"toggleConfirmed()\"\n            class=\"checkbox-field register-checkbox\"\n          />\n          <label for=\"terms\" class=\"register-checkbox-label\">\n            He leído y acepto los @if(registerConfig?.termsAndConditionsRoute) {\n            <a\n              [href]=\"registerConfig?.termsAndConditionsRoute\"\n              class=\"register-link\"\n              target=\"_blank\"\n            >\n              términos y condiciones\n            </a>\n            } @else { términos y condiciones }\n          </label>\n        </div>\n        }\n\n        <button\n          type=\"submit\"\n          [class]=\"\n            'submit-button register-submit-button ' +\n            (isSubmitDisabled()\n              ? 'register-submit-button-disabled'\n              : 'register-submit-button-enabled')\n          \"\n          [disabled]=\"isSubmitDisabled()\"\n        >\n          @if(isLoading) {\n          <span class=\"loading-inline\">\n            <i class=\"pi pi-spin pi-spinner loading-inline-icon\"></i>\n            Registrando...\n          </span>\n          } @else {\n          <span>Registrarse</span>\n          }\n        </button>\n\n        @if(registerConfig?.loginRoute) {\n        <div class=\"register-login-row\">\n          <span class=\"register-login-text\">\n            ¿Ya tiene una cuenta?\n            <a (click)=\"goToLogin()\" class=\"register-login-link\">\n              Iniciar sesión\n            </a>\n          </span>\n        </div>\n        }\n      </form>\n    </div>\n\n    <div *ngIf=\"welcomeContentComponent\" class=\"register-panel register-panel-welcome welcome-content\">\n      <ng-container *ngComponentOutlet=\"welcomeContentComponent\"></ng-container>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  CUSTOM_ELEMENTS_SCHEMA,\n  NgModule,\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterModule } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { PasswordModule } from 'primeng/password';\nimport { RippleModule } from 'primeng/ripple';\nimport { ToastModule } from 'primeng/toast';\n\nimport { GmpRegisterComponent } from './register.component';\n\n@NgModule({\n  declarations: [GmpRegisterComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forChild([{ path: '', component: GmpRegisterComponent }]),\n    MatButtonModule,\n    MatInputModule,\n    ButtonModule,\n    CheckboxModule,\n    InputTextModule,\n    PasswordModule,\n    RippleModule,\n    ToastModule,\n    MessageModule,\n  ],\n  providers: [MessageService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [GmpRegisterComponent],\n})\nexport class GmpRegisterModule {\n  constructor() {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport {\n  Component,\n  inject,\n  Inject,\n  Optional,\n  signal,\n  Type,\n} from '@angular/core';\nimport {\n  FormBuilder,\n  Validators,\n} from '@angular/forms';\nimport {\n  ActivatedRoute,\n  Router,\n} from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\n\nimport {\n  ForgotPasswordConfig,\n  ForgotPasswordRequest,\n  ForgotPasswordServiceInterface,\n} from './interfaces/forgot-password.interface';\n\n@Component({\n  selector: 'ngx-gmp-forgot-password',\n  templateUrl: './forgot-password.component.html',\n  styleUrls: ['./forgot-password.component.scss'],\n  standalone: false,\n})\nexport class GmpForgotPasswordComponent {\n  fb = inject(FormBuilder);\n  router = inject(Router);\n  messageService = inject(MessageService);\n  activatedRoute = inject(ActivatedRoute);\n\n  private authService: ForgotPasswordServiceInterface | null = null;\n  public welcomeContentComponent: Type<any> | null = null;\n  forgotPasswordConfig: ForgotPasswordConfig | null = null;\n\n  isLoading = signal<boolean>(false);\n\n  forgotPasswordForm = this.fb.group({\n    email: ['', [Validators.required, Validators.email]],\n  });\n\n  constructor(\n    @Optional() @Inject('AUTH_SERVICE') authService: ForgotPasswordServiceInterface,\n    @Optional() @Inject('WELCOME_CONTENT_COMPONENT') welcomeContentComponent: Type<any>,\n    @Optional() @Inject('FORGOT_PASSWORD_CONFIG') forgotPasswordConfig: ForgotPasswordConfig,\n  ) {\n    this.authService = authService;\n    this.welcomeContentComponent = welcomeContentComponent;\n    this.forgotPasswordConfig = forgotPasswordConfig;\n  }\n\n  goToLogin() {\n    if (this.forgotPasswordConfig?.loginRoute) {\n      const currentParams = this.activatedRoute.snapshot.queryParams;\n      this.router.navigate([this.forgotPasswordConfig.loginRoute], {\n        queryParams: currentParams,\n      });\n    }\n  }\n\n  submit() {\n    this.isLoading.set(true);\n\n    if (!this.authService) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error',\n        detail: 'No se encontró el servicio de recuperación de contraseña.',\n        life: 5000,\n      });\n      this.isLoading.set(false);\n      return;\n    }\n\n    if (!this.forgotPasswordForm.valid) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error',\n        detail: 'Por favor ingrese un email válido.',\n        life: 5000,\n      });\n      this.isLoading.set(false);\n      return;\n    }\n\n    const payload: ForgotPasswordRequest = {\n      email: this.forgotPasswordForm.value.email ?? '',\n    };\n\n    this.authService.forgotPassword(payload).subscribe({\n      next: () => {\n        this.isLoading.set(false);\n        this.messageService.add({\n          severity: 'success',\n          summary: 'Solicitud enviada',\n          detail: 'Si el correo existe, recibirá instrucciones para restablecer su contraseña.',\n          life: 5000,\n        });\n      },\n      error: (error: HttpErrorResponse) => {\n        this.isLoading.set(false);\n        this.messageService.add({\n          severity: 'error',\n          summary: 'Error',\n          detail: error?.error?.message || 'No fue posible procesar la solicitud. Intente nuevamente.',\n          life: 5000,\n        });\n        console.error('Forgot password error:', error);\n      },\n    });\n  }\n}\n","<p-toast></p-toast>\n\n<div class=\"forgot-page\">\n  <div class=\"forgot-card\">\n    <div class=\"forgot-panel forgot-panel-form\">\n      @if (forgotPasswordConfig?.logoUrl) {\n        <div class=\"forgot-logo-wrap\">\n          <img [src]=\"forgotPasswordConfig?.logoUrl\" class=\"forgot-logo\" alt=\"logo\" />\n        </div>\n      }\n\n      <h1 class=\"forgot-title\">{{ forgotPasswordConfig?.title || 'Recuperar contraseña' }}</h1>\n      <p class=\"forgot-subtitle\">\n        {{ forgotPasswordConfig?.subtitle || 'Ingrese su correo para enviarle las instrucciones de recuperación.' }}\n      </p>\n\n      <form [formGroup]=\"forgotPasswordForm\" class=\"forgot-form fade-in\" (ngSubmit)=\"submit()\">\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"email\" class=\"forgot-label\">Email *</label>\n          <input\n            id=\"email\"\n            pInputText\n            type=\"email\"\n            class=\"input-field forgot-input\"\n            placeholder=\"Ingrese su email\"\n            formControlName=\"email\"\n          />\n        </div>\n\n        <button\n          type=\"submit\"\n          [class]=\"\n            'forgot-submit-button ' +\n            (isLoading() || !forgotPasswordForm.valid\n              ? 'forgot-submit-button-disabled'\n              : 'forgot-submit-button-enabled')\n          \"\n          [disabled]=\"isLoading() || !forgotPasswordForm.valid\"\n        >\n          @if (isLoading()) {\n            <span class=\"loading-inline\">\n              <i class=\"pi pi-spin pi-spinner loading-inline-icon\"></i>\n              Enviando...\n            </span>\n          } @else {\n            <span>{{ forgotPasswordConfig?.submitLabel || 'Enviar instrucciones' }}</span>\n          }\n        </button>\n\n        @if (forgotPasswordConfig?.loginRoute) {\n          <div class=\"forgot-login-row\">\n            <a (click)=\"goToLogin()\" class=\"forgot-login-link\">Volver al inicio de sesión</a>\n          </div>\n        }\n      </form>\n    </div>\n\n    @if (welcomeContentComponent) {\n      <div class=\"forgot-panel forgot-panel-welcome welcome-content\">\n        <ng-container *ngComponentOutlet=\"welcomeContentComponent\"></ng-container>\n      </div>\n    }\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  CUSTOM_ELEMENTS_SCHEMA,\n  NgModule,\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterModule } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { RippleModule } from 'primeng/ripple';\nimport { ToastModule } from 'primeng/toast';\n\nimport { GmpForgotPasswordComponent } from './forgot-password.component';\n\n@NgModule({\n  declarations: [GmpForgotPasswordComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forChild([{ path: '', component: GmpForgotPasswordComponent }]),\n    MatButtonModule,\n    MatInputModule,\n    ButtonModule,\n    InputTextModule,\n    RippleModule,\n    ToastModule,\n    MessageModule,\n  ],\n  providers: [MessageService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [GmpForgotPasswordComponent],\n})\nexport class GmpForgotPasswordModule {\n  constructor() {}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport {\n  AbstractControl,\n  FormBuilder,\n  ValidationErrors,\n  Validators,\n} from '@angular/forms';\nimport {\n  Component,\n  inject,\n  Inject,\n  Optional,\n  signal,\n  Type,\n} from '@angular/core';\nimport {\n  ActivatedRoute,\n  Router,\n} from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\n\nimport {\n  ChangePasswordConfig,\n  ChangePasswordRequest,\n  ChangePasswordServiceInterface,\n} from './interfaces/change-password.interface';\n\n@Component({\n  selector: 'ngx-gmp-change-password',\n  templateUrl: './change-password.component.html',\n  styleUrls: ['./change-password.component.scss'],\n  standalone: false,\n})\nexport class GmpChangePasswordComponent {\n  fb = inject(FormBuilder);\n  router = inject(Router);\n  messageService = inject(MessageService);\n  activatedRoute = inject(ActivatedRoute);\n\n  private authService: ChangePasswordServiceInterface | null = null;\n  public welcomeContentComponent: Type<any> | null = null;\n  changePasswordConfig: ChangePasswordConfig | null = null;\n\n  isLoading = signal<boolean>(false);\n  showPassword = signal<boolean>(false);\n  showConfirmPassword = signal<boolean>(false);\n\n  changePasswordForm = this.fb.group(\n    {\n      password: ['', [Validators.required, Validators.minLength(6)]],\n      confirmPassword: ['', [Validators.required]],\n    },\n    { validators: this.passwordMatchValidator },\n  );\n\n  constructor(\n    @Optional() @Inject('AUTH_SERVICE') authService: ChangePasswordServiceInterface,\n    @Optional() @Inject('WELCOME_CONTENT_COMPONENT') welcomeContentComponent: Type<any>,\n    @Optional() @Inject('CHANGE_PASSWORD_CONFIG') changePasswordConfig: ChangePasswordConfig,\n  ) {\n    this.authService = authService;\n    this.welcomeContentComponent = welcomeContentComponent;\n    this.changePasswordConfig = changePasswordConfig;\n  }\n\n  passwordMatchValidator(control: AbstractControl): ValidationErrors | null {\n    const password = control.get('password');\n    const confirmPassword = control.get('confirmPassword');\n    if (password && confirmPassword && password.value !== confirmPassword.value) {\n      return { passwordMismatch: true };\n    }\n    return null;\n  }\n\n  togglePasswordVisibility() {\n    this.showPassword.update(current => !current);\n  }\n\n  toggleConfirmPasswordVisibility() {\n    this.showConfirmPassword.update(current => !current);\n  }\n\n  goToLogin() {\n    if (this.changePasswordConfig?.loginRoute) {\n      const currentParams = this.activatedRoute.snapshot.queryParams;\n      this.router.navigate([this.changePasswordConfig.loginRoute], {\n        queryParams: currentParams,\n      });\n    }\n  }\n\n  submit() {\n    this.isLoading.set(true);\n\n    if (!this.authService) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error',\n        detail: 'No se encontró el servicio para cambiar contraseña.',\n        life: 5000,\n      });\n      this.isLoading.set(false);\n      return;\n    }\n\n    if (!this.changePasswordForm.valid) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error',\n        detail: 'Por favor complete correctamente el formulario.',\n        life: 5000,\n      });\n      this.isLoading.set(false);\n      return;\n    }\n\n    const queryParamName = this.changePasswordConfig?.securityCodeQueryParamName || 'code';\n    const securityCode = this.activatedRoute.snapshot.queryParamMap.get(queryParamName) || '';\n\n    if (!securityCode) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Código inválido',\n        detail: `No se encontró el código de seguridad en el parámetro \"${queryParamName}\".`,\n        life: 5000,\n      });\n      this.isLoading.set(false);\n      return;\n    }\n\n    const payload: ChangePasswordRequest = {\n      securityCode,\n      password: this.changePasswordForm.value.password ?? '',\n      confirmPassword: this.changePasswordForm.value.confirmPassword ?? '',\n    };\n\n    this.authService.changePassword(payload).subscribe({\n      next: () => {\n        this.isLoading.set(false);\n        this.messageService.add({\n          severity: 'success',\n          summary: 'Contraseña actualizada',\n          detail: 'La contraseña se actualizó correctamente.',\n          life: 5000,\n        });\n      },\n      error: (error: HttpErrorResponse) => {\n        this.isLoading.set(false);\n        this.messageService.add({\n          severity: 'error',\n          summary: 'Error',\n          detail: error?.error?.message || 'No fue posible cambiar la contraseña. Intente nuevamente.',\n          life: 5000,\n        });\n        console.error('Change password error:', error);\n      },\n    });\n  }\n}\n","<p-toast></p-toast>\n\n<div class=\"change-page\">\n  <div class=\"change-card\">\n    <div class=\"change-panel change-panel-form\">\n      @if (changePasswordConfig?.logoUrl) {\n        <div class=\"change-logo-wrap\">\n          <img [src]=\"changePasswordConfig?.logoUrl\" class=\"change-logo\" alt=\"logo\" />\n        </div>\n      }\n\n      <h1 class=\"change-title\">{{ changePasswordConfig?.title || 'Cambiar contraseña' }}</h1>\n      <p class=\"change-subtitle\">\n        {{ changePasswordConfig?.subtitle || 'Ingrese y confirme su nueva contraseña.' }}\n      </p>\n\n      <form [formGroup]=\"changePasswordForm\" class=\"change-form fade-in\" (ngSubmit)=\"submit()\">\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"password\" class=\"change-label\">Nueva contraseña *</label>\n          <div class=\"password-field-wrap\">\n            <input\n              id=\"password\"\n              pInputText\n              [type]=\"showPassword() ? 'text' : 'password'\"\n              class=\"input-field change-input change-input-password\"\n              placeholder=\"Ingrese su nueva contraseña\"\n              formControlName=\"password\"\n            />\n            <button type=\"button\" class=\"password-toggle password-toggle-button\" (click)=\"togglePasswordVisibility()\">\n              <i [class]=\"showPassword() ? 'pi pi-eye-slash' : 'pi pi-eye'\"></i>\n            </button>\n          </div>\n        </div>\n\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"confirmPassword\" class=\"change-label\">Repetir contraseña *</label>\n          <div class=\"password-field-wrap\">\n            <input\n              id=\"confirmPassword\"\n              pInputText\n              [type]=\"showConfirmPassword() ? 'text' : 'password'\"\n              class=\"input-field change-input change-input-password\"\n              placeholder=\"Repita su nueva contraseña\"\n              formControlName=\"confirmPassword\"\n            />\n            <button type=\"button\" class=\"password-toggle password-toggle-button\" (click)=\"toggleConfirmPasswordVisibility()\">\n              <i [class]=\"showConfirmPassword() ? 'pi pi-eye-slash' : 'pi pi-eye'\"></i>\n            </button>\n          </div>\n        </div>\n\n        <button\n          type=\"submit\"\n          [class]=\"\n            'change-submit-button ' +\n            (isLoading() || !changePasswordForm.valid\n              ? 'change-submit-button-disabled'\n              : 'change-submit-button-enabled')\n          \"\n          [disabled]=\"isLoading() || !changePasswordForm.valid\"\n        >\n          @if (isLoading()) {\n            <span class=\"loading-inline\">\n              <i class=\"pi pi-spin pi-spinner loading-inline-icon\"></i>\n              Guardando...\n            </span>\n          } @else {\n            <span>{{ changePasswordConfig?.submitLabel || 'Actualizar contraseña' }}</span>\n          }\n        </button>\n\n        @if (changePasswordConfig?.loginRoute) {\n          <div class=\"change-login-row\">\n            <a (click)=\"goToLogin()\" class=\"change-login-link\">Volver al inicio de sesión</a>\n          </div>\n        }\n      </form>\n    </div>\n\n    @if (welcomeContentComponent) {\n      <div class=\"change-panel change-panel-welcome welcome-content\">\n        <ng-container *ngComponentOutlet=\"welcomeContentComponent\"></ng-container>\n      </div>\n    }\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  CUSTOM_ELEMENTS_SCHEMA,\n  NgModule,\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterModule } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { RippleModule } from 'primeng/ripple';\nimport { ToastModule } from 'primeng/toast';\n\nimport { GmpChangePasswordComponent } from './change-password.component';\n\n@NgModule({\n  declarations: [GmpChangePasswordComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forChild([{ path: '', component: GmpChangePasswordComponent }]),\n    MatButtonModule,\n    MatInputModule,\n    ButtonModule,\n    InputTextModule,\n    RippleModule,\n    ToastModule,\n    MessageModule,\n  ],\n  providers: [MessageService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [GmpChangePasswordComponent],\n})\nexport class GmpChangePasswordModule {\n  constructor() {}\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n\n/** Muted palette similar to typical avatar initials UIs */\nconst INITIALS_BACKGROUND_COLORS = [\n  '#1abc9c',\n  '#3498db',\n  '#9b59b6',\n  '#34495e',\n  '#16a085',\n  '#27ae60',\n  '#2980b9',\n  '#8e44ad',\n  '#f1c40f',\n  '#e67e22',\n  '#e74c3c',\n  '#95a5a6',\n];\n\n@Component({\n  selector: 'ngx-gmp-avatar',\n  templateUrl: './gmp-avatar.component.html',\n  styleUrls: ['./gmp-avatar.component.scss'],\n  standalone: false,\n})\nexport class GmpAvatarComponent implements OnChanges {\n  @Input({ required: false }) name = '';\n  /** Image URL; on load error falls back to initials */\n  @Input({ required: false }) src: string | null | undefined;\n  /** Edge length in px */\n  @Input({ required: false }) size = 40;\n  @Input({ required: false }) round = false;\n  /** Max number of initials (e.g. 2 → two letters from name) */\n  @Input({ required: false }) initialsSize = 2;\n\n  protected showImage = false;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['src']) {\n      this.showImage = this.hasRenderableSrc(this.src);\n    }\n  }\n\n  protected onImgError(): void {\n    this.showImage = false;\n  }\n\n  protected get initials(): string {\n    return this.computeInitials(this.name, this.initialsSize);\n  }\n\n  protected get backgroundColor(): string {\n    return this.colorFromString(this.name || this.src || '?');\n  }\n\n  protected get fontSizePx(): number {\n    return Math.max(Math.round(this.size * 0.42), 10);\n  }\n\n  protected hasRenderableSrc(value: string | null | undefined): boolean {\n    return typeof value === 'string' && value.trim().length > 0;\n  }\n\n  private computeInitials(raw: string, max: number): string {\n    const n = Math.max(1, Math.floor(max));\n    const trimmed = (raw ?? '').trim();\n    if (!trimmed) {\n      return '?';\n    }\n    const parts = trimmed.split(/\\s+/).filter(Boolean);\n    if (parts.length >= n) {\n      return parts\n        .slice(0, n)\n        .map((p) => p.charAt(0))\n        .join('')\n        .toUpperCase()\n        .slice(0, n);\n    }\n    if (parts.length === 1) {\n      const w = parts[0];\n      return w.slice(0, n).toUpperCase();\n    }\n    const fromWords = parts\n      .map((p) => p.charAt(0))\n      .join('')\n      .toUpperCase();\n    return fromWords.slice(0, n) || '?';\n  }\n\n  private colorFromString(seed: string): string {\n    let hash = 0;\n    for (let i = 0; i < seed.length; i++) {\n      hash = seed.charCodeAt(i) + ((hash << 5) - hash);\n    }\n    const idx = Math.abs(hash) % INITIALS_BACKGROUND_COLORS.length;\n    return INITIALS_BACKGROUND_COLORS[idx];\n  }\n}\n","<div\n  class=\"gmp-avatar\"\n  [style.width.px]=\"size\"\n  [style.height.px]=\"size\"\n  [style.border-radius]=\"round ? '50%' : '0'\"\n  [style.background-color]=\"showImage ? 'transparent' : backgroundColor\"\n>\n  @if (showImage && hasRenderableSrc(src)) {\n    <img\n      [src]=\"src\"\n      [attr.alt]=\"name || ''\"\n      [width]=\"size\"\n      [height]=\"size\"\n      [style.width.px]=\"size\"\n      [style.height.px]=\"size\"\n      [style.border-radius]=\"round ? '50%' : '0'\"\n      draggable=\"false\"\n      (error)=\"onImgError()\"\n    />\n  } @else {\n    <span class=\"gmp-avatar__initials\" [style.fontSize.px]=\"fontSizePx\">{{ initials }}</span>\n  }\n</div>\n","export interface ISort {\n  sortKey: string;\n  sortOrder: sortOrder;\n  sortKeyAux?: string;\n}\n\nexport type sortOrder = 'asc' | 'desc' | '';\n\nexport const DefaultSort: ISort = {\n  sortKey: 'updatedAt',\n  sortOrder: 'desc',\n};\n","export enum TableTypeColumns {\n  ACTIONS,\n  TEXT,\n  CHECKBOX,\n  CUSTOM,\n  DATE,\n  NUMBER,\n  PHOTO,\n  CURRENCY,\n  PERCENTUAL,\n  LINK,\n  TRANSLATION,\n  HTML,\n  PHONE,\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  CdkDragDrop,\n  moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport { Location } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  effect,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Injector,\n  input,\n  Input,\n  model,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\n\nimport {\n  DefaultSort,\n  ISort,\n} from '../../interfaces/ISort';\nimport {\n  ICustomEventPayload,\n  ICustomTableCellEvent,\n  ICustomTableExpanderEvent,\n  ITable,\n  ITableColumn,\n} from '../../interfaces/ITable';\nimport { ITablePaginator } from '../../interfaces/ITablePaginator';\nimport { TableTypeColumns } from '../../interfaces/TableTypeColumns';\n\n@Component({\n  selector: 'ngx-gmp-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  animations: [\n    trigger('detailExpand', [\n      state('collapsed,void', style({ height: '0px', minHeight: '0' })),\n      state('expanded', style({ height: '100%' })),\n      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n    ]),\n  ],\n  standalone: false,\n})\nexport class GmpTableComponent<T> implements OnInit, AfterViewInit {\n  private location = inject(Location);\n  private cdr = inject(ChangeDetectorRef);\n  @Input() table: ITable<T> = {\n    tableData: new MatTableDataSource([] as T[]),\n    data: [],\n    columns: [],\n    sortOptions: { ...DefaultSort },\n    name: 'table',\n  };\n  @Output() deleteEvent = new EventEmitter<T>();\n  @Output() detailsEvent = new EventEmitter<T>();\n  @Output() editEvent = new EventEmitter<T>();\n  @Output() reloadEvent = new EventEmitter<ITable<T>>();\n  @Output() sortingChangeEvent = new EventEmitter<ISort>();\n  @Output() expandedElementChangeEvent = new EventEmitter<T | null>();\n  @Output() paginatorChangeEvent = new EventEmitter<ITablePaginator>();\n  @Output() photoOpenEvent = new EventEmitter<T>();\n  @Output() selectAllChange = new EventEmitter<boolean>();\n  @Output() customCellEvent = new EventEmitter<ICustomTableCellEvent<T>>();\n  @Output() selectedRowsChange = new EventEmitter<T[]>();\n  @Output() customExpanderEvent = new EventEmitter<ICustomTableExpanderEvent<T>>();\n  @ViewChild(MatSort, { static: true }) sort!: MatSort;\n  @ViewChild('matCheckbox') headerCheckbox!: MatCheckbox;\n  @ViewChildren('customComponentRef') customComponents!: QueryList<ElementRef>;\n  @ContentChild('customLoading') customLoading?: TemplateRef<any>;\n  @ContentChild('customEmptyData') customEmptyData?: TemplateRef<any>;\n  columnsToDisplay: string[] = [];\n  expandedElement!: any;\n  expandedElements = new Set<string | number>();\n  selectedRows: T[] = [];\n  selectedRowIds = new Set<string | number>();\n  imageErrors = new Map<string, boolean>();\n\n  // signals\n  $data = model<T[]>();\n  $columns = model<ITableColumn[]>();\n  $paginator = model<ITablePaginator>();\n  $sortOptions = model<ISort>();\n  $isLoading = model<boolean>();\n  $totalData = input<number>();\n  $selectedRows = model<T[]>([]);\n  @Input() setPairRows!: boolean;\n  @Input() hideHeader!: boolean;\n  @Input() name!: string;\n  @Input() showEditElementIcon!: boolean;\n  @Input() showDeleteElementIcon!: boolean;\n  @Input() showExpandElementIcon!: boolean;\n  @Input() canMoveColumns!: boolean;\n  @Input() canOpenOnClick!: boolean;\n  @Input() canExpandOnClick!: boolean;\n  @Input() customCellComponents!: any;\n  @Input() customEditSvgIcon!: string;\n  @Input() customDeleteSvgIcon!: string;\n  @Input() setURL!: boolean;\n  @Input() expanderComponent!: Type<any>;\n\n  constructor(public injector: Injector) {\n    this.loadEffects();\n  }\n\n  loadEffects(): void {\n    effect(() => {\n      const data = this.$data();\n      if (typeof data !== 'undefined' && data) {\n        this.table.data = data;\n        this.table.tableData = new MatTableDataSource(data);\n      }\n      const isLoading = this.$isLoading();\n      if (typeof isLoading !== 'undefined') {\n        this.table.isLoading = isLoading;\n      }\n      const columns = this.$columns();\n      if (typeof columns !== 'undefined' && columns) {\n        this.table.columns = columns;\n        this.updateColumns(columns);\n      }\n      const sortOptions = this.$sortOptions();\n      if (typeof sortOptions !== 'undefined' && sortOptions) {\n        this.table.sortOptions = sortOptions;\n      }\n      const paginator = this.$paginator();\n      if (typeof paginator !== 'undefined' && paginator) {\n        this.table.paginator = paginator;\n      }\n      const totalData = this.$totalData();\n      if (typeof totalData !== 'undefined' && this.table.paginator) {\n        this.table.paginator = { ...this.table.paginator, count: totalData };\n      }\n      const selectedRows = this.$selectedRows();\n      if (typeof selectedRows !== 'undefined' && selectedRows) {\n        this.selectedRows = selectedRows;\n        this.syncSelectedRowIds();\n      }\n    });\n  }\n\n  loadInputs(): void {\n    if (typeof this.name !== 'undefined' && this.name) this.table.name = this.name;\n    if (typeof this.showEditElementIcon !== 'undefined') this.table.showEditElementIcon = this.showEditElementIcon;\n    if (typeof this.showDeleteElementIcon !== 'undefined') this.table.showDeleteElementIcon = this.showDeleteElementIcon;\n    if (typeof this.showExpandElementIcon !== 'undefined') this.table.showExpandElementIcon = this.showExpandElementIcon;\n    if (typeof this.canMoveColumns !== 'undefined') this.table.canMoveColumns = this.canMoveColumns;\n    if (typeof this.canOpenOnClick !== 'undefined') this.table.canOpenOnClick = this.canOpenOnClick;\n    if (typeof this.canExpandOnClick !== 'undefined') this.table.canExpandOnClick = this.canExpandOnClick;\n    if (typeof this.hideHeader !== 'undefined') this.table.hideHeader = this.hideHeader;\n    if (typeof this.setPairRows !== 'undefined') this.table.setPairRows = this.setPairRows;\n    if (typeof this.customCellComponents !== 'undefined') this.table.customCellComponents = this.customCellComponents;\n    if (typeof this.customEditSvgIcon !== 'undefined') this.table.customEditSvgIcon = this.customEditSvgIcon;\n    if (typeof this.customDeleteSvgIcon !== 'undefined') this.table.customDeleteSvgIcon = this.customDeleteSvgIcon;\n    if (typeof this.expanderComponent !== 'undefined') this.table.expanderComponent = this.expanderComponent;\n  }\n\n  ngOnInit(): void {\n    this.setSorting();\n    this.loadInputs();\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.setupCustomComponentEvents();\n    }, 0);\n  }\n\n  ngOnChanges(): void {\n    this.updateColumns(this.table.columns);\n  }\n\n  updateColumns(columns: ITableColumn[]): void {\n    this.table.columns = this.table.columns.map(e => {\n      if (e.type !== TableTypeColumns.CUSTOM) {\n        return { ...e };\n      } else {\n        const column = { ...e };\n        if (!e.customComponent && e.customComponentName && this.table?.customCellComponents) {\n          column.customComponent = this.table?.customCellComponents[e.customComponentName];\n        }\n        return column;\n      }\n    });\n    this.columnsToDisplay = columns.filter((e: ITableColumn) => !e.hideColumn).map((e: ITableColumn) => e.value);\n  }\n\n  drop(event: CdkDragDrop<string[]>): void {\n    if (this.table.canMoveColumns) {\n      const columns = this.table.columns.map(e => e.value);\n      const previousIndex = columns.indexOf(columns[event.previousIndex]);\n      const currentIndex = columns.indexOf(columns[event.currentIndex]);\n      moveItemInArray(this.table.columns, previousIndex, currentIndex);\n      this.updateColumns(this.table.columns);\n      this.saveConfigInLocalStore();\n    }\n  }\n\n  setSorting(): void {\n    this.sort.sortChange.subscribe(res => {\n      this.table.sortOptions.sortKey = res.active;\n      this.table.sortOptions.sortOrder = res.direction;\n      this.table.sortOptions.sortKeyAux = res.active;\n      const column = this.table.columns.find(e => e.value === res.active || e.valueAux === res.active);\n      if (column && column.sortValue) {\n        this.table.sortOptions.sortKey = column.sortValue;\n      }\n      this.saveConfigInLocalStore();\n      if (this.$sortOptions) {\n        this.$sortOptions.set({ ...this.table.sortOptions });\n      }\n      this.sortingChangeEvent.emit({ ...this.table.sortOptions });\n      this.setUrl('sort', this.table.sortOptions.sortOrder ? this.table.sortOptions.sortKey + ':' + this.table.sortOptions.sortOrder : '');\n    });\n  }\n\n  reload(): void {\n    this.reloadEvent.emit(this.table);\n  }\n\n  saveConfigInLocalStore(): void {}\n\n  emitPaginatorEvent(event: { pageSize: number; pageIndex: number }): void {\n    if (this.table.paginator) {\n      this.table.paginator.forPage = event.pageSize;\n      this.table.paginator.page = event.pageIndex + 1;\n      if (this.$paginator) {\n        this.$paginator.set({ ...this.table.paginator });\n      }\n      this.setUrl('page', this.table.paginator?.page.toString()!);\n      this.setUrl('size', this.table.paginator?.forPage.toString()!);\n    }\n  }\n\n  emitEditEvent(element: T): void {\n    this.editEvent.emit(element);\n  }\n\n  emitDeleteEvent(element: T): void {\n    this.deleteEvent.emit(element);\n  }\n\n  emitDetailsEvent(element: T): void {\n    this.detailsEvent.emit(element);\n  }\n\n  openPic(element: T): void {\n    this.photoOpenEvent.emit(element);\n  }\n\n  private getImageErrorKey(element: T, column: ITableColumn): string {\n    const id = (element as any)[column.idKey || 'id'];\n    const rowIndex = this.table.data?.indexOf(element) ?? -1;\n    return `${id !== undefined && id !== null && id !== '' ? id : rowIndex}_${column.value}`;\n  }\n\n  onImageError(element: T, column: ITableColumn, event: Event): void {\n    const key = this.getImageErrorKey(element, column);\n    const imgElement = event.target as HTMLImageElement;\n\n    // Si ya estamos usando la URL de error y falla, ocultar la imagen\n    if (this.imageErrors.get(key)) {\n      imgElement.style.display = 'none';\n      return;\n    }\n\n    // Marcar que la imagen original falló - Angular actualizará el src a través de getImageSrc\n    if (column.imageErrorURL) {\n      this.imageErrors.set(key, true);\n      this.cdr.detectChanges();\n    }\n  }\n\n  getImageSrc(element: T, column: ITableColumn): string {\n    const key = this.getImageErrorKey(element, column);\n    if (this.imageErrors.get(key) && column.imageErrorURL) {\n      return column.imageErrorURL;\n    }\n    if (!((element[column.value as keyof T] as string) && column.imagePlaceholderURL)) {\n      return column.imagePlaceholderURL || '';\n    }\n    return element[column.value as keyof T] as string;\n  }\n\n  openElement(element: T): void {\n    if (this.table.canExpandOnClick) {\n      this.expandElement(element);\n    }\n    if (this.table.canOpenOnClick) {\n      this.emitDetailsEvent(element);\n    }\n  }\n\n  expandElement(element: any): void {\n    const id = element?.id;\n    if (!id) return;\n\n    if (this.expandedElements.has(id)) {\n      this.expandedElements.delete(id);\n      this.expandedElement = null;\n    } else {\n      this.expandedElements.add(id);\n      this.expandedElement = element;\n    }\n    this.expandedElementChangeEvent.emit(this.expandedElement);\n  }\n\n  changePage(event: { pageSize: number; pageIndex: number }): void {\n    if (this.table.paginator) {\n      this.table.paginator.forPage = event.pageSize;\n      this.table.paginator.page = event.pageIndex + 1;\n      this.paginatorChangeEvent.emit(this.table.paginator);\n      if (this.$paginator) {\n        this.$paginator.set({ ...this.table.paginator });\n      }\n      this.setUrl('page', this.table.paginator?.page.toString()!);\n      this.setUrl('size', this.table.paginator?.forPage.toString()!);\n    }\n  }\n\n  toggleSelectAll(checked: boolean): void {\n    const hasSelection = this.selectedRowIds.size > 0;\n\n    if (hasSelection) {\n      this.selectedRows = [];\n      this.selectedRowIds.clear();\n    } else {\n      this.selectedRows = [...this.table.data];\n      this.syncSelectedRowIds();\n    }\n\n    this.updateCheckboxColumn();\n    this.emitSelectedRowsChange();\n    this.selectAllChange.emit(!hasSelection);\n\n    if (this.headerCheckbox) {\n      this.headerCheckbox.checked = this.isAllSelected();\n      this.headerCheckbox.indeterminate = this.isSomeSelected();\n    }\n  }\n\n  toggleRowSelection(element: T, checked: boolean): void {\n    const id = (element as any)?.id;\n    if (!id) return;\n\n    if (checked) {\n      if (!this.selectedRowIds.has(id)) {\n        this.selectedRows.push(element);\n        this.selectedRowIds.add(id);\n      }\n    } else {\n      this.selectedRowIds.delete(id);\n      this.selectedRows = this.selectedRows.filter((row: any) => row?.id !== id);\n    }\n\n    this.updateCheckboxColumn();\n    this.emitSelectedRowsChange();\n\n    if (this.headerCheckbox) {\n      this.headerCheckbox.checked = this.isAllSelected();\n      this.headerCheckbox.indeterminate = this.isSomeSelected();\n    }\n  }\n\n  isRowSelected(element: T): boolean {\n    const id = (element as any)?.id;\n    return id ? this.selectedRowIds.has(id) : false;\n  }\n\n  isAllSelected(): boolean {\n    if (!this.table.data || this.table.data.length === 0) {\n      return false;\n    }\n    const allIds = (this.table.data as any[]).map(el => el?.id).filter(id => id !== undefined && id !== null);\n    return allIds.length > 0 && allIds.every(id => this.selectedRowIds.has(id));\n  }\n\n  isSomeSelected(): boolean {\n    return this.selectedRowIds.size > 0 && !this.isAllSelected();\n  }\n\n  syncSelectedRowIds(): void {\n    this.selectedRowIds.clear();\n    this.selectedRows.forEach((row: any) => {\n      if (row?.id) {\n        this.selectedRowIds.add(row.id);\n      }\n    });\n  }\n\n  updateCheckboxColumn(): void {\n    const checkboxColumn = this.table.columns.find(col => col.type === TableTypeColumns.CHECKBOX);\n    if (checkboxColumn) {\n      checkboxColumn.allSelected = this.isAllSelected();\n    }\n  }\n\n  emitSelectedRowsChange(): void {\n    this.selectedRowsChange.emit([...this.selectedRows]);\n    if (this.$selectedRows) {\n      this.$selectedRows.set([...this.selectedRows]);\n    }\n  }\n\n  toggleExpandAll(): void {\n    const data = this.table?.data as any[];\n    if (!data?.length) return;\n\n    if (this.isAllExpanded()) {\n      this.expandedElements.clear();\n      this.expandedElement = null;\n    } else {\n      const allIds = data.map(el => el.id).filter(id => id != null);\n      this.expandedElements = new Set(allIds);\n      const firstId = this.expandedElements.values().next().value;\n      this.expandedElement = data.find(el => el.id === firstId) || null;\n    }\n\n    this.expandedElementChangeEvent.emit(this.expandedElement);\n  }\n\n  isAllExpanded(): boolean {\n    const allIds = (this.table.data as any[]).map(el => el?.id).filter(id => id !== undefined && id !== null);\n    return allIds.length > 0 && allIds.every(id => this.expandedElements.has(id));\n  }\n\n  get TableTypeColumns(): typeof TableTypeColumns {\n    return TableTypeColumns;\n  }\n\n  getRowClasses(element: any, index: number): any {\n    const classes: any = {\n      'pair-row': this.table.setPairRows && index % 2 === 0,\n      'select-line': this.table.canExpandOnClick || this.table.canOpenOnClick,\n      'expanded-expanded-row': this.expandedElement?.id === element.id,\n      'last-row': index === this.table?.data?.length - 1 || index === (this.$data()?.length || 0) - 1,\n    };\n\n    if (element.customClass) {\n      classes[element.customClass] = true;\n    }\n\n    return classes;\n  }\n\n  getCustomEventCallback(element: T): (event: ICustomEventPayload<T>) => void {\n    return (event: ICustomEventPayload<T>) => {\n      const customEvent: ICustomTableCellEvent<T> = {\n        component: this.table.name,\n        action: event.action,\n        element: element,\n        column: event.column,\n        timestamp: Date.now(),\n      };\n      this.customCellEvent.emit(customEvent);\n    };\n  }\n\n  getCustomExpanderEventCallback(element: T): (event: ICustomEventPayload<T>) => void {\n    return (event: ICustomEventPayload<T>) => {\n      const customEvent: ICustomTableExpanderEvent<T> = {\n        component: this.table.name,\n        action: event.action,\n        element: element,\n        timestamp: Date.now(),\n      };\n      this.customExpanderEvent.emit(customEvent);\n    };\n  }\n\n  setupCustomComponentEvents(): void {\n    if (this.customComponents) {\n      this.customComponents.forEach((componentRef, index) => {\n        const componentInstance = (componentRef.nativeElement as any).__ngContext__;\n        if (componentInstance && componentInstance.customEvent) {\n          componentInstance.customEvent.subscribe((event: any) => {\n            const customEvent: ICustomTableCellEvent<T> = {\n              component: this.table.name,\n              action: event.action || 'custom',\n              element: event.element,\n              ...event,\n            };\n            this.customCellEvent.emit(customEvent);\n          });\n        }\n      });\n    }\n  }\n\n  setUrl(key: string, value: string) {\n    if (this.setURL) {\n      const currentUrl = this.location.path();\n      const url = new URL(currentUrl, window.location.origin);\n      if (value === '') {\n        url.searchParams.delete(key);\n      } else {\n        url.searchParams.set(key, value);\n      }\n      this.location.replaceState(url.pathname + url.search);\n    }\n  }\n}\n","<div class=\"table-container\" [ngClass]=\"{ 'table-container__no-paginator': !table.paginator }\">\n  <table\n    mat-table\n    matSort\n    [matSortActive]=\"table.sortOptions.sortKey\"\n    [matSortDirection]=\"table.sortOptions.sortOrder\"\n    multiTemplateDataRows\n    cdkDropList\n    cdkDropListOrientation=\"horizontal\"\n    (cdkDropListDropped)=\"drop($event)\"\n    [dataSource]=\"table.tableData\"\n    [cdkDropListDisabled]=\"!table.canMoveColumns\"\n    class=\"table-container__table\"\n  >\n    @for (column of table.columns; track column.value) {\n      <ng-container [matColumnDef]=\"column.value\" [stickyEnd]=\"column.stickyOnEnd\" [sticky]=\"column.stickyOnStart\">\n        <th\n          mat-header-cell\n          mat-sort-header\n          cdkDrag\n          *matHeaderCellDef\n          [disabled]=\"column.disableSorting\"\n          [ngClass]=\"column.customHeaderClass\"\n          [ngStyle]=\"column.customHeaderStyles\"\n        >\n          @if (!column.hideHeaderCheckbox && column.type == TableTypeColumns.CHECKBOX) {\n            <mat-checkbox\n              color=\"primary\"\n              (change)=\"toggleSelectAll($event.checked)\"\n              [checked]=\"isAllSelected()\"\n              [indeterminate]=\"isSomeSelected()\"\n              #matCheckbox\n            >\n            </mat-checkbox>\n          }\n          @if (column.headerSvgIcon || column.headerIcon) {\n            <i\n              [ngClass]=\"column.headerIconClass ? [column.headerIcon || column.headerSvgIcon, column.headerIconClass] : (column.headerIcon || column.headerSvgIcon)\"\n              class=\"table-header-icon\"\n            ></i>\n          }\n          @if (!column.hideHeader) {\n            {{ column.headerName || column.value }}\n          }\n          @if (column.expandIconHeader) {\n            <button\n              type=\"button\"\n              class=\"table-icon-button\"\n              (click)=\"toggleExpandAll(); $event.stopPropagation()\"\n              matTooltip=\"{{ isAllExpanded() ? 'Collapse All' : 'Expand All' }}\"\n            >\n              <i [class]=\"isAllExpanded() ? 'pi pi-angle-double-up' : 'pi pi-angle-double-down'\"></i>\n            </button>\n          }\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          style=\"position: relative\"\n          [ngClass]=\"column.customCellClass\"\n          [ngStyle]=\"column.customCellStyles\"\n          matTooltip=\"{{ column.hasTooltip ? column.customTooltip || element[column.value] : '' }}\"\n        >\n          <div [ngClass]=\"column.customClass\" [ngStyle]=\"column.customStyles\">\n            @switch (column.type) {\n              @case (TableTypeColumns.CHECKBOX) {\n                <mat-checkbox\n                  color=\"primary\"\n                  [checked]=\"isRowSelected(element)\"\n                  [disabled]=\"column.disableCheckParamName ? element[column.disableCheckParamName] : false\"\n                  (change)=\"toggleRowSelection(element, $event.checked)\"\n                  (click)=\"$event.stopPropagation()\"\n                ></mat-checkbox>\n              }\n              @case (TableTypeColumns.TEXT) {\n                {{ element[column.value] }}\n              }\n              @case (TableTypeColumns.TRANSLATION) {\n                {{ (column.translationLabel ? column.translationLabel : '') + element[column.value] }}\n              }\n              @case (TableTypeColumns.NUMBER) {\n                {{ element[column.value] | number }}\n              }\n              @case (TableTypeColumns.PHOTO) {\n                @if (column.imageErrorURL) {\n                  <img\n                    [src]=\"getImageSrc(element, column)\"\n                    [alt]=\"element[column.valueAux || ''] || ''\"\n                    [width]=\"column.picSize || 40\"\n                    [height]=\"column.picSize || 40\"\n                    [style.width.px]=\"column.picSize || 40\"\n                    [style.height.px]=\"column.picSize || 40\"\n                    [style.border-radius]=\"column.picRound ? '50%' : '0'\"\n                    [style.object-fit]=\"'cover'\"\n                    [style.cursor]=\"'pointer'\"\n                    (error)=\"onImageError(element, column, $event)\"\n                    (click)=\"openPic(element)\"\n                  />\n                } @else {\n                  <ngx-gmp-avatar\n                    [name]=\"element[column.valueAux || ''] || ''\"\n                    [initialsSize]=\"2\"\n                    [size]=\"column.picSize || 40\"\n                    [src]=\"element[column.value] ? element[column.value] : column.imagePlaceholderURL\"\n                    (click)=\"openPic(element)\"\n                    [round]=\"column.picRound || false\"\n                  />\n                }\n              }\n              @case (TableTypeColumns.HTML) {\n                <p [innerHtml]=\"element[column.value]\"></p>\n              }\n              @case (TableTypeColumns.CURRENCY) {\n                @if (column.currencyPrefix != null && column.currencyLocale) {\n                  {{ column.currencyPrefix }}{{ element[column.value] | number: column.currencyDigits || '1.2-2' : column.currencyLocale }}\n                } @else {\n                  {{ element[column.value] | currency: column.currencyFormat || '' : column.currencySymbol || '' : column.currencyDigits || '' }}\n                }\n              }\n              @case (TableTypeColumns.PERCENTUAL) {\n                %\n                {{ element[column.value] | number }}\n              }\n              @case (TableTypeColumns.PHONE) {\n                {{ element[column.value] }}\n              }\n              @case (TableTypeColumns.DATE) {\n                @if (element[column.value]) {\n                  {{ element[column.value] | date: column.dateFormat || 'dd MMM YYYY' }}\n                } @else {\n                  @if (column.showNA) {\n                    N/A\n                  }\n                }\n              }\n              @case (TableTypeColumns.CUSTOM) {\n                @if (column.customComponent) {\n                  <ng-container\n                    *ngComponentOutlet=\"\n                      column.customComponent;\n                      inputs: {\n                        element,\n                        component: table.name,\n                        column: column.value,\n                        onCustomEvent: getCustomEventCallback(element),\n                      }\n                    \"\n                  >\n                  </ng-container>\n                }\n              }\n              @case (TableTypeColumns.LINK) {\n                <a class=\"text-truncate\" [href]=\"element[column.value]\" target=\"_blank\">{{ element[column.value] }}</a>\n              }\n              @case (TableTypeColumns.ACTIONS) {\n                <div class=\"actions\">\n                  @if (table.showExpandElementIcon) {\n                    <button type=\"button\" class=\"table-icon-button\" aria-label=\"expand row\" (click)=\"expandElement(element); $event.stopPropagation()\">\n                      <i\n                        [class]=\"expandedElements.has(element.id) ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\n                        matTooltip=\"{{ expandedElements.has(element.id) ? 'Collapsed' : 'Expand' }}\"\n                      ></i>\n                    </button>\n                  }\n                  @if (table.showEditElementIcon) {\n                    <button type=\"button\" class=\"table-icon-button\" (click)=\"emitEditEvent(element)\" matTooltip=\"{{ 'Edit' }}\" id=\"editButton\">\n                      @if (table.customEditSvgIcon) {\n                        <i [class]=\"table.customEditSvgIcon\"></i>\n                      } @else {\n                        <i class=\"pi pi-pencil\"></i>\n                      }\n                    </button>\n                  }\n                  @if (table.showDeleteElementIcon) {\n                    <button type=\"button\" class=\"table-icon-button\" (click)=\"emitDeleteEvent(element)\" matTooltip=\"{{ 'Delete' }}\" id=\"deleteButton\">\n                      @if (table.customDeleteSvgIcon) {\n                        <i [class]=\"table.customDeleteSvgIcon\"></i>\n                      } @else {\n                        <i class=\"pi pi-trash\"></i>\n                      }\n                    </button>\n                  }\n                </div>\n              }\n            }\n          </div>\n        </td>\n      </ng-container>\n    }\n\n    <ng-container matColumnDef=\"expandedDetail\">\n      <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columnsToDisplay.length\">\n        @if (table.expanderComponent) {\n          <div [@detailExpand]=\"expandedElements.has(element.id) ? 'expanded' : 'collapsed'\">\n            @if (expandedElements.has(element.id)) {\n              <ng-template\n                [ngComponentOutlet]=\"table.expanderComponent\"\n                [ngComponentOutletInputs]=\"{\n                  element: element,\n                  component: table.name,\n                  onCustomEvent: getCustomExpanderEventCallback(element),\n                }\"\n              >\n              </ng-template>\n            }\n          </div>\n        }\n      </td>\n    </ng-container>\n\n    <tr [ngStyle]=\"{ display: !table.hideHeader ? 'visible' : 'none' }\" mat-header-row *matHeaderRowDef=\"columnsToDisplay; sticky: true\"></tr>\n    <tr\n      mat-row\n      *matRowDef=\"let element; let i = dataIndex; columns: columnsToDisplay\"\n      [ngClass]=\"getRowClasses(element, i)\"\n      (click)=\"openElement(element)\"\n    ></tr>\n    <tr\n      mat-row\n      *matRowDef=\"let row; columns: ['expandedDetail']\"\n      class=\"expanded-detail-row\"\n      [ngStyle]=\"{ display: table.expanderComponent ? 'visible' : 'none' }\"\n    ></tr>\n  </table>\n  @if (!table.isLoading && !table.data.length) {\n    <ng-container *ngIf=\"customEmptyData\">\n      <ng-container *ngTemplateOutlet=\"customEmptyData\"></ng-container>\n    </ng-container>\n  }\n  @if (table.isLoading) {\n    <ng-container *ngIf=\"customLoading\">\n      <ng-container *ngTemplateOutlet=\"customLoading\"></ng-container>\n    </ng-container>\n    <div *ngIf=\"!customLoading\" class=\"table-container__loading\">\n      <mat-spinner></mat-spinner>\n    </div>\n  }\n</div>\n@if (table.paginator) {\n  <mat-paginator\n    [pageIndex]=\"table.paginator.page - 1\"\n    [pageSize]=\"table.paginator.forPage\"\n    (page)=\"changePage($event)\"\n    [pageSizeOptions]=\"[10, 20, 30, 50]\"\n    [length]=\"table.paginator.count\"\n    showFirstLastButtons\n  >\n  </mat-paginator>\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { GmpAvatarComponent } from '../avatar/gmp-avatar.component';\nimport { GmpTableComponent } from './table.component';\n\n@NgModule({\n  declarations: [GmpTableComponent, GmpAvatarComponent],\n  imports: [\n    CommonModule,\n    MatTableModule,\n    MatSortModule,\n    MatCheckboxModule,\n    MatButtonModule,\n    DragDropModule,\n    MatProgressSpinnerModule,\n    MatTooltipModule,\n    MatDialogModule,\n    MatPaginatorModule,\n    HttpClientModule,\n  ],\n  exports: [\n    CommonModule,\n    GmpTableComponent,\n    MatTableModule,\n    MatSortModule,\n    MatCheckboxModule,\n    MatButtonModule,\n    DragDropModule,\n    MatProgressSpinnerModule,\n    MatTooltipModule,\n    MatDialogModule,\n    MatPaginatorModule,\n    HttpClientModule,\n  ],\n})\nexport class GmpTableModule {}\n","import {\n  CdkDragDrop,\n  moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\n  Component,\n  effect,\n  EventEmitter,\n  Input,\n  model,\n  OnInit,\n  Output,\n} from '@angular/core';\n\nimport {\n  ITable,\n  ITableColumn,\n} from '../../interfaces/ITable';\n\n@Component({\n  selector: 'ngx-gmp-table-config',\n  templateUrl: './table-config.component.html',\n  styleUrls: ['./table-config.component.scss'],\n  standalone: false,\n})\nexport class GmpTableConfigComponent<T> implements OnInit {\n  @Input() table!: ITable<T>;\n  @Output() configChangedEvent = new EventEmitter<ITable<T>>();\n  $columns = model<ITableColumn[]>();\n\n  constructor() {\n    this.loadEffects();\n  } // @Inject(MAT_DIALOG_DATA) public table: ITable<T>, // public dialogRef: MatDialogRef<TableConfigModalComponent<T>>,\n  visibleColumns: ITableColumn[] = [];\n  hiddenColumns: ITableColumn[] = [];\n\n  ngOnInit(): void {\n    if (this.table) {\n      this.visibleColumns = this.table.columns.filter(e => !e.hideColumn);\n      this.hiddenColumns = this.table.columns.filter(e => e.hideColumn);\n    }\n  }\n\n  loadEffects(): void {\n    effect(() => {\n      const columns = this.$columns();\n      if (typeof columns !== 'undefined' && columns) {\n        this.visibleColumns = columns.filter(e => !e.hideColumn);\n        this.hiddenColumns = columns.filter(e => e.hideColumn);\n      }\n    });\n  }\n\n  drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.visibleColumns, event.previousIndex, event.currentIndex);\n    this.save();\n  }\n\n  moveElementFromColumns(\n    element: ITableColumn,\n    index: number,\n    originColumn: ITableColumn[],\n    destineColumn: ITableColumn[],\n  ): void {\n    destineColumn.push(element);\n    originColumn.splice(index, 1);\n    this.save();\n  }\n\n  save(): void {\n    const columns = [\n      ...this.visibleColumns.map(e => {\n        return { ...e, hideColumn: false };\n      }),\n      ...this.hiddenColumns.map(e => {\n        return { ...e, hideColumn: true };\n      }),\n    ];\n    if (this.table) {\n      this.table.columns = columns;\n      this.configChangedEvent.emit(this.table);\n    }\n    if (this.$columns) {\n      this.$columns.set(columns);\n    }\n    // this.dialogRef.close(this.table);\n  }\n\n  hideAll(): void {\n    this.hiddenColumns = [...this.table.columns];\n    this.visibleColumns = [];\n    this.save();\n  }\n\n  showAll(): void {\n    this.visibleColumns = [...this.table.columns];\n    this.hiddenColumns = [];\n    this.save();\n  }\n}\n","<div class=\"config-container\">\n  <div class=\"config-container__list\">\n    <div class=\"config-container__list__header\">\n      <b>Shown</b>\n      <div class=\"config-container__list__header__options\">\n        <span (click)=\"hideAll()\">Hide all</span>\n      </div>\n    </div>\n    <mat-selection-list cdkDropList (cdkDropListDropped)=\"drop($event)\">\n      @for(column of visibleColumns; track column; let i = $index){\n      <mat-list-item cdkDrag>\n        <div class=\"config-container__list__item\" mat-line>\n          <i class=\"pi pi-bars config-drag-icon\"></i>\n          {{ column.headerName || column.value }}\n        </div>\n        <div matListItemMeta>\n          <i class=\"pi pi-eye-slash config-action-icon\" (click)=\"moveElementFromColumns(column, i, visibleColumns, hiddenColumns)\"></i>\n        </div>\n      </mat-list-item>\n      }\n    </mat-selection-list>\n  </div>\n\n  @if(hiddenColumns.length){\n  <div class=\"config-container__list\">\n    <div class=\"config-container__list__header\">\n      <b>Hide</b>\n      <div class=\"config-container__list__header__options\">\n        <span (click)=\"showAll()\">Show all</span>\n      </div>\n    </div>\n    <mat-selection-list>\n      @for(column of hiddenColumns; track column; let i = $index){\n      <mat-list-item>\n        <div class=\"config-container__list__item\" mat-line>\n          {{ column.headerName || column.value }}\n        </div>\n        <div matListItemMeta>\n          <i class=\"pi pi-eye config-action-icon\" (click)=\"moveElementFromColumns(column, i, hiddenColumns, visibleColumns)\"></i>\n        </div>\n      </mat-list-item>\n      }\n    </mat-selection-list>\n  </div>\n  }\n</div>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { GmpTableConfigComponent } from './table-config.component';\n\n@NgModule({\n  declarations: [GmpTableConfigComponent],\n  imports: [CommonModule, MatMenuModule, MatTooltipModule, DragDropModule, MatListModule, MatButtonModule],\n  exports: [GmpTableConfigComponent, CommonModule, MatTooltipModule, DragDropModule, MatListModule, MatButtonModule],\n})\nexport class GmpTableConfigModule {}\n","export interface ITablePaginator {\n  page: number;\n  forPage: number;\n  count?: number;\n}\n\nexport const DefaultTablePaginator: ITablePaginator = {\n  count: 0,\n  page: 1,\n  forPage: 10,\n};\n","import {\n  Component,\n  Inject,\n} from '@angular/core';\nimport {\n  MAT_DIALOG_DATA,\n  MatDialogRef,\n} from '@angular/material/dialog';\n\n@Component({\n  selector: 'ngx-gmp-alert-modal',\n  templateUrl: './alert-modal.component.html',\n  standalone: false,\n})\nexport class GmpAlertModalComponent {\n  constructor(\n    public dialogRef: MatDialogRef<GmpAlertModalComponent>,\n    @Inject(MAT_DIALOG_DATA)\n    public data: {\n      title: string;\n      message: string;\n      accept: string;\n      cancel: string;\n    },\n  ) {}\n\n  onNoClick(): void {\n    this.dialogRef.close(false);\n  }\n\n  onClick(): void {\n    this.dialogRef.close(true);\n  }\n}\n","<h1 mat-dialog-title class=\"text-center mb-3\">{{ data.title }}</h1>\n<div mat-dialog-content class=\"text-center my-3\" [innerHtml]=\"data.message\"></div>\n<div mat-dialog-actions class=\"justify-content-center\">\n  <button id=\"cancelButton\" mat-button (click)=\"onNoClick()\">{{ data.cancel }}</button>\n  <button color=\"primary\" id=\"saveButton\" mat-button (click)=\"onClick()\" cdkFocusInitial>{{ data.accept }}</button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { GmpAlertModalComponent } from './alert-modal.component';\n\n@NgModule({\n  declarations: [GmpAlertModalComponent],\n\n  imports: [CommonModule, TranslateModule, MatButtonModule, MatDialogModule],\n  exports: [GmpAlertModalComponent, TranslateModule, MatDialogModule],\n})\nexport class AlertModalModule {}\n","import {\n  Component,\n  Inject,\n} from '@angular/core';\nimport {\n  MAT_DIALOG_DATA,\n  MatDialogRef,\n} from '@angular/material/dialog';\n\n@Component({\n  selector: 'ngx-gmp-view-pic-modal',\n  templateUrl: './view-pic-modal.component.html',\n  styleUrls: ['./view-pic-modal.component.scss'],\n  standalone: false,\n})\nexport class GmpViewPicModalComponent {\n  constructor(\n    public dialogRef: MatDialogRef<GmpViewPicModalComponent>,\n    @Inject(MAT_DIALOG_DATA)\n    public data: { pic: string },\n  ) {}\n}\n","@if(data.pic){\n<img [src]=\"data.pic\" alt=\"Image\" width=\"100%\" />\n\n}@else { No Data }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { GmpViewPicModalComponent } from './view-pic-modal.component';\n\n@NgModule({\n  declarations: [GmpViewPicModalComponent],\n  imports: [CommonModule, MatDialogModule],\n  exports: [GmpViewPicModalComponent, MatDialogModule],\n})\nexport class GmpViewPicModalModule {}\n","import { computed, effect, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { LayoutConfig, LayoutState, MenuChangeEvent, MenuMode } from '../interfaces/layout.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LayoutService {\n  _config: LayoutConfig = {\n    preset: 'Aura',\n    primary: 'orange',\n    surface: null,\n    darkTheme: false,\n    menuMode: 'static',\n  };\n\n  _state: LayoutState = {\n    staticMenuDesktopInactive: false,\n    overlayMenuActive: false,\n    rightMenuActive: false,\n    configSidebarVisible: false,\n    staticMenuMobileActive: false,\n    menuHoverActive: false,\n    sidebarActive: false,\n    anchored: false,\n    activeMenuItem: null,\n    overlaySubmenuActive: false,\n    rightMenuVisible: false,\n    searchBarActive: false,\n  };\n\n  layoutConfig = signal<LayoutConfig>(this._config);\n  layoutState = signal<LayoutState>(this._state);\n\n  private configUpdate = new Subject<LayoutConfig>();\n  private overlayOpen = new Subject<any>();\n  private menuSource = new Subject<MenuChangeEvent>();\n  private resetSource = new Subject();\n\n  menuSource$ = this.menuSource.asObservable();\n  resetSource$ = this.resetSource.asObservable();\n  configUpdate$ = this.configUpdate.asObservable();\n  overlayOpen$ = this.overlayOpen.asObservable();\n\n  isSidebarActive: Signal<boolean> = computed(\n    () =>\n      this.layoutState().overlayMenuActive ||\n      this.layoutState().staticMenuMobileActive ||\n      this.layoutState().overlaySubmenuActive,\n  );\n\n  isSidebarStateChanged = computed(() => {\n    const layoutConfig = this.layoutConfig();\n    return (\n      layoutConfig.menuMode === 'horizontal' ||\n      layoutConfig.menuMode === 'slim' ||\n      layoutConfig.menuMode === 'slim-plus'\n    );\n  });\n\n  isDarkTheme: Signal<boolean> = computed(() => this.layoutConfig().darkTheme);\n  isOverlay: Signal<boolean> = computed(() => this.layoutConfig().menuMode === 'overlay');\n  isSlim: Signal<boolean> = computed(() => this.layoutConfig().menuMode === 'slim');\n  isSlimPlus: Signal<boolean> = computed(() => this.layoutConfig().menuMode === 'slim-plus');\n  isHorizontal: Signal<boolean> = computed(() => this.layoutConfig().menuMode === 'horizontal');\n\n  transitionComplete: WritableSignal<boolean> = signal<boolean>(false);\n  logo = computed(() => (this.layoutConfig().darkTheme ? 'light' : 'dark'));\n  rightMenuVisible = computed(() => this.layoutState().rightMenuActive);\n\n  private initialized = false;\n\n  constructor() {\n    // Load dark mode preference from localStorage on initialization\n    const savedDarkMode = localStorage.getItem('darkTheme');\n    if (savedDarkMode !== null) {\n      this._config.darkTheme = savedDarkMode === 'true';\n      this.layoutConfig.set(this._config);\n    }\n\n    effect(() => {\n      const config = this.layoutConfig();\n      if (config) {\n        this.onConfigUpdate();\n      }\n    });\n\n    effect(() => {\n      const config = this.layoutConfig();\n\n      if (!this.initialized || !config) {\n        this.initialized = true;\n        return;\n      }\n\n      // Save dark mode preference when it changes\n      localStorage.setItem('darkTheme', config.darkTheme.toString());\n      this.handleDarkModeTransition(config);\n    });\n\n    effect(() => {\n      this.isSidebarStateChanged() && this.reset();\n    });\n  }\n\n  private handleDarkModeTransition(config: LayoutConfig): void {\n    if ((document as any).startViewTransition) {\n      this.startViewTransition(config);\n    } else {\n      this.toggleDarkMode(config);\n      this.onTransitionEnd();\n    }\n  }\n\n  private startViewTransition(config: LayoutConfig): void {\n    const transition = (document as any).startViewTransition(() => {\n      this.toggleDarkMode(config);\n    });\n\n    transition.ready\n      .then(() => {\n        this.onTransitionEnd();\n      })\n      .catch(() => {});\n  }\n\n  toggleDarkMode(config?: LayoutConfig): void {\n    const _config = config || this.layoutConfig();\n    const el = document.documentElement;\n    if (_config.darkTheme) {\n      el.classList.add('app-dark');\n      el.setAttribute('data-theme', 'dark');\n    } else {\n      el.classList.remove('app-dark');\n      el.removeAttribute('data-theme');\n    }\n  }\n\n  private onTransitionEnd() {\n    this.transitionComplete.set(true);\n    setTimeout(() => {\n      this.transitionComplete.set(false);\n    });\n  }\n\n  onMenuToggle() {\n    if (this.isOverlay()) {\n      this.layoutState.update(prev => ({\n        ...prev,\n        overlayMenuActive: !this.layoutState().overlayMenuActive,\n      }));\n\n      if (this.layoutState().overlayMenuActive) {\n        this.overlayOpen.next(null);\n      }\n    }\n\n    if (this.isDesktop()) {\n      this.layoutState.update(prev => ({\n        ...prev,\n        staticMenuDesktopInactive: !this.layoutState().staticMenuDesktopInactive,\n      }));\n    } else {\n      this.layoutState.update(prev => ({\n        ...prev,\n        staticMenuMobileActive: !this.layoutState().staticMenuMobileActive,\n      }));\n\n      if (this.layoutState().staticMenuMobileActive) {\n        this.overlayOpen.next(null);\n      }\n    }\n  }\n\n  isDesktop() {\n    return window.innerWidth > 991;\n  }\n\n  isMobile() {\n    return !this.isDesktop();\n  }\n\n  onConfigUpdate() {\n    this._config = { ...this.layoutConfig() };\n    this.configUpdate.next(this.layoutConfig());\n    this.toggleDarkMode();\n  }\n\n  onMenuStateChange(event: MenuChangeEvent) {\n    this.menuSource.next(event);\n  }\n\n  reset() {\n    this.resetSource.next(true);\n  }\n\n  onOverlaySubmenuOpen() {\n    this.overlayOpen.next(null);\n  }\n\n  showProfileSidebar() {\n    this.layoutState.update(prev => ({\n      ...prev,\n      profileSidebarVisible: true,\n    }));\n  }\n\n  showConfigSidebar() {\n    this.layoutState.update(prev => ({\n      ...prev,\n      configSidebarVisible: true,\n    }));\n  }\n\n  hideConfigSidebar() {\n    this.layoutState.update(prev => ({\n      ...prev,\n      configSidebarVisible: false,\n    }));\n  }\n}\n","import {\n  Component,\n  computed,\n  ElementRef,\n  inject,\n  ViewChild,\n} from '@angular/core';\nimport {\n  ActivatedRouteSnapshot,\n  NavigationEnd,\n  Router,\n} from '@angular/router';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { Breadcrumb } from '../../interfaces/layout.interface';\nimport { LayoutService } from '../../service/layout.service';\n\n@Component({\n  selector: 'ngx-gmp-breadcrumb',\n  templateUrl: './breadcrumb.component.html',\n  styleUrls: ['./breadcrumb.component.scss'],\n  standalone: false,\n  host: {\n    class: 'layout-breadcrumb flex items-center relative h-12',\n  },\n})\nexport class GmpBreadcrumbComponent {\n  @ViewChild('searchinput') searchInput!: ElementRef<HTMLElement>;\n\n  private readonly _breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\n  readonly breadcrumbs$ = this._breadcrumbs$.asObservable();\n\n  constructor(private router: Router) {\n    this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {\n      const root = this.router.routerState.snapshot.root;\n      const breadcrumbs: Breadcrumb[] = [];\n      this.addBreadcrumb(root, [], breadcrumbs);\n\n      this._breadcrumbs$.next(breadcrumbs);\n    });\n  }\n\n  layoutService = inject(LayoutService);\n  searchActive = computed(() => this.layoutService.layoutState().searchBarActive);\n\n  private addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\n    const routeUrl = parentUrl.concat(route.url.map(url => url.path));\n    const breadcrumb = route.data['breadcrumb'];\n    const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;\n\n    if (breadcrumb && breadcrumb !== parentBreadcrumb) {\n      breadcrumbs.push({\n        label: route.data['breadcrumb'],\n        url: '/' + routeUrl.join('/'),\n      });\n    }\n\n    if (route.firstChild) {\n      this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\n    }\n  }\n\n  activateSearch() {\n    this.layoutService.layoutState.update(val => ({\n      ...val,\n      searchBarActive: true,\n    }));\n    setTimeout(() => {\n      this.searchInput.nativeElement?.focus();\n    }, 250);\n  }\n\n  deactivateSearch() {\n    this.layoutService.layoutState.update(val => ({\n      ...val,\n      searchBarActive: false,\n    }));\n  }\n\n  onProfileMenuButtonClick() {\n    this.layoutService.layoutState.update(val => ({\n      ...val,\n      rightMenuActive: true,\n    }));\n  }\n}\n","<nav>\n  <ol class=\"breadcrumb-crumbs\">\n    <ng-template ngFor let-item let-last=\"last\" [ngForOf]=\"breadcrumbs$ | async\">\n      <li style=\"cursor: pointer;\">{{ item.label }}</li>\n      @if (!last) {\n        <li class=\"layout-breadcrumb-chevron\">/</li>\n      }\n    </ng-template>\n  </ol>\n</nav>\n<ul class=\"breadcrumb-menu breadcrumb-menu-mobile\">\n  <li class=\"breadcrumb-menu-mobile__search-item\">\n    <div class=\"breadcrumb-search breadcrumb-search-align-end\" [ngClass]=\"{ 'breadcrumb-search-active': searchActive() }\">\n      <button\n        pButton\n        pRipple\n        icon=\"pi pi-search\"\n        class=\"breadcrumb-searchbutton breadcrumb-icon-button\"\n        type=\"button\"\n        severity=\"secondary\"\n        text\n        rounded\n        (click)=\"activateSearch()\"\n      ></button>\n      <div class=\"search-input-wrapper\">\n        <p-icon-field>\n          <p-inputicon class=\"pi pi-search\" />\n          <input\n            pInputText\n            #searchinput\n            autofocus\n            type=\"text\"\n            placeholder=\"Search\"\n            (blur)=\"deactivateSearch()\"\n            (keydown.escape)=\"deactivateSearch()\"\n          />\n        </p-icon-field>\n      </div>\n    </div>\n  </li>\n  <li class=\"right-panel-button breadcrumb-right-panel\">\n    <button\n      pButton\n      pRipple\n      type=\"button\"\n      label=\"Today\"\n      style=\"width: 6.7rem\"\n      icon=\"pi pi-bookmark\"\n      class=\"layout-rightmenu-button breadcrumb-rightmenu-button breadcrumb-rightmenu-button--desktop\"\n      (click)=\"onProfileMenuButtonClick()\"\n    ></button>\n    <Button\n      pButton\n      pRipple\n      style=\"width: 3.286rem\"\n      icon=\"pi pi-bookmark\"\n      class=\"layout-rightmenu-button breadcrumb-rightmenu-button breadcrumb-rightmenu-button--mobile\"\n      (click)=\"onProfileMenuButtonClick()\"\n    ></Button>\n  </li>\n</ul>\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'ngx-gmp-configurator',\n  templateUrl: './configurator.component.html',\n  standalone: false,\n})\nexport class GmpConfiguratorComponent {}\n","","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  Component,\n  computed,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport {\n  NavigationEnd,\n  Router,\n} from '@angular/router';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { LayoutService } from '../../service/layout.service';\n\n@Component({\n  selector: 'li[ngx-gmp-menuitem]',\n  templateUrl: './menuitem.component.html',\n  styleUrls: ['./menuitem.component.scss'],\n  standalone: false,\n  animations: [\n    trigger('children', [\n      state(\n        'collapsed',\n        style({\n          height: '0',\n        }),\n      ),\n      state(\n        'expanded',\n        style({\n          height: '*',\n        }),\n      ),\n      state(\n        'hidden',\n        style({\n          display: 'none',\n        }),\n      ),\n      state(\n        'visible',\n        style({\n          display: 'block',\n        }),\n      ),\n      transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n    ]),\n  ],\n})\nexport class GmpMenuitemComponent implements OnInit, OnDestroy {\n  @Input() item: any;\n  @Input() index!: number;\n  @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;\n  @Input() parentKey = '';\n\n  @ViewChild('submenu') submenu!: ElementRef;\n\n  @HostBinding('class.active-menuitem')\n  get activeClass() {\n    return this.active && !this.root;\n  }\n\n  active = false;\n  menuSourceSubscription: Subscription;\n  menuResetSubscription: Subscription;\n  key: string = '';\n\n  get submenuAnimation() {\n    if (\n      this.layoutService.isDesktop() &&\n      (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())\n    ) {\n      return this.active ? 'visible' : 'hidden';\n    } else {\n      return this.root ? 'expanded' : this.active ? 'expanded' : 'collapsed';\n    }\n  }\n\n  isSlim = computed(() => this.layoutService.isSlim());\n  isSlimPlus = computed(() => this.layoutService.isSlimPlus());\n  isHorizontal = computed(() => this.layoutService.isHorizontal());\n\n  get isDesktop() {\n    return this.layoutService.isDesktop();\n  }\n\n  get isMobile() {\n    return this.layoutService.isMobile();\n  }\n\n  constructor(public layoutService: LayoutService, public router: Router) {\n    this.menuSourceSubscription = this.layoutService.menuSource$.subscribe(value => {\n      Promise.resolve(null).then(() => {\n        if (value.routeEvent) {\n          this.active = value.key === this.key || value.key.startsWith(this.key + '-') ? true : false;\n        } else {\n          if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {\n            this.active = false;\n          }\n        }\n      });\n    });\n\n    this.menuResetSubscription = this.layoutService.resetSource$.subscribe(() => {\n      this.active = false;\n    });\n\n    this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\n      if (this.isSlimPlus() || this.isSlim() || this.isHorizontal()) {\n        this.active = false;\n      } else {\n        this.refreshActiveFromUrl();\n        this.notifyActiveRouteIfMatch();\n      }\n    });\n  }\n\n  ngOnInit() {\n    this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n    if (this.item?.routerLink?.length && !this.item.items) {\n      this.refreshActiveFromUrl();\n      if (!(this.isSlimPlus() || this.isSlim() || this.isHorizontal())) {\n        this.notifyActiveRouteIfMatch();\n      }\n    }\n  }\n\n  /** Igual que corplan: avisa al layout para expandir padres cuando la ruta coincide. */\n  private notifyActiveRouteIfMatch(): void {\n    if (this.item?.items || !this.item?.routerLink?.length || !this.active) {\n      return;\n    }\n    this.layoutService.onMenuStateChange({ key: this.key, routeEvent: true });\n  }\n\n  /** Usar el árbol completo del routerLink (no solo el primer segmento). */\n  private refreshActiveFromUrl(): void {\n    if (!this.item?.routerLink?.length || this.item.items) {\n      return;\n    }\n    const urlTree = this.router.createUrlTree(this.item.routerLink);\n    this.active = this.router.isActive(urlTree, {\n      paths: 'exact',\n      queryParams: 'ignored',\n      matrixParams: 'ignored',\n      fragment: 'ignored',\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.menuSourceSubscription) {\n      this.menuSourceSubscription.unsubscribe();\n    }\n\n    if (this.menuResetSubscription) {\n      this.menuResetSubscription.unsubscribe();\n    }\n  }\n\n  onSubmenuAnimated(event: any) {}\n\n  itemClick(event: any) {\n    if (this.item.disabled) {\n      event.preventDefault();\n      return;\n    }\n\n    if (this.item.command) {\n      this.item.command({ originalEvent: event, item: this.item });\n    }\n\n    if (this.item.items) {\n      this.active = !this.active;\n      this.layoutService.onMenuStateChange({ key: this.key, routeEvent: false });\n    } else {\n      this.active = true;\n      this.layoutService.onMenuStateChange({ key: this.key, routeEvent: true });\n    }\n  }\n\n  onMouseEnter() {\n    if (this.root && this.layoutService.isHorizontal() && this.layoutService.isDesktop()) {\n      if (this.layoutService.layoutState().menuHoverActive) {\n        this.layoutService.onMenuStateChange({ key: this.key, routeEvent: false });\n      }\n    }\n  }\n}\n","<ng-container>\n  @if (root && item.visible !== false && item.label) {\n    <div class=\"layout-menuitem-root-text\">\n      <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n    </div>\n  }\n  @if ((!item.routerLink || item.items) && item.visible !== false) {\n    <a\n      [attr.href]=\"item.url\"\n      (click)=\"itemClick($event)\"\n      (mouseenter)=\"onMouseEnter()\"\n      [ngClass]=\"item.class\"\n      [attr.target]=\"item.target\"\n      tabindex=\"0\"\n      pRipple\n      [pTooltip]=\"item.label\"\n      [tooltipDisabled]=\"!(isSlim() && root && !active)\"\n      class=\"layout-menuitem-link\"\n    >\n      @if (item.icon) {\n        <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n      }\n      <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n      @if (item.items) {\n        <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n      }\n    </a>\n  }\n  @if (item.routerLink && !item.items && item.visible !== false) {\n    <a\n      (click)=\"itemClick($event)\"\n      (mouseenter)=\"onMouseEnter()\"\n      [ngClass]=\"item.class\"\n      [routerLink]=\"item.routerLink\"\n      routerLinkActive=\"active-route\"\n      [routerLinkActiveOptions]=\"\n                  item.routerLinkActiveOptions || {\n                      paths: 'exact',\n                      queryParams: 'ignored',\n                      matrixParams: 'ignored',\n                      fragment: 'ignored',\n                  }\n              \"\n      [fragment]=\"item.fragment\"\n      [queryParamsHandling]=\"item.queryParamsHandling\"\n      [preserveFragment]=\"item.preserveFragment\"\n      [skipLocationChange]=\"item.skipLocationChange\"\n      [replaceUrl]=\"item.replaceUrl\"\n      [state]=\"item.state\"\n      [queryParams]=\"item.queryParams\"\n      [attr.target]=\"item.target\"\n      tabindex=\"0\"\n      pRipple\n      [pTooltip]=\"item.label\"\n      [tooltipDisabled]=\"!(isSlim() && root)\"\n      class=\"layout-menuitem-link\"\n    >\n      @if (item.icon) {\n        <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n      }\n      <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n      @if (item.items) {\n        <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n      }\n    </a>\n  }\n\n  @if (item.items && item.visible !== false) {\n    <ul\n      #submenu\n      [@children]=\"submenuAnimation\"\n      (@children.done)=\"onSubmenuAnimated($event)\"\n    >\n      <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n        <li ngx-gmp-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child['badgeClass']\"></li>\n      </ng-template>\n    </ul>\n  }\n</ng-container>\n","import {\n  Component,\n  ElementRef,\n  inject,\n  Input,\n  ViewEncapsulation,\n  ViewChild,\n} from '@angular/core';\n\nimport { MenuItem } from '../../interfaces/layout.interface';\n\n@Component({\n  selector: 'ngx-gmp-menu',\n  templateUrl: './menu.component.html',\n  styleUrls: ['./menu.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n  host: {\n    class: 'layout-menu-container',\n  },\n})\nexport class GmpMenuComponent {\n  @Input() menuItems?: MenuItem[];\n\n  el: ElementRef = inject(ElementRef);\n  @ViewChild('menuContainer') menuContainer!: ElementRef;\n\n  get model(): MenuItem[] {\n    return (\n      this.menuItems || [\n        {\n          items: [\n            {\n              label: 'Clientes',\n              icon: 'pi pi-fw pi-users',\n              items: [\n                { label: 'Clásico', routerLink: ['/clients'] },\n                { label: 'Signals', routerLink: ['/clients', 'signals'] },\n              ],\n            },\n          ],\n        },\n      ]\n    );\n  }\n}\n","<ul class=\"layout-menu\" #menuContainer>\n  <ng-container *ngFor=\"let item of model; let i = index\">\n    @if (!item.separator) {\n      <li\n        ngx-gmp-menuitem\n        [item]=\"item\"\n        [index]=\"i\"\n        [root]=\"true\"\n      ></li>\n    }\n    @if (item.separator) {\n      <li class=\"menu-separator\"></li>\n    }\n  </ng-container>\n</ul>\n","import { Component, computed, ElementRef, HostListener, inject, Input, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { LayoutConfigOptions } from '../../interfaces/layout.interface';\nimport { LayoutService } from '../../service/layout.service';\nimport { GmpMenuComponent } from '../menu/menu.component';\n\n@Component({\n  selector: 'ngx-gmp-sidebar',\n  templateUrl: './sidebar.component.html',\n  styleUrls: ['./sidebar.component.scss'],\n  standalone: false,\n  host: {\n    class: 'layout-sidebar',\n  },\n})\nexport class GmpSidebarComponent {\n  @Input() config?: LayoutConfigOptions;\n\n  el = inject(ElementRef);\n  router = inject(Router);\n  layoutService = inject(LayoutService);\n\n  @ViewChild(GmpMenuComponent) appMenu!: GmpMenuComponent;\n\n  logo = computed(() => (this.layoutService.isDarkTheme() ? 'light' : 'dark'));\n  darkTheme = computed(() => this.layoutService.layoutConfig().darkTheme);\n\n  get userInitials(): string {\n    const name = this.config?.userDisplayName?.trim() || 'U';\n    const parts = name.split(/\\s+/).filter(Boolean);\n    if (parts.length >= 2) {\n      return (parts[0][0] + parts[1][0]).toUpperCase();\n    }\n    return name.slice(0, 2).toUpperCase();\n  }\n\n  onLogoutClick(): void {\n    const logout = this.config?.profileMenuItems?.find(item => item.label === 'Logout');\n    if (logout?.command) {\n      logout.command();\n    }\n  }\n\n  timeout!: any;\n\n  onAnchorToggle() {\n    this.layoutService.layoutState.update(val => ({ ...val, anchored: !val.anchored }));\n  }\n\n  @HostListener('mouseenter', ['$event'])\n  onMouseEnter(event: MouseEvent) {\n    if (!this.layoutService.layoutState().anchored) {\n      if (this.timeout) {\n        this.timeout = null;\n      }\n      this.layoutService.layoutState.update(val => ({ ...val, sidebarActive: true }));\n    }\n  }\n\n  @HostListener('mouseleave', ['$event'])\n  onMouseLeave(event: MouseEvent) {\n    if (!this.layoutService.layoutState().anchored) {\n      if (!this.timeout) {\n        this.timeout = setTimeout(() => {\n          this.layoutService.layoutState.update(val => ({ ...val, sidebarActive: false }));\n          this.timeout = null;\n        }, 300);\n      }\n    }\n  }\n\n  toggleDarkMode() {\n    this.executeDarkModeToggle();\n  }\n\n  executeDarkModeToggle() {\n    this.layoutService.layoutConfig.update(state => ({\n      ...state,\n      darkTheme: !state.darkTheme,\n    }));\n  }\n}\n","<div class=\"sidebar-inner\">\n  <div class=\"sidebar-header-block\">\n    <ul class=\"topbar-menu topbar-menu--sidebar\">\n      <li class=\"sidebar-logo-item\">\n        <a [routerLink]=\"['/clients']\" class=\"app-logo app-logo--row\" style=\"cursor: pointer\">\n          @if (config?.logoUrl) {\n            <div class=\"app-logo-normal\">\n              <img class=\"app-logo-img\" [src]=\"config?.logoUrl\" [alt]=\"config?.logoAlt || 'Logo'\" />\n            </div>\n          }\n\n          @if (config?.appName; as name) {\n            <span class=\"app-logo-text\">{{ name }}</span>\n          }\n        </a>\n      </li>\n      @if (config?.showNotifications) {\n        <li class=\"profile-item topbar-item\">\n          <button\n            pButton\n            pRipple\n            type=\"button\"\n            icon=\"pi pi-bell\"\n            class=\"sidebar-icon-button\"\n            severity=\"secondary\"\n            text\n            rounded\n            pTooltip=\"Notificaciones\"\n            tooltipPosition=\"bottom\"\n          ></button>\n        </li>\n      }\n    </ul>\n\n    <button class=\"layout-sidebar-anchor sidebar-anchor-button\" type=\"button\" (click)=\"onAnchorToggle()\" aria-label=\"Anclar menú\"></button>\n  </div>\n\n  <div class=\"sidebar-scroll\">\n    <ngx-gmp-menu [menuItems]=\"config?.menuItems\"></ngx-gmp-menu>\n  </div>\n\n  @if (config?.showProfileMenu || config?.showDarkModeToggle) {\n    <div class=\"sidebar-footer\">\n      <div class=\"sidebar-footer__row\">\n        @if (config?.showProfileMenu) {\n          @if (config?.userAvatarUrl; as avatar) {\n            <img [src]=\"avatar\" class=\"sidebar-footer__avatar\" alt=\"\" />\n          } @else {\n            <div class=\"sidebar-footer__avatar sidebar-footer__avatar--placeholder\" aria-hidden=\"true\">\n              <span class=\"sidebar-footer__initials\">{{ userInitials }}</span>\n            </div>\n          }\n\n          <div class=\"sidebar-footer__meta\">\n            <span class=\"sidebar-footer__name\">{{ config?.userDisplayName || 'Usuario' }}</span>\n            @if (config?.userSubtitle) {\n              <span class=\"sidebar-footer__subtitle\">{{ config?.userSubtitle }}</span>\n            }\n          </div>\n        }\n\n        <div class=\"sidebar-footer__actions\" [class.sidebar-footer__actions--end]=\"!config?.showProfileMenu\">\n          @if (config?.showDarkModeToggle) {\n            <button\n              pButton\n              pRipple\n              type=\"button\"\n              [icon]=\"darkTheme() ? 'pi pi-sun' : 'pi pi-moon'\"\n              class=\"sidebar-icon-button\"\n              size=\"large\"\n              text\n              rounded\n              severity=\"secondary\"\n              (click)=\"toggleDarkMode()\"\n              pTooltip=\"Tema\"\n              tooltipPosition=\"top\"\n            ></button>\n          }\n          @if (config?.showProfileMenu) {\n            <button\n              pButton\n              pRipple\n              type=\"button\"\n              icon=\"pi pi-sign-out\"\n              class=\"sidebar-icon-button\"\n              severity=\"danger\"\n              text\n              rounded\n              pTooltip=\"Cerrar sesión\"\n              tooltipPosition=\"top\"\n              (click)=\"onLogoutClick()\"\n            ></button>\n          }\n        </div>\n      </div>\n    </div>\n  }\n</div>\n","import {\n  Component,\n  computed,\n  ElementRef,\n  inject,\n  Input,\n  ViewChild,\n} from '@angular/core';\n\nimport { LayoutConfigOptions } from '../../interfaces/layout.interface';\nimport { LayoutService } from '../../service/layout.service';\n\n@Component({\n  selector: 'ngx-gmp-topbar',\n  templateUrl: './topbar.component.html',\n  styleUrls: ['./topbar.component.scss'],\n  standalone: false,\n  host: {\n    class: 'layout-topbar',\n  },\n})\nexport class GmpTopbarComponent {\n  @Input() config?: LayoutConfigOptions;\n\n  @ViewChild('menubutton') menuButton!: ElementRef<HTMLElement>;\n\n  el = inject(ElementRef);\n  constructor(public layoutService: LayoutService) {}\n\n  darkTheme = computed(() => this.layoutService.layoutConfig().darkTheme);\n\n  onMenuButtonClick() {\n    this.layoutService.onMenuToggle();\n  }\n\n  onConfigButtonClick() {\n    this.layoutService.showConfigSidebar();\n  }\n\n  onSidebarButtonClick() {\n    this.layoutService.layoutState.update(val => ({\n      ...val,\n      rightMenuVisible: true,\n    }));\n  }\n\n  onProfileMenuButtonClick() {\n    this.layoutService.layoutState.update(val => ({\n      ...val,\n      rightMenuActive: true,\n    }));\n  }\n\n  toggleDarkMode() {\n    this.executeDarkModeToggle();\n  }\n\n  executeDarkModeToggle() {\n    this.layoutService.layoutConfig.update(state => ({\n      ...state,\n      darkTheme: !state.darkTheme,\n    }));\n  }\n}\n","<div class=\"topbar-start\">\n  <button\n    pButton\n    pRipple\n    #menubutton\n    type=\"button\"\n    class=\"topbar-menubutton p-trigger\"\n    text\n    rounded\n    severity=\"secondary\"\n    (click)=\"onMenuButtonClick()\"\n  >\n    <i class=\"pi pi-bars\"></i>\n  </button>\n</div>\n","import {\n  Component,\n  computed,\n  Inject,\n  input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  NavigationEnd,\n  Router,\n} from '@angular/router';\n\nimport {\n  filter,\n  Subscription,\n} from 'rxjs';\n\nimport { LayoutConfigOptions } from '../../interfaces/layout.interface';\nimport { LayoutService } from '../../service/layout.service';\nimport { GmpSidebarComponent } from '../sidebar/sidebar.component';\nimport { GmpTopbarComponent } from '../topbar/topbar.component';\n\n@Component({\n  selector: 'ngx-gmp-layout',\n  templateUrl: './layout.component.html',\n  styleUrls: ['./layout.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class GmpLayoutComponent implements OnInit, OnDestroy {\n  readonly configFromInput = input<LayoutConfigOptions | undefined>(undefined, {\n    alias: 'config',\n  });\n\n  /** Config efectiva: input del host o señal del `AUTH_SERVICE`. */\n  readonly config = computed<LayoutConfigOptions | undefined>(() => {\n    const fromInput = this.configFromInput();\n    if (fromInput) {\n      return fromInput;\n    }\n    return this.authService?.layoutConfigSignal?.();\n  });\n\n  overlayMenuOpenSubscription?: Subscription;\n  menuOutsideClickListener: any;\n  menuScrollListener: any;\n\n  @ViewChild(GmpSidebarComponent) appSidebar!: GmpSidebarComponent;\n  @ViewChild(GmpTopbarComponent) appTopbar!: GmpTopbarComponent;\n\n  constructor(\n    public layoutService: LayoutService,\n    public renderer: Renderer2,\n    public router: Router,\n    @Inject('AUTH_SERVICE') private authService: any,\n  ) {\n    // La inicialización de servicios se hará en ngOnInit después de obtener la configuración\n  }\n\n  ngOnInit() {\n    if (this.config()) {\n      this.initializeServices();\n    }\n  }\n\n  private initializeServices() {\n    this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\n      if (!this.menuOutsideClickListener) {\n        this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n          if (this.isOutsideClicked(event)) {\n            this.hideMenu();\n          }\n        });\n      }\n      if ((this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus()) && !this.menuScrollListener) {\n        this.menuScrollListener = this.renderer.listen(this.appSidebar?.appMenu?.menuContainer?.nativeElement, 'scroll', event => {\n          if (this.layoutService.isDesktop()) {\n            this.hideMenu();\n          }\n        });\n      }\n      if (this.layoutService.layoutState().staticMenuMobileActive) {\n        this.blockBodyScroll();\n      }\n    });\n\n    this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\n      this.hideMenu();\n    });\n  }\n\n  isOutsideClicked(event: any) {\n    const sidebarEl = document.querySelector('.layout-sidebar');\n    const topbarButtonEl = document.querySelector('.topbar-start > button');\n\n    return !(\n      sidebarEl?.isSameNode(event.target) ||\n      sidebarEl?.contains(event.target) ||\n      topbarButtonEl?.isSameNode(event.target) ||\n      topbarButtonEl?.contains(event.target)\n    );\n  }\n\n  blockBodyScroll(): void {\n    if (document.body.classList) {\n      document.body.classList.add('blocked-scroll');\n    } else {\n      document.body.className += ' blocked-scroll';\n    }\n  }\n\n  unblockBodyScroll(): void {\n    if (document.body.classList) {\n      document.body.classList.remove('blocked-scroll');\n    } else {\n      document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n    }\n  }\n\n  hideMenu() {\n    this.layoutService.layoutState.update(prev => ({\n      ...prev,\n      overlayMenuActive: false,\n      staticMenuMobileActive: false,\n      menuHoverActive: false,\n    }));\n    this.layoutService.reset();\n    if (this.menuOutsideClickListener) {\n      this.menuOutsideClickListener();\n      this.menuOutsideClickListener = null;\n    }\n\n    if (this.menuScrollListener) {\n      this.menuScrollListener();\n      this.menuScrollListener = null;\n    }\n\n    this.unblockBodyScroll();\n  }\n\n  get containerClass() {\n    // Si no hay configuración, devolver clases básicas\n    if (!this.config()) {\n      return {\n        'layout-light': true,\n        'layout-static': true,\n      };\n    }\n\n    const layoutConfig = this.layoutService.layoutConfig();\n    const layoutState = this.layoutService.layoutState();\n\n    return {\n      'layout-light': !layoutConfig.darkTheme,\n      'layout-dark': layoutConfig.darkTheme,\n      'layout-overlay': layoutConfig.menuMode === 'overlay',\n      'layout-static': layoutConfig.menuMode === 'static',\n      'layout-slim': layoutConfig.menuMode === 'slim',\n      'layout-slim-plus': layoutConfig.menuMode === 'slim-plus',\n      'layout-horizontal': layoutConfig.menuMode === 'horizontal',\n      'layout-reveal': layoutConfig.menuMode === 'reveal',\n      'layout-drawer': layoutConfig.menuMode === 'drawer',\n      'layout-static-inactive': layoutState.staticMenuDesktopInactive && layoutConfig.menuMode === 'static',\n      'layout-overlay-active': layoutState.overlayMenuActive,\n      'layout-mobile-active': layoutState.staticMenuMobileActive,\n      'layout-sidebar-active': layoutState.sidebarActive,\n      'layout-sidebar-anchored': layoutState.anchored,\n    };\n  }\n\n  ngOnDestroy() {\n    if (this.overlayMenuOpenSubscription) {\n      this.overlayMenuOpenSubscription.unsubscribe();\n    }\n\n    if (this.menuOutsideClickListener) {\n      this.menuOutsideClickListener();\n    }\n  }\n}\n","<div class=\"layout-container\" [ngClass]=\"containerClass\">\n  <div class=\"layout-content-wrapper\">\n    <ngx-gmp-sidebar class=\"layout-sidebar--dark\" [config]=\"config()\"></ngx-gmp-sidebar>\n    <div class=\"layout-content\">\n      <router-outlet></router-outlet>\n    </div>\n    <div class=\"layout-mask\"></div>\n  </div>\n  @if (config()) {\n    <p-toast />\n  }\n</div>\n","import {\n  Component,\n  inject,\n} from '@angular/core';\n\nimport { LayoutService } from '../../service/layout.service';\n\n@Component({\n  selector: 'ngx-gmp-profile-menu',\n  templateUrl: './profile-menu.component.html',\n  styleUrls: ['./profile-menu.component.scss'],\n  standalone: false,\n})\nexport class GmpProfileMenuComponent {\n  layoutService = inject(LayoutService);\n\n  get rightMenuVisible() {\n    return this.layoutService.layoutState().rightMenuActive;\n  }\n\n  set rightMenuVisible(val: boolean) {\n    this.layoutService.layoutState.update(prev => ({ ...prev, rightMenuActive: val }));\n  }\n}\n","<p-drawer\n  [(visible)]=\"rightMenuVisible\"\n  header=\"Profile\"\n  position=\"right\"\n  styleClass=\"layout-profile-sidebar\"\n  [ngClass]=\"{ 'layout-rightmenu-active': rightMenuVisible }\"\n>\n  <div class=\"layout-rightmenu profile-menu-scroll\">\n    <div class=\"profile-menu-content\">\n      <div class=\"profile-menu-user\">\n        <img src=\"/assets/images/avatar.jpg\" alt=\"Profile\" class=\"user-image profile-menu-user-image\" />\n        <span class=\"user-name profile-menu-user-name\">User Name</span>\n        <span class=\"user-number\">user</span>\n      </div>\n    </div>\n  </div>\n</p-drawer>\n","import { CommonModule } from '@angular/common';\nimport {\n  CUSTOM_ELEMENTS_SCHEMA,\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { DrawerModule } from 'primeng/drawer';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputText } from 'primeng/inputtext';\nimport { RippleModule } from 'primeng/ripple';\nimport { StyleClassModule } from 'primeng/styleclass';\nimport { ToastModule } from 'primeng/toast';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { GmpBreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { GmpConfiguratorComponent } from './components/configurator/configurator.component';\nimport { GmpLayoutComponent } from './components/layout/layout.component';\nimport { GmpMenuComponent } from './components/menu/menu.component';\nimport { GmpMenuitemComponent } from './components/menuitem/menuitem.component';\nimport { GmpProfileMenuComponent } from './components/profile-menu/profile-menu.component';\nimport { GmpSidebarComponent } from './components/sidebar/sidebar.component';\nimport { GmpTopbarComponent } from './components/topbar/topbar.component';\n\nexport interface LayoutModuleConfig {\n  authService: any; // Tipo genérico para el AuthService\n}\n\n@NgModule({\n  declarations: [\n    GmpLayoutComponent,\n    GmpSidebarComponent,\n    GmpTopbarComponent,\n    GmpBreadcrumbComponent,\n    GmpMenuComponent,\n    GmpMenuitemComponent,\n    GmpProfileMenuComponent,\n    GmpConfiguratorComponent,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    RouterModule,\n    ButtonModule,\n    StyleClassModule,\n    ToastModule,\n    DrawerModule,\n    IconField,\n    InputIcon,\n    InputText,\n    RippleModule,\n    TooltipModule,\n  ],\n  providers: [MessageService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [\n    GmpLayoutComponent,\n    GmpSidebarComponent,\n    GmpTopbarComponent,\n    GmpBreadcrumbComponent,\n    GmpMenuComponent,\n    GmpMenuitemComponent,\n    GmpProfileMenuComponent,\n    GmpConfiguratorComponent,\n  ],\n})\nexport class GmpLayoutModule {\n  static forRoot(config: LayoutModuleConfig): ModuleWithProviders<GmpLayoutModule> {\n    return {\n      ngModule: GmpLayoutModule,\n      providers: [MessageService, { provide: 'AUTH_SERVICE', useClass: config.authService }],\n    };\n  }\n}\n","import {\n  CommonModule,\n  Location,\n} from '@angular/common';\nimport {\n  Component,\n  computed,\n  effect,\n  inject,\n  input,\n  Input,\n  linkedSignal,\n  model,\n  OnDestroy,\n  OnInit,\n  signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from 'primeng/button';\n\nimport { IPaginator } from '../../interfaces/IPaginator';\n\n@Component({\n  selector: 'ngx-gmp-paginator',\n  templateUrl: './paginator.component.html',\n  styleUrls: ['./paginator.component.scss'],\n  standalone: true,\n  imports: [CommonModule, FormsModule, ButtonModule],\n})\nexport class GmpPaginatorComponent implements OnInit, OnDestroy {\n  private location = inject(Location);\n  private resizeListener: (() => void) | null = null;\n  @Input() mobileWidth = 768;\n  @Input() setUrl!: boolean;\n\n  // Page size options\n  @Input() pageSizeOptions: { label: string; value: number }[] = [\n    { label: '10', value: 10 },\n    { label: '20', value: 20 },\n    { label: '50', value: 50 },\n  ];\n\n  $paginator = model<IPaginator>({\n    page: 1,\n    forPage: 10,\n  });\n\n  $totalItems = input<number>(0);\n  $nextPageLabel = input('Siguiente página');\n  $previousPageLabel = input('Página anterior');\n  $pageSizeLabel = input('Resultados por página:');\n  $fromItemLabel = input('de');\n  $showMobile = input<boolean>(false);\n\n  // Mobile detection signal\n  $isMobile = linkedSignal(() => this.$showMobile());\n\n  $currentPage = computed(() => this.$paginator().page);\n  $pageSize = computed(() => this.$paginator().forPage);\n  $selectedPageSize = signal<number>(this.$paginator().forPage);\n  $totalPages = computed(() => Math.ceil(this.$totalItems() / this.$paginator().forPage));\n\n  $startItem = computed(() => {\n    const page = this.$currentPage();\n    const size = this.$paginator().forPage;\n    return page > 0 ? (page - 1) * size + 1 : 0;\n  });\n\n  $endItem = computed(() => {\n    const page = this.$currentPage();\n    const size = this.$paginator().forPage;\n    const total = this.$totalItems();\n    const end = page * size;\n    return Math.min(end, total);\n  });\n\n  constructor() {\n    this.$selectedPageSize.set(this.$paginator().forPage);\n\n    effect(() => {\n      const currentForPage = this.$paginator().forPage;\n      if (this.$selectedPageSize() !== currentForPage) {\n        this.$selectedPageSize.set(currentForPage);\n      }\n    });\n\n    effect(() => {\n      if (this.setUrl) {\n        const paginator = this.$paginator();\n        this.setUrlParameter('page', paginator.page.toString());\n        this.setUrlParameter('size', paginator.forPage.toString());\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    this.checkMobileView();\n    this.setupResizeListener();\n  }\n\n  ngOnDestroy(): void {\n    if (this.resizeListener) {\n      window.removeEventListener('resize', this.resizeListener);\n    }\n  }\n\n  private checkMobileView(): void {\n    if (!this.$showMobile()) {\n      const isMobile = window.innerWidth <= this.mobileWidth; // Breakpoint para móvil\n      this.$isMobile.set(isMobile);\n    }\n  }\n\n  private setupResizeListener(): void {\n    this.resizeListener = () => {\n      this.checkMobileView();\n    };\n    window.addEventListener('resize', this.resizeListener);\n  }\n\n  onPageChange(page: number | string) {\n    const pageNumber = typeof page === 'string' ? parseInt(page, 10) : page;\n    if (pageNumber !== this.$currentPage() && pageNumber >= 1 && pageNumber <= this.$totalPages()) {\n      const newPaginator = {\n        ...this.$paginator(),\n        page: pageNumber,\n      };\n      this.$paginator.set(newPaginator);\n    }\n  }\n\n  onPreviousPage() {\n    if (this.$currentPage() > 1) {\n      this.onPageChange(this.$currentPage() - 1);\n    }\n  }\n\n  onNextPage() {\n    if (this.$currentPage() < this.$totalPages()) {\n      this.onPageChange(this.$currentPage() + 1);\n    }\n  }\n\n  onPageSizeChange() {\n    const newPageSize = this.$selectedPageSize();\n    const newPaginator = {\n      ...this.$paginator(),\n      forPage: newPageSize,\n      page: 1,\n    };\n    this.$paginator.set(newPaginator);\n  }\n\n  /**\n   * Establece un parámetro en la URL. Si el valor es una cadena vacía, elimina el parámetro de la URL.\n   * @param key - La clave del parámetro\n   * @param value - El valor del parámetro. Si es '', se elimina el parámetro\n   */\n  setUrlParameter(key: string, value: string): void {\n    if (!this.setUrl) return;\n\n    const currentUrl = this.location.path();\n    const url = new URL(currentUrl, window.location.origin);\n\n    if (value === '') {\n      // Si el valor es vacío, eliminar el parámetro\n      url.searchParams.delete(key);\n    } else {\n      // Si el valor no es vacío, establecer el parámetro\n      url.searchParams.set(key, value);\n    }\n\n    this.location.replaceState(url.pathname + url.search);\n  }\n}\n","<div class=\"paginator-container\">\n  @if (!$isMobile()) {\n  <!-- Desktop: Resultados por página -->\n  <div class=\"paginator-left-section\">\n    <span class=\"paginator-label\">{{ $pageSizeLabel() }}</span>\n    <div class=\"paginator-select-container\">\n      <select [(ngModel)]=\"$selectedPageSize\" (change)=\"onPageSizeChange()\" class=\"paginator-select\">\n        @for (option of pageSizeOptions; track option.value) {\n        <option [value]=\"option.value\" class=\"paginator-option\">\n          {{ option.label }}\n        </option>\n        }\n      </select>\n      <div class=\"paginator-select-arrow\">\n        <svg class=\"paginator-arrow-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n          <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"></path>\n        </svg>\n      </div>\n    </div>\n  </div>\n  } @else {\n  <!-- Mobile: Solo información de página -->\n  <div class=\"paginator-mobile-info\">\n    <span class=\"paginator-label\">{{ $startItem() }}-{{ $endItem() }} de {{ $totalItems() }}</span>\n  </div>\n  } @if (!$isMobile()) {\n  <!-- Desktop: Botones de texto -->\n  <div class=\"paginator-right-section\">\n    <button\n      type=\"button\"\n      class=\"paginator-text-button\"\n      [class.paginator-button-disabled]=\"$currentPage() <= 1\"\n      [disabled]=\"$currentPage() <= 1\"\n      (click)=\"onPreviousPage()\"\n    >\n      {{ $previousPageLabel() }}\n    </button>\n    <span class=\"paginator-page-info\"> {{ $startItem() }}-{{ $endItem() }} {{ $fromItemLabel() }} {{ $totalItems() }} </span>\n    <button\n      type=\"button\"\n      class=\"paginator-text-button\"\n      [class.paginator-button-disabled]=\"$currentPage() >= $totalPages()\"\n      [disabled]=\"$currentPage() >= $totalPages()\"\n      (click)=\"onNextPage()\"\n    >\n      {{ $nextPageLabel() }}\n    </button>\n  </div>\n  } @else {\n  <!-- Mobile: Botones con flechas -->\n  <div class=\"paginator-mobile-buttons\">\n    <button\n      type=\"button\"\n      class=\"paginator-arrow-button\"\n      [class.paginator-button-disabled]=\"$currentPage() <= 1\"\n      [disabled]=\"$currentPage() <= 1\"\n      (click)=\"onPreviousPage()\"\n    >\n      <svg class=\"paginator-arrow-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\"></path>\n      </svg>\n    </button>\n    <button\n      type=\"button\"\n      class=\"paginator-arrow-button\"\n      [class.paginator-button-disabled]=\"$currentPage() >= $totalPages()\"\n      [disabled]=\"$currentPage() >= $totalPages()\"\n      (click)=\"onNextPage()\"\n    >\n      <svg class=\"paginator-arrow-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\"></path>\n      </svg>\n    </button>\n  </div>\n  }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { GmpPaginatorComponent } from './paginator.component';\n\n@NgModule({\n  imports: [GmpPaginatorComponent],\n  exports: [GmpPaginatorComponent],\n})\nexport class GmpPaginatorModule {}\n","export interface IPaginator {\n  page: number;\n  forPage: number;\n  count?: number;\n}\n\nexport const DefaultPaginator: IPaginator = {\n  count: 0,\n  page: 1,\n  forPage: 10,\n};\n","export interface IFilterValue {\n  id: number | string;\n  name: string;\n  image?: string; // URL de la imagen opcional\n}\n\nexport interface IFilter {\n  queryParam: string;\n  name: string;\n  values?: IFilterValue[];\n  selectedValue?: string | Date | null;\n  selectedValues?: IFilterValue[] | IFilterValue | null;\n  type?: FilterType;\n  enableSearchOnList?: boolean;\n  externalDataConfig?: IExternalDataConfig;\n  queryListFilter?: string;\n  minDate?: Date | null;\n}\n\nexport interface IExternalDataConfig {\n  url: string;\n  page: number;\n  pageKey?: string;\n  size: number;\n  sizeKey?: string;\n  sort?: string;\n  sortKey?: string;\n  isLoaded?: boolean;\n  isLoading?: boolean;\n  query?: string;\n  queryKey?: string;\n  keyId?: string;\n  keyName?: string;\n}\n\nexport interface FilterRequest {\n  filters: IFilter[];\n  search?: string;\n  dateFrom?: string;\n  dateTo?: string;\n  isLoaded?: boolean;\n  searchQueryParam?: string;\n  dateFromQueryParam?: string;\n  dateToQueryParam?: string;\n}\n\nexport const DefaultFilterRequest: FilterRequest = {\n  filters: [],\n  search: '',\n  dateFrom: '',\n  dateTo: '',\n};\n\nexport enum FilterType {\n  DEFAULT = 'default',\n  DATE = 'date',\n  SEARCH = 'search',\n  MULTI_SELECT = 'multi-select',\n  SINGLE_SELECT = 'single-select',\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport {\n  FilterRequest,\n  FilterType,\n  IExternalDataConfig,\n  IFilter,\n  IFilterValue,\n} from '../interfaces/IFilter';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FilterService {\n  constructor(private route: ActivatedRoute, private _http: HttpClient) {}\n\n  processFilterRequestFromUrl(filterRequest: FilterRequest): FilterRequest {\n    const queryParams = this.route.snapshot.queryParams;\n    const updatedRequest = { ...filterRequest };\n    if (updatedRequest.filters) {\n      updatedRequest.filters = updatedRequest.filters.map(filter => {\n        let selectedOptions;\n        let selectedValue = queryParams[filter.queryParam] || filter.selectedValue || '';\n        if (queryParams[filter.queryParam]) {\n          selectedOptions = [] as IFilterValue[];\n          if (filter.type === FilterType.MULTI_SELECT || !filter.type) {\n            selectedOptions = filter?.values?.filter(opt => queryParams[filter.queryParam]?.split(',').includes(opt.id?.toString() || ''));\n          }\n          if (filter.type === FilterType.SINGLE_SELECT) {\n            selectedOptions = { id: queryParams[filter.queryParam], name: '' };\n          }\n          if (filter.type === FilterType.DATE) {\n            selectedValue = new Date(queryParams[filter.queryParam]);\n          }\n        }\n\n        return {\n          ...filter,\n          selectedValue: selectedValue,\n          selectedValues: selectedOptions,\n        };\n      });\n    }\n    if (queryParams[filterRequest.searchQueryParam || 'search'] !== undefined) {\n      updatedRequest.search = queryParams[filterRequest.searchQueryParam || 'search'];\n    }\n    if (queryParams[filterRequest.dateFromQueryParam || 'dateFrom'] !== undefined) {\n      updatedRequest.dateFrom = queryParams[filterRequest.dateFromQueryParam || 'dateFrom'];\n    }\n    if (queryParams[filterRequest.dateToQueryParam || 'dateTo'] !== undefined) {\n      updatedRequest.dateTo = queryParams[filterRequest.dateToQueryParam || 'dateTo'];\n    }\n\n    return updatedRequest;\n  }\n\n  loadDataFilter<T>(data: IExternalDataConfig): Observable<T> {\n    const params: any = {};\n    params[data.pageKey || 'page'] = data.page.toString();\n    params[data.sizeKey || 'size'] = data.size.toString();\n    if (data.query) {\n      params[data.queryKey || 'search'] = data.query;\n    }\n    if (data.sort) {\n      params[data.sortKey || 'sort'] = data.sort;\n    }\n    const headers: { [key: string]: string } = {};\n    // headers['Authorization'] = `Bearer ${localStorage.getItem('accessToken')}`;\n\n    return this._http.get<T>(data.url, {\n      params,\n      headers,\n    });\n  }\n\n  setOptionsFilter(data: { filtersRequest: FilterRequest; filter: IFilter; options: any[]; concat: boolean; text: string }): FilterRequest {\n    return {\n      ...data.filtersRequest,\n      filters: data.filtersRequest.filters.map((filter: IFilter) => {\n        if (data.filter.queryParam === filter.queryParam) {\n          return {\n            ...filter,\n            values: data.concat ? [...(filter?.values || []), ...data.options] : data.options,\n            queryListFilter: data.text,\n            externalDataConfig: filter.externalDataConfig\n              ? {\n                  ...filter.externalDataConfig,\n                  page: data.filter.externalDataConfig?.page || 1,\n                  isLoaded: !data.options.length,\n                }\n              : undefined,\n          };\n        }\n        return filter;\n      }),\n    };\n  }\n}\n","import {\n  animate,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  CommonModule,\n  Location,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  inject,\n  input,\n  Input,\n  linkedSignal,\n  model,\n  OnDestroy,\n  OnInit,\n  signal,\n  ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { Button } from 'primeng/button';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  fromEvent,\n  map,\n} from 'rxjs';\n\nimport {\n  FilterRequest,\n  FilterType,\n  IFilter,\n  IFilterValue,\n} from '../../interfaces/IFilter';\nimport { FilterService } from '../../services/filter.service';\n\n@Component({\n  selector: 'gmp-filter-group',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    MultiSelectModule,\n    Button,\n    DatePickerModule,\n    IconFieldModule,\n    InputIconModule,\n    InputTextModule,\n    SkeletonModule,\n    SelectModule,\n  ],\n  providers: [],\n  templateUrl: './filter-group.component.html',\n  styleUrls: ['./filter-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('fadeIn', [\n      transition(':enter', [\n        style({ opacity: 0, transform: 'translateY(-10px)' }),\n        animate('300ms ease-in', style({ opacity: 1, transform: 'translateY(0)' })),\n      ]),\n    ]),\n  ],\n})\nexport class GmpFilterGroupComponent implements OnInit, OnDestroy {\n  private readonly location = inject(Location);\n  private readonly filterService = inject(FilterService);\n  @ViewChild('search') searchInput!: ElementRef;\n  @Input() mobileWidth = 768;\n\n  readonly useDateFilters = input(false);\n  readonly searchEnabled = input(false);\n  readonly searchPlaceholder = input('Buscar...');\n  /** Caracteres `ch` de ancho mínimo según el placeholder (+ margen para lupa y padding). */\n  readonly searchMinWidthCh = computed(() => {\n    const ph = (this.searchPlaceholder() ?? '').trim();\n    const len = Math.max(ph.length, 6);\n    return Math.min(len + 10, 52);\n  });\n  readonly dateRangePlaceholder = input('Rango de fechas');\n  readonly clearFiltersLabel = input('Borrar Filtros');\n  readonly isLoading = input(false);\n  readonly onlySearchOnEnter = input(false);\n  readonly dateFormat = input<string>('yy-mm-dd');\n\n  $isLoading = linkedSignal(() => this.isLoading());\n  $isLoadingExternalData = signal(false);\n  $showFilters = linkedSignal(() => true);\n  $paginator = model<{ page: number; forPage: number }>({ page: 1, forPage: 10 });\n  $filterRequest = model.required<FilterRequest>();\n  dateRange = linkedSignal<Date[] | null>(() => {\n    const filterRequest = this.$filterRequest();\n    if (filterRequest.dateFrom && filterRequest.dateTo) {\n      return [new Date(filterRequest.dateFrom), new Date(filterRequest.dateTo)];\n    }\n    return null;\n  });\n  $isMobile = signal<boolean>(false);\n  $filters = linkedSignal<FilterRequest>(() => this.$filterRequest());\n  $dateRangeError = signal<string | null>(null);\n  $minDate = signal<Date | null>(null);\n\n  private resizeListener: (() => void) | null = null;\n  private filterDebounceTimers: Map<string, any> = new Map<string, any>();\n  readonly pillSelectConfig = {\n    root: {\n      borderRadius: '24px',\n      width: 'auto',\n      minWidth: 'auto',\n    },\n  };\n  readonly datePickerConfig = {\n    root: {\n      borderRadius: '24px',\n      minWidth: '200px',\n    },\n  };\n  readonly searchInputConfig = {\n    root: {\n      borderRadius: '24px',\n    },\n  };\n\n  ngOnInit(): void {\n    this.checkMobileView();\n    this.setupResizeListener();\n  }\n\n  ngOnDestroy(): void {\n    if (this.resizeListener) {\n      window.removeEventListener('resize', this.resizeListener);\n    }\n  }\n\n  private checkMobileView(): void {\n    const isMobile = window.innerWidth <= this.mobileWidth;\n    this.$isMobile.set(isMobile);\n    this.$showFilters.set(!isMobile);\n  }\n\n  private setupResizeListener(): void {\n    this.resizeListener = () => {\n      this.checkMobileView();\n    };\n    window.addEventListener('resize', this.resizeListener);\n  }\n\n  getDateRangePlaceholder(): string {\n    const range = this.dateRange();\n    if (range && range.length === 2 && range[0] && range[1]) {\n      const fromDate = this.formatDateToISO(range[0]);\n      const toDate = this.formatDateToISO(range[1]);\n      return `${fromDate} - ${toDate}`;\n    }\n    return this.dateRangePlaceholder();\n  }\n\n  private formatDateToISO(date: Date | null): string {\n    if (!date) {\n      return '';\n    }\n\n    const year = date.getFullYear();\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const day = date.getDate().toString().padStart(2, '0');\n    return `${year}-${month}-${day}`;\n  }\n\n  @ViewChild('search') set searchInputSetter(content: ElementRef) {\n    if (content) {\n      fromEvent<KeyboardEvent>(content.nativeElement, 'keyup')\n        .pipe(\n          map((e: KeyboardEvent) => (e.target as HTMLInputElement).value),\n          debounceTime(500),\n          distinctUntilChanged(),\n        )\n        .subscribe((text: string) => {\n          if (!this.onlySearchOnEnter()) {\n            this.updateFilterRequest({ search: text });\n          }\n        });\n    }\n  }\n\n  searchOnEnter(event: Event): void {\n    if (this.onlySearchOnEnter()) {\n      const text = (event.target as HTMLInputElement).value;\n      this.updateFilterRequest({ search: text || '' });\n    }\n  }\n\n  onFilterMultipleSelect(queryParam: string, selectedItems: any[] | null): void {\n    const value = selectedItems?.length ? selectedItems.map(item => item.id).join(',') : '';\n    const updatedFilters = this.$filters().filters.map(filter => (filter.queryParam === queryParam ? { ...filter, selectedValue: value } : filter));\n    this.updateFilterRequest({ filters: updatedFilters });\n  }\n\n  onFilterSelect(queryParam: string, selectedItem: { id: string } | null): void {\n    const value = selectedItem?.id;\n    const updatedFilters = this.$filters().filters.map(filter => (filter.queryParam === queryParam ? { ...filter, selectedValue: value } : filter));\n    this.updateFilterRequest({ filters: updatedFilters });\n  }\n\n  onFilterClear(queryParam: string): void {\n    this.onFilterMultipleSelect(queryParam, null);\n  }\n\n  onDateRangeChange(newDateRange: Date[] | null): void {\n    // Limpiar error previo\n    this.$dateRangeError.set(null);\n\n    // Si no hay rango o está incompleto\n    if (!newDateRange || !newDateRange[0] || !newDateRange[1]) {\n      // Si solo hay fecha de inicio seleccionada, establecer minDate\n      if (newDateRange && newDateRange[0] && !newDateRange[1]) {\n        const startDate = new Date(newDateRange[0]);\n        startDate.setHours(0, 0, 0, 0);\n        this.$minDate.set(startDate);\n        this.dateRange.set(newDateRange);\n        return;\n      }\n\n      // Si no hay fechas, limpiar minDate\n      this.$minDate.set(null);\n      this.dateRange.set(newDateRange);\n      if (!newDateRange || (!newDateRange[0] && !newDateRange[1])) {\n        this.updateFilterRequest({ dateFrom: '', dateTo: '' });\n      }\n      return;\n    }\n\n    // Validar que la fecha final sea mayor o igual a la fecha de inicio\n    const startDate = new Date(newDateRange[0]);\n    const endDate = new Date(newDateRange[1]);\n\n    // Resetear a medianoche para comparar solo fechas (sin horas)\n    startDate.setHours(0, 0, 0, 0);\n    endDate.setHours(0, 0, 0, 0);\n\n    if (endDate.getTime() < startDate.getTime()) {\n      this.$dateRangeError.set('La fecha final debe ser mayor o igual a la fecha de inicio');\n      // No actualizar el rango si hay error\n      return;\n    }\n\n    // Si la validación pasa, actualizar el rango y limpiar minDate\n    this.$minDate.set(null);\n    this.dateRange.set(newDateRange);\n    const dateFrom = newDateRange[0].toISOString();\n    const dateTo = newDateRange[1].toISOString();\n    this.updateFilterRequest({ dateFrom, dateTo });\n  }\n\n  onDateChange(queryParam: string, date: Date): void {\n    const updatedFilters = this.$filters().filters.map(filter => (queryParam === filter.queryParam ? { ...filter, selectedValue: date } : filter));\n    this.updateFilterRequest({ filters: updatedFilters });\n  }\n\n  onDateRangeSelect(): void {\n    this.onDateRangeChange(this.dateRange());\n  }\n\n  onDateRangeClear(): void {\n    this.$dateRangeError.set(null);\n    this.$minDate.set(null);\n    this.onDateRangeChange(null);\n  }\n\n  private updateFilterRequest(updates: Partial<FilterRequest>): void {\n    const newFilterRequest = { ...this.$filters(), ...updates };\n    this.$filterRequest.set(newFilterRequest);\n    const url = new URL(this.location.path(), window.location.origin);\n    [\n      this.$filterRequest()?.searchQueryParam || 'search',\n      this.$filterRequest()?.dateFromQueryParam || 'dateFrom',\n      this.$filterRequest()?.dateToQueryParam || 'dateTo',\n    ].forEach(p => url.searchParams.delete(p));\n    newFilterRequest.filters.forEach(f => {\n      url.searchParams.delete(f.queryParam);\n      if (f.selectedValue !== undefined && f.selectedValue !== null && f.selectedValue !== '') {\n        if (f.type === FilterType.DATE) {\n          url.searchParams.set(f.queryParam, (f.selectedValue as Date).toISOString());\n        } else {\n          url.searchParams.set(f.queryParam, f.selectedValue as string);\n        }\n      }\n    });\n    if (newFilterRequest.search?.trim()) {\n      url.searchParams.set(this.$filterRequest()?.searchQueryParam || 'search', newFilterRequest.search);\n    }\n    if (newFilterRequest.dateFrom && newFilterRequest.dateTo) {\n      url.searchParams.set(this.$filterRequest()?.dateFromQueryParam || 'dateFrom', newFilterRequest.dateFrom);\n      url.searchParams.set(this.$filterRequest()?.dateToQueryParam || 'dateTo', newFilterRequest.dateTo);\n    }\n    this.location.replaceState(url.pathname + url.search);\n\n    if (this.$paginator()) {\n      this.$paginator.set({ page: 1, forPage: this.$paginator()?.forPage ?? 10 });\n    }\n  }\n\n  onClearFilters(): void {\n    if (this.searchInput?.nativeElement) {\n      this.searchInput.nativeElement.value = '';\n    }\n    this.dateRange.set(null);\n    this.$isLoading.set(true);\n    const clearedFilters = this.$filters().filters.map(f => {\n      return { ...f, selectedValue: null, selectedValues: null };\n    });\n    const clearedRequest = { filters: clearedFilters, search: '', dateFrom: '', dateTo: '' };\n    this.updateFilterRequest(clearedRequest);\n    setTimeout(() => {\n      this.$isLoading.set(false);\n    }, 500);\n  }\n\n  onScrollHandler = (filter: IFilter) => (event: any) => {\n    const { last } = event;\n    if (this.$isLoadingExternalData()) {\n      return;\n    }\n\n    if (last === filter.values?.length) {\n      const page = (filter.externalDataConfig?.page ?? 1) + 1;\n      if (!filter.externalDataConfig?.isLoaded && filter.externalDataConfig) {\n        this.processExternalData({ ...filter, externalDataConfig: { ...filter.externalDataConfig, page } }, filter.queryListFilter || '', true);\n      }\n    }\n  };\n\n  onListFilter(filter: IFilter, text: string): void {\n    const key = filter.queryParam;\n    const existing = this.filterDebounceTimers.get(key);\n    if (existing) {\n      clearTimeout(existing);\n    }\n    const timer = setTimeout(() => {\n      this.processExternalData(\n        { ...filter, externalDataConfig: filter.externalDataConfig ? { ...filter.externalDataConfig, page: 1 } : undefined },\n        text,\n        false,\n      );\n      this.filterDebounceTimers.delete(key);\n    }, 400);\n    this.filterDebounceTimers.set(key, timer);\n  }\n\n  processExternalData(filter: IFilter, text: string, concat: boolean): void {\n    if (filter.externalDataConfig) {\n      this.$isLoadingExternalData.set(true);\n      this.filterService.loadDataFilter({ ...filter.externalDataConfig, query: text }).subscribe((data: any) => {\n        // TODO delete this for Corplan\n        if (filter.queryParam === 'articleId') {\n          data = data.items.map((item: any) => ({\n            name: item.article.name,\n            id: item.article.id,\n          }));\n        }\n        const options = data.map((item: any) => {\n          return { id: item[filter.externalDataConfig?.keyId || 'id'], name: item[filter.externalDataConfig?.keyName || 'name'] };\n        });\n        const newData = this.filterService.setOptionsFilter({ filtersRequest: this.$filters(), filter: filter, options, concat, text });\n        this.$filters.set(newData);\n        setTimeout(() => {\n          this.$isLoadingExternalData.set(false);\n        }, 500);\n      });\n    }\n  }\n\n  getSelectValue(filter: IFilter): IFilterValue | null {\n    if (filter.selectedValues === undefined || filter.selectedValues === null) {\n      return null;\n    }\n    const id = (filter.selectedValues as IFilterValue).id;\n    return filter.values?.find(v => v.id == id) || null;\n  }\n\n  get FilterType(): typeof FilterType {\n    return FilterType;\n  }\n}\n","<ng-container>\n  <div class=\"flex flex-wrap gap-2 w-full justify-between\">\n    <!-- Skeleton mientras carga -->\n    @if ($isLoading()) {\n    <div class=\"flex gap-2 flex-wrap skeleton-container\">\n      @if (searchEnabled()) {\n      <p-skeleton width=\"200px\" height=\"40px\" borderRadius=\"24px\"></p-skeleton>\n      } @if($showFilters()) {\n      <!-- Skeletons para filtros (estimamos 2-3 filtros) -->\n      <p-skeleton width=\"150px\" height=\"40px\" borderRadius=\"24px\"></p-skeleton>\n      <p-skeleton width=\"150px\" height=\"40px\" borderRadius=\"24px\"></p-skeleton>\n      @if (useDateFilters()) {\n      <p-skeleton width=\"180px\" height=\"40px\" borderRadius=\"24px\"></p-skeleton>\n      } }\n    </div>\n    }\n\n    <!-- Filtros reales (con animación de fade-in) -->\n    @if (!$isLoading()) {\n    <div class=\"flex gap-2 flex-wrap items-center w-full filters-container\" [@fadeIn]>\n      @if (searchEnabled()) {\n      <!-- Mobile layout: search and filter button in same row -->\n      @if($isMobile()) {\n      <div class=\"mobile-search-container\">\n        <p-iconfield iconPosition=\"left\" class=\"gmp-filter-search w-full\">\n          <p-inputicon class=\"pi pi-search\" />\n          <input\n            pInputText\n            type=\"text\"\n            [value]=\"$filters().search\"\n            [placeholder]=\"searchPlaceholder()\"\n            (keyup.enter)=\"searchOnEnter($event)\"\n            [dt]=\"searchInputConfig\"\n            class=\"gmp-filter-search-input\"\n            #search\n          />\n        </p-iconfield>\n        <p-button\n          icon=\"pi pi-sliders-h\"\n          styleClass=\"p-button-rounded\"\n          [severity]=\"'secondary'\"\n          (onClick)=\"$showFilters.set(!$showFilters())\"\n        ></p-button>\n      </div>\n      } @else {\n      <!-- Desktop: ancho según placeholder (no ocupa toda la fila) -->\n      <p-iconfield\n        iconPosition=\"left\"\n        class=\"gmp-filter-search gmp-filter-search--fit\"\n        [ngStyle]=\"{ '--gmp-search-min-ch': searchMinWidthCh() + 'ch' }\"\n      >\n        <p-inputicon class=\"pi pi-search\" />\n        <input\n          pInputText\n          type=\"text\"\n          [value]=\"$filters().search\"\n          [placeholder]=\"searchPlaceholder()\"\n          (keyup.enter)=\"searchOnEnter($event)\"\n          class=\"gmp-filter-search-input\"\n          [dt]=\"searchInputConfig\"\n          #search\n        />\n      </p-iconfield>\n      } } @if ($showFilters()) { @for (filter of $filters().filters; track filter.queryParam) { @if (filter && filter.queryParam) { @if (filter.type\n      === FilterType.MULTI_SELECT || !filter.type) {\n      <p-multiselect\n        appendTo=\"body\"\n        [options]=\"filter.values\"\n        optionLabel=\"name\"\n        [placeholder]=\"filter.name\"\n        [filter]=\"filter.enableSearchOnList\"\n        (onFilter)=\"onListFilter(filter, $event.filter)\"\n        filterBy=\"name\"\n        [showClear]=\"true\"\n        [maxSelectedLabels]=\"1\"\n        selectedItemsLabel=\"{0} elementos seleccionados\"\n        [virtualScroll]=\"!!filter.externalDataConfig\"\n        [virtualScrollOptions]=\"{\n          itemSize: filter.externalDataConfig?.size ?? 20,\n          delay: 1000,\n          onScrollIndexChange: onScrollHandler(filter)\n        }\"\n        [lazy]=\"!!filter.externalDataConfig\"\n        (onChange)=\"onFilterMultipleSelect(filter.queryParam, $event.value)\"\n        (onClear)=\"onFilterClear(filter.queryParam)\"\n        [autofocusFilter]=\"false\"\n        [dt]=\"pillSelectConfig\"\n        [ngModel]=\"filter.selectedValues\"\n        name=\"filter-{{ filter.queryParam }}\"\n      >\n        <ng-template pTemplate=\"item\" let-option>\n          <div class=\"flex items-center gap-2 p-1\">\n            <span>{{ option.name }}</span>\n            @if (option.image) {\n            <img\n              [src]=\"option.image\"\n              [alt]=\"option.name\"\n              class=\"w-5 h-5 object-cover rounded\"\n              onerror=\"this.src='assets/images/default-placeholder.png'\"\n            />\n            }\n          </div>\n        </ng-template>\n        <ng-template pTemplate=\"selectedItem\" let-option>\n          <div class=\"flex items-center gap-2\">\n            <span>{{ option.name }}</span>\n            @if (option.image) {\n            <img\n              [src]=\"option.image\"\n              [alt]=\"option.name\"\n              class=\"w-4 h-4 object-cover rounded\"\n              onerror=\"this.src='assets/images/default-placeholder.png'\"\n            />\n            }\n          </div>\n        </ng-template>\n      </p-multiselect>\n      } @if (filter.type === FilterType.SINGLE_SELECT) {\n      <p-select\n        #selectRef\n        appendTo=\"body\"\n        [options]=\"filter.values\"\n        optionLabel=\"name\"\n        [placeholder]=\"filter.name\"\n        [filter]=\"filter.enableSearchOnList\"\n        (onFilter)=\"onListFilter(filter, $event.filter)\"\n        [dt]=\"pillSelectConfig\"\n        filterBy=\"name\"\n        [virtualScroll]=\"!!filter.externalDataConfig\"\n        [virtualScrollOptions]=\"{\n          itemSize: filter.externalDataConfig?.size ?? 20,\n          delay: 1000,\n          onScrollIndexChange: onScrollHandler(filter)\n        }\"\n        [lazy]=\"!!filter.externalDataConfig\"\n        [ngModel]=\"getSelectValue(filter)\"\n        (onChange)=\"onFilterSelect(filter.queryParam, $event.value)\"\n        (onClear)=\"onFilterClear(filter.queryParam)\"\n        [showClear]=\"true\"\n        name=\"filter-{{ filter.queryParam }}\"\n      >\n        <ng-template pTemplate=\"item\" let-option>\n          <div class=\"flex items-center gap-2 p-1\">\n            <span>{{ option.name }}</span>\n            @if (option.image) {\n            <img\n              [src]=\"option.image\"\n              [alt]=\"option.name\"\n              class=\"w-5 h-5 object-cover rounded\"\n              onerror=\"this.src='assets/images/default-placeholder.png'\"\n            />\n            }\n          </div>\n        </ng-template>\n        <ng-template pTemplate=\"selectedItem\" let-option>\n          <div class=\"flex items-center gap-2\">\n            <span>{{ option.name }}</span>\n            @if (option.image) {\n            <img\n              [src]=\"option.image\"\n              [alt]=\"option.name\"\n              class=\"w-4 h-4 object-cover rounded\"\n              onerror=\"this.src='assets/images/default-placeholder.png'\"\n            />\n            }\n          </div>\n        </ng-template>\n      </p-select>\n      } @if (filter.type === FilterType.DATE) {\n      <p-datepicker\n        appendTo=\"body\"\n        [placeholder]=\"filter.name\"\n        [dt]=\"datePickerConfig\"\n        [dateFormat]=\"dateFormat()\"\n        (onClear)=\"onFilterClear(filter.queryParam)\"\n        [showClear]=\"!!filter.selectedValue\"\n        [minDate]=\"filter.minDate\"\n        [ngModel]=\"filter.selectedValue\"\n        (ngModelChange)=\"onDateChange(filter.queryParam, $event)\"\n        name=\"filter-{{ filter.queryParam }}\"\n      />\n      } } } @if (useDateFilters()) {\n      <div class=\"date-range-container\">\n        <p-datepicker\n          appendTo=\"body\"\n          selectionMode=\"range\"\n          [placeholder]=\"getDateRangePlaceholder()\"\n          [readonlyInput]=\"true\"\n          [showClear]=\"true\"\n          [ngModel]=\"dateRange()\"\n          (ngModelChange)=\"onDateRangeChange($event)\"\n          (onSelect)=\"onDateRangeSelect()\"\n          (onClear)=\"onDateRangeClear()\"\n          [dateFormat]=\"dateFormat()\"\n          [minDate]=\"$minDate()\"\n          [class.error-state]=\"$dateRangeError()\"\n        />\n        @if ($dateRangeError()) {\n        <div class=\"date-range-error\">\n          {{ $dateRangeError() }}\n        </div>\n        }\n      </div>\n      } } @if($showFilters()) { @if ($isLoading()) {\n      <p-skeleton width=\"120px\" height=\"40px\" class=\"24px\" class=\"ml-auto\"></p-skeleton>\n      } @else {\n      <p-button\n        [label]=\"clearFiltersLabel()\"\n        styleClass=\"p-button-text p-button-secondary\"\n        class=\"ml-auto\"\n        (onClick)=\"onClearFilters()\"\n        [@fadeIn]\n      ></p-button>\n      } }\n    </div>\n    }\n  </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\n\nimport { GmpFilterGroupComponent } from './filter-group.component';\n\n@NgModule({\n  imports: [GmpFilterGroupComponent],\n  exports: [GmpFilterGroupComponent],\n})\nexport class GmpFilterGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i9.GmpAvatarComponent","i1","i5","i6","i7","i1.LayoutService","i2.GmpMenuitemComponent","i5.GmpMenuComponent","filter","i5.GmpSidebarComponent","i8"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBa,iBAAiB,CAAA;AAC5B,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAE/B,WAAW,GAAiC,IAAI;IACjD,uBAAuB,GAAqB,IAAI;IACvD,WAAW,GAAuB,IAAI;AAEtC,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;AAClC,IAAA,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC;IAErC,WAAW,GAAG,WAAW;IACzB,aAAa,GAAG,iBAAiB;AAEjC,IAAA,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,QAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAA,CAAC;AAEF,IAAA,WAAA,CACsC,WAAkC,EACrB,uBAAkC,EAC/C,WAAwB,EAAA;AAE5D,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;;IAGhC,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;;IAG/C,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;;YAEnC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;;AAG9D,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;AACrD,gBAAA,WAAW,EAAE,aAAa;AAC3B,aAAA,CAAC;;;AAIN,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,MAAM,EAAE,4EAA4E;AACpF,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;YACF;;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,MAAM,EAAE,kDAAkD;AAC1D,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;YACF;;AAEF,QAAA,MAAM,WAAW,GAAqB;YACpC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YACvC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;SAC9C;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;YAC5C,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;aAC1B;AACD,YAAA,KAAK,EAAE,CAAC,KAAwB,KAAI;AAClC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACxB,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,wBAAwB;AACjC,wBAAA,MAAM,EAAE,0EAA0E;AAClF,wBAAA,IAAI,EAAE,IAAI;AACX,qBAAA,CAAC;;qBACG;AACL,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,MAAM,EAAE,mFAAmF;AAC3F,wBAAA,IAAI,EAAE,IAAI;AACX,qBAAA,CAAC;;AAGJ,gBAAA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;aACrC;AACF,SAAA,CAAC;;IAGJ,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACxB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC;;AAvGO,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAsBN,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,cAAc,EACd,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,2BAA2B,6BAC3B,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAxBzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,0EChB9B,0kHAwGA,EAAA,MAAA,EAAA,CAAA,+wHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDxFa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGV,aAAA,EAAA,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,QAAA,EAAA,0kHAAA,EAAA,MAAA,EAAA,CAAA,+wHAAA,CAAA,EAAA;;0BAwBd;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BAAY,MAAM;2BAAC,2BAA2B;;0BAC9C;;0BAAY,MAAM;2BAAC,cAAc;;;MEKzB,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;wGADW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAd,cAAc,EAAA,YAAA,EAAA,CApBV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,qBAEnB,eAAe;YACf,cAAc;YACd,YAAY;YACZ,cAAc;YACd,eAAe;YACf,cAAc;YACd,YAAY;YACZ,WAAW;AACX,YAAA,aAAa,aAIL,iBAAiB,CAAA,EAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAJd,SAAA,EAAA,CAAC,cAAc,CAAC,YAdzB,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACnE,eAAe;YACf,cAAc;YACd,YAAY;YACZ,cAAc;YACd,eAAe;YACf,cAAc;YACd,YAAY;YACZ,WAAW;YACX,aAAa,CAAA,EAAA,CAAA;;4FAMJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBArB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;AACnB,wBAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;wBACnE,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,WAAW;wBACX,aAAa;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;MC7BY,oBAAoB,CAAA;AAC/B,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAE/B,WAAW,GAAoC,IAAI;IACpD,uBAAuB,GAAqB,IAAI;IACvD,cAAc,GAA0B,IAAI;AAE5C,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC;AACnC,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;AACtC,IAAA,oBAAoB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC7C,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC;;IAGnC,WAAW,GAAG,WAAW;IACzB,aAAa,GAAG,iBAAiB;AAEjC,IAAA,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAC1B;AACE,QAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC7C,EACD,EAAE,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAC5C;AAED,IAAA,WAAA,CACsC,WAAqC,EACxB,uBAAkC,EAC5C,cAA8B,EAAA;AAErE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AACtD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;AAGtC,IAAA,sBAAsB,CAAC,OAAwB,EAAA;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACxC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtD,QAAA,IAAI,QAAQ,IAAI,eAAe,IAAI,QAAQ,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;AAC3E,YAAA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE;;AAEnC,QAAA,OAAO,IAAI;;IAGb,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;;IAGhD,+BAA+B,GAAA;AAC7B,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;;IAGvD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;;AAG7C,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AAChE,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,MAAM,EAAE,yDAAyD;AACjE,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B;;AAEF,QAAA,MAAM,WAAW,GAAwB;YACvC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;YAChD,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC1C,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;YAChD,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE;SAC/D;;QAGD,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;aAC3B;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,2EAA2E;AACpG,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC;AACF,gBAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC;aACxC;AACF,SAAA,CAAC;;IAGJ,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;;;IAI1D,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3B,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,eAAe,EAAE,EAAE;AACpB,SAAA,CAAC;;IAGJ,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACjD,YAAA,OAAO,IAAI;;AAEb,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AAChE,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;AA1HH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EA8BT,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,cAAc,EACd,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,2BAA2B,6BAC3B,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAhC5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,6ECfjC,ytKAkJA,EAAA,MAAA,EAAA,CAAA,ijJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDnIa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGb,aAAA,EAAA,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,QAAA,EAAA,ytKAAA,EAAA,MAAA,EAAA,CAAA,ijJAAA,CAAA,EAAA;;0BAgCd;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BAAY,MAAM;2BAAC,2BAA2B;;0BAC9C;;0BAAY,MAAM;2BAAC,iBAAiB;;;MEF5B,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;wGADW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAjB,iBAAiB,EAAA,YAAA,EAAA,CApBb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,qBAEnB,eAAe;YACf,cAAc;YACd,YAAY;YACZ,cAAc;YACd,eAAe;YACf,cAAc;YACd,YAAY;YACZ,WAAW;AACX,YAAA,aAAa,aAIL,oBAAoB,CAAA,EAAA,CAAA;AAEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJjB,SAAA,EAAA,CAAC,cAAc,CAAC,YAdzB,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACtE,eAAe;YACf,cAAc;YACd,YAAY;YACZ,cAAc;YACd,eAAe;YACf,cAAc;YACd,YAAY;YACZ,WAAW;YACX,aAAa,CAAA,EAAA,CAAA;;4FAMJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;AACnB,wBAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;wBACtE,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,WAAW;wBACX,aAAa;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA;;;MCZY,0BAA0B,CAAA;AACrC,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAE/B,WAAW,GAA0C,IAAI;IAC1D,uBAAuB,GAAqB,IAAI;IACvD,oBAAoB,GAAgC,IAAI;AAExD,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;AAElC,IAAA,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,QAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACrD,KAAA,CAAC;AAEF,IAAA,WAAA,CACsC,WAA2C,EAC9B,uBAAkC,EACrC,oBAA0C,EAAA;AAExF,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AACtD,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;;IAGlD,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;AAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;AAC3D,gBAAA,WAAW,EAAE,aAAa;AAC3B,aAAA,CAAC;;;IAIN,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,MAAM,EAAE,2DAA2D;AACnE,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,MAAM,EAAE,oCAAoC;AAC5C,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;;AAGF,QAAA,MAAM,OAAO,GAA0B;YACrC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;SACjD;QAED,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;YACjD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,MAAM,EAAE,6EAA6E;AACrF,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC;aACH;AACD,YAAA,KAAK,EAAE,CAAC,KAAwB,KAAI;AAClC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,2DAA2D;AAC5F,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC;AACF,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;aAC/C;AACF,SAAA,CAAC;;AApFO,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAiBf,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,cAAc,EACd,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,2BAA2B,6BAC3B,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAnBnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,oFChCvC,2vEAgEA,EAAA,MAAA,EAAA,CAAA,67EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDhCa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,2vEAAA,EAAA,MAAA,EAAA,CAAA,67EAAA,CAAA,EAAA;;0BAmBd;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BAAY,MAAM;2BAAC,2BAA2B;;0BAC9C;;0BAAY,MAAM;2BAAC,wBAAwB;;;MEVnC,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA;wGADW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,YAAA,EAAA,CAlBnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAEvC,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,qBAEnB,eAAe;YACf,cAAc;YACd,YAAY;YACZ,eAAe;YACf,YAAY;YACZ,WAAW;AACX,YAAA,aAAa,aAIL,0BAA0B,CAAA,EAAA,CAAA;AAEzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAJvB,SAAA,EAAA,CAAC,cAAc,CAAC,YAZzB,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC5E,eAAe;YACf,cAAc;YACd,YAAY;YACZ,eAAe;YACf,YAAY;YACZ,WAAW;YACX,aAAa,CAAA,EAAA,CAAA;;4FAMJ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnBnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;AACnB,wBAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC;wBAC5E,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,WAAW;wBACX,aAAa;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA;;;MCNY,0BAA0B,CAAA;AACrC,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAE/B,WAAW,GAA0C,IAAI;IAC1D,uBAAuB,GAAqB,IAAI;IACvD,oBAAoB,GAAgC,IAAI;AAExD,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;AAClC,IAAA,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC;AACrC,IAAA,mBAAmB,GAAG,MAAM,CAAU,KAAK,CAAC;AAE5C,IAAA,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAChC;AACE,QAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC7C,EACD,EAAE,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAC5C;AAED,IAAA,WAAA,CACsC,WAA2C,EAC9B,uBAAkC,EACrC,oBAA0C,EAAA;AAExF,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AACtD,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;;AAGlD,IAAA,sBAAsB,CAAC,OAAwB,EAAA;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACxC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtD,QAAA,IAAI,QAAQ,IAAI,eAAe,IAAI,QAAQ,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;AAC3E,YAAA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE;;AAEnC,QAAA,OAAO,IAAI;;IAGb,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;;IAG/C,+BAA+B,GAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;;IAGtD,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;AAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;AAC3D,gBAAA,WAAW,EAAE,aAAa;AAC3B,aAAA,CAAC;;;IAIN,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,MAAM,EAAE,qDAAqD;AAC7D,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,MAAM,EAAE,iDAAiD;AACzD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;;QAGF,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,0BAA0B,IAAI,MAAM;AACtF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QAEzF,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,OAAO,EAAE,iBAAiB;gBAC1B,MAAM,EAAE,CAA0D,uDAAA,EAAA,cAAc,CAAI,EAAA,CAAA;AACpF,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;;AAGF,QAAA,MAAM,OAAO,GAA0B;YACrC,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;YACtD,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE;SACrE;QAED,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;YACjD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,OAAO,EAAE,wBAAwB;AACjC,oBAAA,MAAM,EAAE,2CAA2C;AACnD,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC;aACH;AACD,YAAA,KAAK,EAAE,CAAC,KAAwB,KAAI;AAClC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,2DAA2D;AAC5F,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC;AACF,gBAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;aAC/C;AACF,SAAA,CAAC;;AA3HO,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAuBf,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,cAAc,EACd,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,2BAA2B,6BAC3B,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAzBnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,oFClCvC,s8GAsFA,EAAA,MAAA,EAAA,CAAA,ymGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDpDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,s8GAAA,EAAA,MAAA,EAAA,CAAA,ymGAAA,CAAA,EAAA;;0BAyBd;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BAAY,MAAM;2BAAC,2BAA2B;;0BAC9C;;0BAAY,MAAM;2BAAC,wBAAwB;;;MElBnC,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA;wGADW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,YAAA,EAAA,CAlBnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAEvC,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,qBAEnB,eAAe;YACf,cAAc;YACd,YAAY;YACZ,eAAe;YACf,YAAY;YACZ,WAAW;AACX,YAAA,aAAa,aAIL,0BAA0B,CAAA,EAAA,CAAA;AAEzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAJvB,SAAA,EAAA,CAAC,cAAc,CAAC,YAZzB,YAAY;YACZ,WAAW;YACX,mBAAmB;AACnB,YAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC5E,eAAe;YACf,cAAc;YACd,YAAY;YACZ,eAAe;YACf,YAAY;YACZ,WAAW;YACX,aAAa,CAAA,EAAA,CAAA;;4FAMJ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnBnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;AACnB,wBAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC;wBAC5E,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,WAAW;wBACX,aAAa;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA;;;ACjCD;AACA,MAAM,0BAA0B,GAAG;IACjC,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV;MAQY,kBAAkB,CAAA;IACD,IAAI,GAAG,EAAE;;AAET,IAAA,GAAG;;IAEH,IAAI,GAAG,EAAE;IACT,KAAK,GAAG,KAAK;;IAEb,YAAY,GAAG,CAAC;IAElC,SAAS,GAAG,KAAK;AAE3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;;;IAI1C,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAGxB,IAAA,IAAc,QAAQ,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;;AAG3D,IAAA,IAAc,eAAe,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;;AAG3D,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;;AAGzC,IAAA,gBAAgB,CAAC,KAAgC,EAAA;AACzD,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;;IAGrD,eAAe,CAAC,GAAW,EAAE,GAAW,EAAA;AAC9C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG;;AAEZ,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAClD,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO;AACJ,iBAAA,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBACtB,IAAI,CAAC,EAAE;AACP,iBAAA,WAAW;AACX,iBAAA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;AAEhB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAClB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;;QAEpC,MAAM,SAAS,GAAG;AACf,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aACtB,IAAI,CAAC,EAAE;AACP,aAAA,WAAW,EAAE;QAChB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG;;AAG7B,IAAA,eAAe,CAAC,IAAY,EAAA;QAClC,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;;AAElD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,MAAM;AAC9D,QAAA,OAAO,0BAA0B,CAAC,GAAG,CAAC;;wGAtE7B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,kMC7B/B,krBAuBA,EAAA,MAAA,EAAA,CAAA,2UAAA,CAAA,EAAA,CAAA;;4FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,krBAAA,EAAA,MAAA,EAAA,CAAA,2UAAA,CAAA,EAAA;8BAGW,IAAI,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAEE,GAAG,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAEE,IAAI,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACE,KAAK,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAEE,YAAY,EAAA,CAAA;sBAAvC,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;;;AE7Bf,MAAA,WAAW,GAAU;AAChC,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,SAAS,EAAE,MAAM;;;ICVP;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,gBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,gBAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW;AACX,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAK;AACP,CAAC,EAdW,gBAAgB,KAAhB,gBAAgB,GAc3B,EAAA,CAAA,CAAA;;MCkDY,iBAAiB,CAAA;AAyDT,IAAA,QAAA;AAxDX,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC9B,IAAA,KAAK,GAAc;AAC1B,QAAA,SAAS,EAAE,IAAI,kBAAkB,CAAC,EAAS,CAAC;AAC5C,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE;AAC/B,QAAA,IAAI,EAAE,OAAO;KACd;AACS,IAAA,WAAW,GAAG,IAAI,YAAY,EAAK;AACnC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAK;AACpC,IAAA,SAAS,GAAG,IAAI,YAAY,EAAK;AACjC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAa;AAC3C,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAS;AAC9C,IAAA,0BAA0B,GAAG,IAAI,YAAY,EAAY;AACzD,IAAA,oBAAoB,GAAG,IAAI,YAAY,EAAmB;AAC1D,IAAA,cAAc,GAAG,IAAI,YAAY,EAAK;AACtC,IAAA,eAAe,GAAG,IAAI,YAAY,EAAW;AAC7C,IAAA,eAAe,GAAG,IAAI,YAAY,EAA4B;AAC9D,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;AAC5C,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAgC;AAC1C,IAAA,IAAI;AAChB,IAAA,cAAc;AACJ,IAAA,gBAAgB;AACrB,IAAA,aAAa;AACX,IAAA,eAAe;IAChD,gBAAgB,GAAa,EAAE;AAC/B,IAAA,eAAe;AACf,IAAA,gBAAgB,GAAG,IAAI,GAAG,EAAmB;IAC7C,YAAY,GAAQ,EAAE;AACtB,IAAA,cAAc,GAAG,IAAI,GAAG,EAAmB;AAC3C,IAAA,WAAW,GAAG,IAAI,GAAG,EAAmB;;IAGxC,KAAK,GAAG,KAAK,EAAO;IACpB,QAAQ,GAAG,KAAK,EAAkB;IAClC,UAAU,GAAG,KAAK,EAAmB;IACrC,YAAY,GAAG,KAAK,EAAS;IAC7B,UAAU,GAAG,KAAK,EAAW;IAC7B,UAAU,GAAG,KAAK,EAAU;AAC5B,IAAA,aAAa,GAAG,KAAK,CAAM,EAAE,CAAC;AACrB,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,IAAI;AACJ,IAAA,mBAAmB;AACnB,IAAA,qBAAqB;AACrB,IAAA,qBAAqB;AACrB,IAAA,cAAc;AACd,IAAA,cAAc;AACd,IAAA,gBAAgB;AAChB,IAAA,oBAAoB;AACpB,IAAA,iBAAiB;AACjB,IAAA,mBAAmB;AACnB,IAAA,MAAM;AACN,IAAA,iBAAiB;AAE1B,IAAA,WAAA,CAAmB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACzB,IAAI,CAAC,WAAW,EAAE;;IAGpB,WAAW,GAAA;QACT,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;gBACtB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC;;AAErD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS;;AAElC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,EAAE;AAC7C,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;AAE7B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AACvC,YAAA,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,EAAE;AACrD,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW;;AAEtC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;AACjD,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS;;AAElC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;YACnC,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC5D,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;;AAEtE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,YAAA,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,EAAE;AACvD,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY;gBAChC,IAAI,CAAC,kBAAkB,EAAE;;AAE7B,SAAC,CAAC;;IAGJ,UAAU,GAAA;QACR,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAC9E,QAAA,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAC9G,QAAA,IAAI,OAAO,IAAI,CAAC,qBAAqB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AACpH,QAAA,IAAI,OAAO,IAAI,CAAC,qBAAqB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AACpH,QAAA,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AAC/F,QAAA,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AAC/F,QAAA,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACrG,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACnF,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACtF,QAAA,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACjH,QAAA,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AACxG,QAAA,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAC9G,QAAA,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;;IAG1G,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;;IAGnB,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,0BAA0B,EAAE;SAClC,EAAE,CAAC,CAAC;;IAGP,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;AAGxC,IAAA,aAAa,CAAC,OAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAG;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AACtC,gBAAA,OAAO,EAAE,GAAG,CAAC,EAAE;;iBACV;AACL,gBAAA,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE;AACnF,oBAAA,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;;AAElF,gBAAA,OAAO,MAAM;;AAEjB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAe,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAe,KAAK,CAAC,CAAC,KAAK,CAAC;;AAG9G,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACpD,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACnE,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACjE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACtC,IAAI,CAAC,sBAAsB,EAAE;;;IAIjC,UAAU,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAG;YACnC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM;YAC3C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;YAChD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM;AAC9C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,MAAM,CAAC;AAChG,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE;gBAC9B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS;;YAEnD,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;;AAEtD,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;AACtI,SAAC,CAAC;;IAGJ,MAAM,GAAA;QACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnC,IAAA,sBAAsB;AAEtB,IAAA,kBAAkB,CAAC,KAA8C,EAAA;AAC/D,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC;AAC/C,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;;AAElD,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAG,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAG,CAAC;;;AAIlE,IAAA,aAAa,CAAC,OAAU,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG9B,IAAA,eAAe,CAAC,OAAU,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGhC,IAAA,gBAAgB,CAAC,OAAU,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGjC,IAAA,OAAO,CAAC,OAAU,EAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG3B,gBAAgB,CAAC,OAAU,EAAE,MAAoB,EAAA;QACvD,MAAM,EAAE,GAAI,OAAe,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAA,EAAG,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAA,CAAE;;AAG1F,IAAA,YAAY,CAAC,OAAU,EAAE,MAAoB,EAAE,KAAY,EAAA;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;AAClD,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAA0B;;QAGnD,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,YAAA,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACjC;;;AAIF,QAAA,IAAI,MAAM,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;;IAI5B,WAAW,CAAC,OAAU,EAAE,MAAoB,EAAA;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE;YACrD,OAAO,MAAM,CAAC,aAAa;;AAE7B,QAAA,IAAI,EAAG,OAAO,CAAC,MAAM,CAAC,KAAgB,CAAY,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAAE;AACjF,YAAA,OAAO,MAAM,CAAC,mBAAmB,IAAI,EAAE;;AAEzC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAgB,CAAW;;AAGnD,IAAA,WAAW,CAAC,OAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;AAE7B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;;AAIlC,IAAA,aAAa,CAAC,OAAY,EAAA;AACxB,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE;AACtB,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;aACtB;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO;;QAEhC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAG5D,IAAA,UAAU,CAAC,KAA8C,EAAA;AACvD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;;AAElD,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAG,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAG,CAAC;;;AAIlE,IAAA,eAAe,CAAC,OAAgB,EAAA;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;QAEjD,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;;aACtB;YACL,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,kBAAkB,EAAE;;QAG3B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;YAClD,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;;;IAI7D,kBAAkB,CAAC,OAAU,EAAE,OAAgB,EAAA;AAC7C,QAAA,MAAM,EAAE,GAAI,OAAe,EAAE,EAAE;AAC/B,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;;;aAExB;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC;;QAG5E,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;YAClD,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;;;AAI7D,IAAA,aAAa,CAAC,OAAU,EAAA;AACtB,QAAA,MAAM,EAAE,GAAI,OAAe,EAAE,EAAE;AAC/B,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK;;IAGjD,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,CAAC;QACzG,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;IAG7E,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;IAG9D,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACrC,YAAA,IAAI,GAAG,EAAE,EAAE,EAAE;gBACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;;AAEnC,SAAC,CAAC;;IAGJ,oBAAoB,GAAA;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,CAAC;QAC7F,IAAI,cAAc,EAAE;AAClB,YAAA,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;;;IAIrD,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;;;IAIlD,eAAe,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAa;QACtC,IAAI,CAAC,IAAI,EAAE,MAAM;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;aACtB;YACL,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;YAC7D,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC3D,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI;;QAGnE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;IAG5D,aAAa,GAAA;AACX,QAAA,MAAM,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,CAAC;QACzG,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;AAG/E,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,gBAAgB;;IAGzB,aAAa,CAAC,OAAY,EAAE,KAAa,EAAA;AACvC,QAAA,MAAM,OAAO,GAAQ;YACnB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;YACrD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;YACvE,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE;YAChE,UAAU,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;SAChG;AAED,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE;AACvB,YAAA,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;;AAGrC,QAAA,OAAO,OAAO;;AAGhB,IAAA,sBAAsB,CAAC,OAAU,EAAA;QAC/B,OAAO,CAAC,KAA6B,KAAI;AACvC,YAAA,MAAM,WAAW,GAA6B;AAC5C,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,gBAAA,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,gBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,SAAC;;AAGH,IAAA,8BAA8B,CAAC,OAAU,EAAA;QACvC,OAAO,CAAC,KAA6B,KAAI;AACvC,YAAA,MAAM,WAAW,GAAiC;AAChD,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB;AACD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,SAAC;;IAGH,0BAA0B,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,KAAI;AACpD,gBAAA,MAAM,iBAAiB,GAAI,YAAY,CAAC,aAAqB,CAAC,aAAa;AAC3E,gBAAA,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,WAAW,EAAE;oBACtD,iBAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;AACrD,wBAAA,MAAM,WAAW,GAA6B;AAC5C,4BAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AAC1B,4BAAA,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;4BAChC,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,4BAAA,GAAG,KAAK;yBACT;AACD,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,qBAAC,CAAC;;AAEN,aAAC,CAAC;;;IAIN,MAAM,CAAC,GAAW,EAAE,KAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvD,YAAA,IAAI,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;;iBACvB;gBACL,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;AAElC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;;;wGAtc9C,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAsBjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,OAAO,ECtFpB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ygVAyPA,EDlMc,MAAA,EAAA,CAAA,06BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,cAAc,EAAE;AACtB,gBAAA,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,gBAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aACtF,CAAC;AACH,SAAA,EAAA,CAAA;;4FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGb,UAAA,EAAA;wBACV,OAAO,CAAC,cAAc,EAAE;AACtB,4BAAA,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;4BACjE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,4BAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;yBACtF,CAAC;AACH,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,ygVAAA,EAAA,MAAA,EAAA,CAAA,06BAAA,CAAA,EAAA;6EAKR,KAAK,EAAA,CAAA;sBAAb;gBAOS,WAAW,EAAA,CAAA;sBAApB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,kBAAkB,EAAA,CAAA;sBAA3B;gBACS,0BAA0B,EAAA,CAAA;sBAAnC;gBACS,oBAAoB,EAAA,CAAA;sBAA7B;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,kBAAkB,EAAA,CAAA;sBAA3B;gBACS,mBAAmB,EAAA,CAAA;sBAA5B;gBACqC,IAAI,EAAA,CAAA;sBAAzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACV,cAAc,EAAA,CAAA;sBAAvC,SAAS;uBAAC,aAAa;gBACY,gBAAgB,EAAA,CAAA;sBAAnD,YAAY;uBAAC,oBAAoB;gBACH,aAAa,EAAA,CAAA;sBAA3C,YAAY;uBAAC,eAAe;gBACI,eAAe,EAAA,CAAA;sBAA/C,YAAY;uBAAC,iBAAiB;gBAgBtB,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;;;MEzEU,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EA7BV,YAAA,EAAA,CAAA,iBAAiB,EAAE,kBAAkB,aAElD,YAAY;YACZ,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,wBAAwB;YACxB,gBAAgB;YAChB,eAAe;YACf,kBAAkB;AAClB,YAAA,gBAAgB,aAGhB,YAAY;YACZ,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,wBAAwB;YACxB,gBAAgB;YAChB,eAAe;YACf,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA;AAGP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YA3BvB,YAAY;YACZ,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,wBAAwB;YACxB,gBAAgB;YAChB,eAAe;YACf,kBAAkB;AAClB,YAAA,gBAAgB,EAGhB,YAAY;YAEZ,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,wBAAwB;YACxB,gBAAgB;YAChB,eAAe;YACf,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA;;4FAGP,cAAc,EAAA,UAAA,EAAA,CAAA;kBA9B1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;AACrD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,wBAAwB;wBACxB,gBAAgB;wBAChB,eAAe;wBACf,kBAAkB;wBAClB,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,wBAAwB;wBACxB,gBAAgB;wBAChB,eAAe;wBACf,kBAAkB;wBAClB,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;MCpBY,uBAAuB,CAAA;AACzB,IAAA,KAAK;AACJ,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAa;IAC5D,QAAQ,GAAG,KAAK,EAAkB;AAElC,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,WAAW,EAAE;AACpB,KAAC;IACD,cAAc,GAAmB,EAAE;IACnC,aAAa,GAAmB,EAAE;IAElC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;AACnE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;;;IAIrE,WAAW,GAAA;QACT,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,EAAE;AAC7C,gBAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;AACxD,gBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;;AAE1D,SAAC,CAAC;;AAGJ,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;QAC7E,IAAI,CAAC,IAAI,EAAE;;AAGb,IAAA,sBAAsB,CACpB,OAAqB,EACrB,KAAa,EACb,YAA4B,EAC5B,aAA6B,EAAA;AAE7B,QAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE;;IAGb,IAAI,GAAA;AACF,QAAA,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAG;gBAC7B,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;AACpC,aAAC,CAAC;YACF,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAG;gBAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;AACnC,aAAC,CAAC;SACH;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;YAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE1C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;;;IAK9B,OAAO,GAAA;QACL,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;QACxB,IAAI,CAAC,IAAI,EAAE;;IAGb,OAAO,GAAA;QACL,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,IAAI,EAAE;;wGAxEF,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,0aCzBpC,grDA8CA,EAAA,MAAA,EAAA,CAAA,65BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA;;4FDrBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,grDAAA,EAAA,MAAA,EAAA,CAAA,65BAAA,CAAA,EAAA;wDAGR,KAAK,EAAA,CAAA;sBAAb;gBACS,kBAAkB,EAAA,CAAA;sBAA3B;;;MEZU,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAApB,oBAAoB,EAAA,YAAA,EAAA,CAJhB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAC5B,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAC7F,uBAAuB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAA,EAAA,CAAA;yGAEtG,oBAAoB,EAAA,OAAA,EAAA,CAHrB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EACpE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAA,EAAA,CAAA;;4FAEtG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC;AACxG,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC;AACnH,iBAAA;;;ACRY,MAAA,qBAAqB,GAAoB;AACpD,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,OAAO,EAAE,EAAE;;;MCKA,sBAAsB,CAAA;AAExB,IAAA,SAAA;AAEA,IAAA,IAAA;IAHT,WACS,CAAA,SAA+C,EAE/C,IAKN,EAAA;QAPM,IAAS,CAAA,SAAA,GAAT,SAAS;QAET,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAQb,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;;IAG7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;AAjBjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,gDAGvB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAHd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,gFCdnC,4bAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA;;4FDQa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAEnB,KAAK,EAAA,QAAA,EAAA,4bAAA,EAAA;;0BAKd,MAAM;2BAAC,eAAe;;;MEFd,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EALZ,YAAA,EAAA,CAAA,sBAAsB,CAE3B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAC/D,EAAA,OAAA,EAAA,CAAA,sBAAsB,EAAE,eAAe,EAAE,eAAe,CAAA,EAAA,CAAA;yGAEvD,gBAAgB,EAAA,OAAA,EAAA,CAHjB,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EACvC,eAAe,EAAE,eAAe,CAAA,EAAA,CAAA;;4FAEvD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBAEtC,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC;AAC1E,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,eAAe,EAAE,eAAe,CAAC;AACpE,iBAAA;;;MCCY,wBAAwB,CAAA;AAE1B,IAAA,SAAA;AAEA,IAAA,IAAA;IAHT,WACS,CAAA,SAAiD,EAEjD,IAAqB,EAAA;QAFrB,IAAS,CAAA,SAAA,GAAT,SAAS;QAET,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAJF,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,gDAGzB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAHd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,mFCfrC,iGAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDWa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,iGAAA,EAAA;;0BAKd,MAAM;2BAAC,eAAe;;;MEPd,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAArB,qBAAqB,EAAA,YAAA,EAAA,CAJjB,wBAAwB,CAC7B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAC7B,wBAAwB,EAAE,eAAe,CAAA,EAAA,CAAA;AAExC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAHtB,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EACH,eAAe,CAAA,EAAA,CAAA;;4FAExC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,eAAe,CAAC;AACrD,iBAAA;;;MCHY,aAAa,CAAA;AACxB,IAAA,OAAO,GAAiB;AACtB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,QAAQ,EAAE,QAAQ;KACnB;AAED,IAAA,MAAM,GAAgB;AACpB,QAAA,yBAAyB,EAAE,KAAK;AAChC,QAAA,iBAAiB,EAAE,KAAK;AACxB,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,oBAAoB,EAAE,KAAK;AAC3B,QAAA,sBAAsB,EAAE,KAAK;AAC7B,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,oBAAoB,EAAE,KAAK;AAC3B,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,eAAe,EAAE,KAAK;KACvB;AAED,IAAA,YAAY,GAAG,MAAM,CAAe,IAAI,CAAC,OAAO,CAAC;AACjD,IAAA,WAAW,GAAG,MAAM,CAAc,IAAI,CAAC,MAAM,CAAC;AAEtC,IAAA,YAAY,GAAG,IAAI,OAAO,EAAgB;AAC1C,IAAA,WAAW,GAAG,IAAI,OAAO,EAAO;AAChC,IAAA,UAAU,GAAG,IAAI,OAAO,EAAmB;AAC3C,IAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAEnC,IAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC5C,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAC9C,IAAA,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAChD,IAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;IAE9C,eAAe,GAAoB,QAAQ,CACzC,MACE,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB;AACpC,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,sBAAsB;AACzC,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAC1C;AAED,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,QACE,YAAY,CAAC,QAAQ,KAAK,YAAY;YACtC,YAAY,CAAC,QAAQ,KAAK,MAAM;AAChC,YAAA,YAAY,CAAC,QAAQ,KAAK,WAAW;AAEzC,KAAC,CAAC;AAEF,IAAA,WAAW,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;AAC5E,IAAA,SAAS,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC;AACvF,IAAA,MAAM,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC;AACjF,IAAA,UAAU,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,KAAK,WAAW,CAAC;AAC1F,IAAA,YAAY,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC;AAE7F,IAAA,kBAAkB,GAA4B,MAAM,CAAU,KAAK,CAAC;IACpE,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;AACzE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC;IAE7D,WAAW,GAAG,KAAK;AAE3B,IAAA,WAAA,GAAA;;QAEE,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;AACvD,QAAA,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,KAAK,MAAM;YACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;;QAGrC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;YAClC,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,cAAc,EAAE;;AAEzB,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;YAElC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE;AAChC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBACvB;;;AAIF,YAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACvC,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAC9C,SAAC,CAAC;;AAGI,IAAA,wBAAwB,CAAC,MAAoB,EAAA;AACnD,QAAA,IAAK,QAAgB,CAAC,mBAAmB,EAAE;AACzC,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;;aAC3B;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,eAAe,EAAE;;;AAIlB,IAAA,mBAAmB,CAAC,MAAoB,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAI,QAAgB,CAAC,mBAAmB,CAAC,MAAK;AAC5D,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC7B,SAAC,CAAC;AAEF,QAAA,UAAU,CAAC;aACR,IAAI,CAAC,MAAK;YACT,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC;AACA,aAAA,KAAK,CAAC,MAAO,GAAC,CAAC;;AAGpB,IAAA,cAAc,CAAC,MAAqB,EAAA;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,QAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe;AACnC,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,YAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5B,YAAA,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;;aAChC;AACL,YAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/B,YAAA,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;;;IAI5B,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,SAAC,CAAC;;IAGJ,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC/B,gBAAA,GAAG,IAAI;AACP,gBAAA,iBAAiB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB;AACzD,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,EAAE;AACxC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAI/B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC/B,gBAAA,GAAG,IAAI;AACP,gBAAA,yBAAyB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,yBAAyB;AACzE,aAAA,CAAC,CAAC;;aACE;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC/B,gBAAA,GAAG,IAAI;AACP,gBAAA,sBAAsB,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,sBAAsB;AACnE,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,sBAAsB,EAAE;AAC7C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;;IAKjC,SAAS,GAAA;AACP,QAAA,OAAO,MAAM,CAAC,UAAU,GAAG,GAAG;;IAGhC,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;;IAG1B,cAAc,GAAA;QACZ,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;QACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,iBAAiB,CAAC,KAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG7B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,kBAAkB,GAAA;QAChB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC/B,YAAA,GAAG,IAAI;AACP,YAAA,qBAAqB,EAAE,IAAI;AAC5B,SAAA,CAAC,CAAC;;IAGL,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC/B,YAAA,GAAG,IAAI;AACP,YAAA,oBAAoB,EAAE,IAAI;AAC3B,SAAA,CAAC,CAAC;;IAGL,iBAAiB,GAAA;QACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC/B,YAAA,GAAG,IAAI;AACP,YAAA,oBAAoB,EAAE,KAAK;AAC5B,SAAA,CAAC,CAAC;;wGAnNM,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCsBY,sBAAsB,CAAA;AAMb,IAAA,MAAA;AALM,IAAA,WAAW;AAEpB,IAAA,aAAa,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC;AAC7D,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAEzD,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YACzF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI;YAClD,MAAM,WAAW,GAAiB,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAEzC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,SAAC,CAAC;;AAGJ,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC;AAEvE,IAAA,aAAa,CAAC,KAA6B,EAAE,SAAmB,EAAE,WAAyB,EAAA;QACjG,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3C,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI;AAEnG,QAAA,IAAI,UAAU,IAAI,UAAU,KAAK,gBAAgB,EAAE;YACjD,WAAW,CAAC,IAAI,CAAC;AACf,gBAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC/B,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9B,aAAA,CAAC;;AAGJ,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;;;IAI/D,cAAc,GAAA;QACZ,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK;AAC5C,YAAA,GAAG,GAAG;AACN,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;QACH,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE;SACxC,EAAE,GAAG,CAAC;;IAGT,gBAAgB,GAAA;QACd,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK;AAC5C,YAAA,GAAG,GAAG;AACN,YAAA,eAAe,EAAE,KAAK;AACvB,SAAA,CAAC,CAAC;;IAGL,wBAAwB,GAAA;QACtB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK;AAC5C,YAAA,GAAG,GAAG;AACN,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;;wGAzDM,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,0QC5BnC,i6DA6DA,EAAA,MAAA,EAAA,CAAA,26EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDjCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAGlB,KAAK,EACX,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,mDAAmD;AAC3D,qBAAA,EAAA,QAAA,EAAA,i6DAAA,EAAA,MAAA,EAAA,CAAA,26EAAA,CAAA,EAAA;6EAGyB,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;;;MEtBb,wBAAwB,CAAA;wGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,iFCPrC,EAAA,EAAA,CAAA;;4FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAEpB,KAAK,EAAA,QAAA,EAAA,EAAA,EAAA;;;ME0DN,oBAAoB,CAAA;AAyCZ,IAAA,aAAA;AAAqC,IAAA,MAAA;AAxC/C,IAAA,IAAI;AACJ,IAAA,KAAK;AACsC,IAAA,IAAI;IAC/C,SAAS,GAAG,EAAE;AAED,IAAA,OAAO;AAE7B,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;;IAGlC,MAAM,GAAG,KAAK;AACd,IAAA,sBAAsB;AACtB,IAAA,qBAAqB;IACrB,GAAG,GAAW,EAAE;AAEhB,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,IACE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;aAC7B,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,EACrG;YACA,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ;;aACpC;YACL,OAAO,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,WAAW;;;AAI1E,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AACpD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AAC5D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;AAEhE,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;;AAGvC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;;IAGtC,WAAmB,CAAA,aAA4B,EAAS,MAAc,EAAA;QAAnD,IAAa,CAAA,aAAA,GAAb,aAAa;QAAwB,IAAM,CAAA,MAAA,GAAN,MAAM;AAC5D,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;YAC7E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAC9B,gBAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;;qBACtF;oBACL,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;AACnE,wBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;;AAGzB,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC1E,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACrB,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACtF,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC7D,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;iBACd;gBACL,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,wBAAwB,EAAE;;AAEnC,SAAC,CAAC;;IAGJ,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACrD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;gBAChE,IAAI,CAAC,wBAAwB,EAAE;;;;;IAM7B,wBAAwB,GAAA;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACtE;;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;;IAInE,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACrD;;AAEF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC1C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,YAAY,EAAE,SAAS;AACvB,YAAA,QAAQ,EAAE,SAAS;AACpB,SAAA,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;;AAG3C,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;;IAI5C,iBAAiB,CAAC,KAAU,EAAA;AAE5B,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtB,KAAK,CAAC,cAAc,EAAE;YACtB;;AAGF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;AAG9D,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;;aACrE;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;;IAI7E,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe,EAAE;AACpD,gBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;;;;wGAtIrE,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EC/DjC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wrFA+EA,EDhBa,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EA9BnB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,UAAU,EAAE;AAClB,gBAAA,KAAK,CACH,WAAW,EACX,KAAK,CAAC;AACJ,oBAAA,MAAM,EAAE,GAAG;AACZ,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,UAAU,EACV,KAAK,CAAC;AACJ,oBAAA,MAAM,EAAE,GAAG;AACZ,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,MAAM;AAChB,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,SAAS,EACT,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,OAAO;AACjB,iBAAA,CAAC,CACH;AACD,gBAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aACtF,CAAC;AACH,SAAA,EAAA,CAAA;;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnChC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAGpB,KAAK,EACL,UAAA,EAAA;wBACV,OAAO,CAAC,UAAU,EAAE;AAClB,4BAAA,KAAK,CACH,WAAW,EACX,KAAK,CAAC;AACJ,gCAAA,MAAM,EAAE,GAAG;AACZ,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,UAAU,EACV,KAAK,CAAC;AACJ,gCAAA,MAAM,EAAE,GAAG;AACZ,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,MAAM;AAChB,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,SAAS,EACT,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,OAAO;AACjB,6BAAA,CAAC,CACH;AACD,4BAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;yBACtF,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,wrFAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA;sGAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACmD,IAAI,EAAA,CAAA;sBAAvD;;sBAAS,WAAW;uBAAC,4BAA4B;gBACzC,SAAS,EAAA,CAAA;sBAAjB;gBAEqB,OAAO,EAAA,CAAA;sBAA5B,SAAS;uBAAC,SAAS;gBAGhB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,uBAAuB;;;MElDzB,gBAAgB,CAAA;AAClB,IAAA,SAAS;AAElB,IAAA,EAAE,GAAe,MAAM,CAAC,UAAU,CAAC;AACP,IAAA,aAAa;AAEzC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,QACE,IAAI,CAAC,SAAS,IAAI;AAChB,YAAA;AACE,gBAAA,KAAK,EAAE;AACL,oBAAA;AACE,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,IAAI,EAAE,mBAAmB;AACzB,wBAAA,KAAK,EAAE;4BACL,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE;4BAC9C,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;AAC1D,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;;wGArBM,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,gRCrB7B,kXAeA,EAAA,MAAA,EAAA,CAAA,qrGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDMa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,iBAGT,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EACX,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA,EAAA,QAAA,EAAA,kXAAA,EAAA,MAAA,EAAA,CAAA,qrGAAA,CAAA,EAAA;8BAGQ,SAAS,EAAA,CAAA;sBAAjB;gBAG2B,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;;;METf,mBAAmB,CAAA;AACrB,IAAA,MAAM;AAEf,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAER,IAAA,OAAO;IAEpC,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;AAC5E,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;AAEvE,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG;AACxD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/C,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;;QAElD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;;IAGvC,aAAa,GAAA;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;AACnF,QAAA,IAAI,MAAM,EAAE,OAAO,EAAE;YACnB,MAAM,CAAC,OAAO,EAAE;;;AAIpB,IAAA,OAAO;IAEP,cAAc,GAAA;QACZ,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;;AAIrF,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;AAC9C,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;YAErB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;;AAKnF,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;oBAC7B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AAChF,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;iBACpB,EAAE,GAAG,CAAC;;;;IAKb,cAAc,GAAA;QACZ,IAAI,CAAC,qBAAqB,EAAE;;IAG9B,qBAAqB,GAAA;QACnB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AAC/C,YAAA,GAAG,KAAK;AACR,YAAA,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS;AAC5B,SAAA,CAAC,CAAC;;wGAhEM,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOnB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB7B,62GAkGA,EAAA,MAAA,EAAA,CAAA,ivFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDlFa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EAGf,KAAK,EACX,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACxB,qBAAA,EAAA,QAAA,EAAA,62GAAA,EAAA,MAAA,EAAA,CAAA,ivFAAA,CAAA,EAAA;8BAGQ,MAAM,EAAA,CAAA;sBAAd;gBAM4B,OAAO,EAAA,CAAA;sBAAnC,SAAS;uBAAC,gBAAgB;gBA4B3B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;gBAWtC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;;;MEvC3B,kBAAkB,CAAA;AAMV,IAAA,aAAA;AALV,IAAA,MAAM;AAEU,IAAA,UAAU;AAEnC,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,WAAA,CAAmB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa;;AAEhC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;IAEvE,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;;IAGnC,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;;IAGxC,oBAAoB,GAAA;QAClB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK;AAC5C,YAAA,GAAG,GAAG;AACN,YAAA,gBAAgB,EAAE,IAAI;AACvB,SAAA,CAAC,CAAC;;IAGL,wBAAwB,GAAA;QACtB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK;AAC5C,YAAA,GAAG,GAAG;AACN,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;;IAGL,cAAc,GAAA;QACZ,IAAI,CAAC,qBAAqB,EAAE;;IAG9B,qBAAqB,GAAA;QACnB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;AAC/C,YAAA,GAAG,KAAK;AACR,YAAA,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS;AAC5B,SAAA,CAAC,CAAC;;wGAxCM,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,8PCrB/B,0SAeA,EAAA,MAAA,EAAA,CAAA,msBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EAGd,KAAK,EACX,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,eAAe;AACvB,qBAAA,EAAA,QAAA,EAAA,0SAAA,EAAA,MAAA,EAAA,CAAA,msBAAA,CAAA,EAAA;+EAGQ,MAAM,EAAA,CAAA;sBAAd;gBAEwB,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY;;;MESZ,kBAAkB,CAAA;AAsBpB,IAAA,aAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACyB,IAAA,WAAA;AAxBzB,IAAA,eAAe,GAAG,KAAK,CAAkC,SAAS,EAAE;AAC3E,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC;;AAGO,IAAA,MAAM,GAAG,QAAQ,CAAkC,MAAK;AAC/D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;QACxC,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,SAAS;;AAElB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,kBAAkB,IAAI;AACjD,KAAC,CAAC;AAEF,IAAA,2BAA2B;AAC3B,IAAA,wBAAwB;AACxB,IAAA,kBAAkB;AAEc,IAAA,UAAU;AACX,IAAA,SAAS;AAExC,IAAA,WAAA,CACS,aAA4B,EAC5B,QAAmB,EACnB,MAAc,EACW,WAAgB,EAAA;QAHzC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAM,CAAA,MAAA,GAAN,MAAM;QACmB,IAAW,CAAA,WAAA,GAAX,WAAW;;;IAK7C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,kBAAkB,EAAE;;;IAIrB,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAChF,YAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAG;AAChF,oBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;wBAChC,IAAI,CAAC,QAAQ,EAAE;;AAEnB,iBAAC,CAAC;;AAEJ,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBACrI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,IAAG;AACvH,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE;wBAClC,IAAI,CAAC,QAAQ,EAAE;;AAEnB,iBAAC,CAAC;;YAEJ,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,sBAAsB,EAAE;gBAC3D,IAAI,CAAC,eAAe,EAAE;;AAE1B,SAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAACU,QAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACtF,IAAI,CAAC,QAAQ,EAAE;AACjB,SAAC,CAAC;;AAGJ,IAAA,gBAAgB,CAAC,KAAU,EAAA;QACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC;QAEvE,OAAO,EACL,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AACnC,YAAA,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACjC,YAAA,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CACvC;;IAGH,eAAe,GAAA;AACb,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;YAC3B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;;aACxC;AACL,YAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,iBAAiB;;;IAIhD,iBAAiB,GAAA;AACf,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;YAC3B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;;aAC3C;AACL,YAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;;;IAInJ,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK;AAC7C,YAAA,GAAG,IAAI;AACP,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,eAAe,EAAE,KAAK;AACvB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,CAAC,wBAAwB,EAAE;AAC/B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;;AAGtC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;;QAGhC,IAAI,CAAC,iBAAiB,EAAE;;AAG1B,IAAA,IAAI,cAAc,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO;AACL,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,eAAe,EAAE,IAAI;aACtB;;QAGH,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;QAEpD,OAAO;AACL,YAAA,cAAc,EAAE,CAAC,YAAY,CAAC,SAAS;YACvC,aAAa,EAAE,YAAY,CAAC,SAAS;AACrC,YAAA,gBAAgB,EAAE,YAAY,CAAC,QAAQ,KAAK,SAAS;AACrD,YAAA,eAAe,EAAE,YAAY,CAAC,QAAQ,KAAK,QAAQ;AACnD,YAAA,aAAa,EAAE,YAAY,CAAC,QAAQ,KAAK,MAAM;AAC/C,YAAA,kBAAkB,EAAE,YAAY,CAAC,QAAQ,KAAK,WAAW;AACzD,YAAA,mBAAmB,EAAE,YAAY,CAAC,QAAQ,KAAK,YAAY;AAC3D,YAAA,eAAe,EAAE,YAAY,CAAC,QAAQ,KAAK,QAAQ;AACnD,YAAA,eAAe,EAAE,YAAY,CAAC,QAAQ,KAAK,QAAQ;YACnD,wBAAwB,EAAE,WAAW,CAAC,yBAAyB,IAAI,YAAY,CAAC,QAAQ,KAAK,QAAQ;YACrG,uBAAuB,EAAE,WAAW,CAAC,iBAAiB;YACtD,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;YAC1D,uBAAuB,EAAE,WAAW,CAAC,aAAa;YAClD,yBAAyB,EAAE,WAAW,CAAC,QAAQ;SAChD;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE;;AAGhD,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,CAAC,wBAAwB,EAAE;;;AAnJxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,6FAyBnB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAzBb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAkBlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EACnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kBAAkB,gDCpD/B,mYAYA,EAAA,MAAA,EAAA,CAAA,ujFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDqBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGX,aAAA,EAAA,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,ujFAAA,CAAA,EAAA;;0BA2Bd,MAAM;2BAAC,cAAc;yCAPQ,UAAU,EAAA,CAAA;sBAAzC,SAAS;uBAAC,mBAAmB;gBACC,SAAS,EAAA,CAAA;sBAAvC,SAAS;uBAAC,kBAAkB;;;MEvClB,uBAAuB,CAAA;AAClC,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAErC,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,eAAe;;IAGzD,IAAI,gBAAgB,CAAC,GAAY,EAAA;QAC/B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;;wGARzE,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,iFCbpC,knBAiBA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDJa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,knBAAA,EAAA,MAAA,EAAA,CAAA,+nBAAA,CAAA,EAAA;;;ME4DN,eAAe,CAAA;IAC1B,OAAO,OAAO,CAAC,MAA0B,EAAA;QACvC,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;SACvF;;wGALQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBApCxB,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,gBAAgB;YAChB,oBAAoB;YACpB,uBAAuB;AACvB,YAAA,wBAAwB,aAGxB,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,YAAY;YACZ,SAAS;YACT,SAAS;YACT,SAAS;YACT,YAAY;AACZ,YAAA,aAAa,aAKb,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,gBAAgB;YAChB,oBAAoB;YACpB,uBAAuB;YACvB,wBAAwB,CAAA,EAAA,CAAA;AAGf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAbf,SAAA,EAAA,CAAC,cAAc,CAAC,YAbzB,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,YAAY;YACZ,SAAS;YACT,SAAS;YAET,YAAY;YACZ,aAAa,CAAA,EAAA,CAAA;;4FAeJ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtC3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;wBACtB,gBAAgB;wBAChB,oBAAoB;wBACpB,uBAAuB;wBACvB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,YAAY;wBACZ,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,YAAY;wBACZ,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,YAAY;wBACZ,aAAa;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;wBACtB,gBAAgB;wBAChB,oBAAoB;wBACpB,uBAAuB;wBACvB,wBAAwB;AACzB,qBAAA;AACF,iBAAA;;;MCxCY,qBAAqB,CAAA;AACxB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,cAAc,GAAwB,IAAI;IACzC,WAAW,GAAG,GAAG;AACjB,IAAA,MAAM;;AAGN,IAAA,eAAe,GAAuC;AAC7D,QAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AAC1B,QAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AAC1B,QAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;KAC3B;IAED,UAAU,GAAG,KAAK,CAAa;AAC7B,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,OAAO,EAAE,EAAE;AACZ,KAAA,CAAC;AAEF,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,CAAC;AAC9B,IAAA,cAAc,GAAG,KAAK,CAAC,kBAAkB,CAAC;AAC1C,IAAA,kBAAkB,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC7C,IAAA,cAAc,GAAG,KAAK,CAAC,wBAAwB,CAAC;AAChD,IAAA,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;AAC5B,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;;IAGnC,SAAS,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAElD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;AACrD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;IACrD,iBAAiB,GAAG,MAAM,CAAS,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;IAC7D,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;AAEvF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO;AACtC,QAAA,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AAC7C,KAAC,CAAC;AAEF,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7B,KAAC,CAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;QAErD,MAAM,CAAC,MAAK;YACV,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO;AAChD,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,cAAc,EAAE;AAC/C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;;AAE9C,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvD,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;;AAE9D,SAAC,CAAC;;IAGJ,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;;;IAIrD,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC;AACvD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;;IAIxB,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAK;YACzB,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;;AAGxD,IAAA,YAAY,CAAC,IAAqB,EAAA;AAChC,QAAA,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI;AACvE,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC7F,YAAA,MAAM,YAAY,GAAG;gBACnB,GAAG,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,EAAE,UAAU;aACjB;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;;;IAIrC,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;;;IAI9C,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE;YAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;;;IAI9C,gBAAgB,GAAA;AACd,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC5C,QAAA,MAAM,YAAY,GAAG;YACnB,GAAG,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,IAAI,EAAE,CAAC;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;;AAGnC;;;;AAIG;IACH,eAAe,CAAC,GAAW,EAAE,KAAa,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEvD,QAAA,IAAI,KAAK,KAAK,EAAE,EAAE;;AAEhB,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;;aACvB;;YAEL,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;AAGlC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;;wGA/I5C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,uhDC9BlC,m9FA4EA,EAAA,MAAA,EAAA,CAAA,yjDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhDY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,yvBAAE,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAEtC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EAGjB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,m9FAAA,EAAA,MAAA,EAAA,CAAA,yjDAAA,CAAA,EAAA;wDAKzC,WAAW,EAAA,CAAA;sBAAnB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAGQ,eAAe,EAAA,CAAA;sBAAvB;;;ME7BU,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAlB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA;AAEpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,qBAAqB,CAAA,EAAA,CAAA;;4FAGpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;ACDY,MAAA,gBAAgB,GAAe;AAC1C,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,OAAO,EAAE,EAAE;;;ACqCA,MAAA,oBAAoB,GAAkB;AACjD,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,MAAM,EAAE,EAAE;;IAGA;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;;MC1CY,aAAa,CAAA;AACJ,IAAA,KAAA;AAA+B,IAAA,KAAA;IAAnD,WAAoB,CAAA,KAAqB,EAAU,KAAiB,EAAA;QAAhD,IAAK,CAAA,KAAA,GAAL,KAAK;QAA0B,IAAK,CAAA,KAAA,GAAL,KAAK;;AAExD,IAAA,2BAA2B,CAAC,aAA4B,EAAA;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW;AACnD,QAAA,MAAM,cAAc,GAAG,EAAE,GAAG,aAAa,EAAE;AAC3C,QAAA,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1B,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC3D,gBAAA,IAAI,eAAe;AACnB,gBAAA,IAAI,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,aAAa,IAAI,EAAE;AAChF,gBAAA,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;oBAClC,eAAe,GAAG,EAAoB;AACtC,oBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3D,wBAAA,eAAe,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;oBAEhI,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,aAAa,EAAE;AAC5C,wBAAA,eAAe,GAAG,EAAE,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;;oBAEpE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;wBACnC,aAAa,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;;gBAI5D,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,aAAa,EAAE,aAAa;AAC5B,oBAAA,cAAc,EAAE,eAAe;iBAChC;AACH,aAAC,CAAC;;QAEJ,IAAI,WAAW,CAAC,aAAa,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,SAAS,EAAE;YACzE,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,gBAAgB,IAAI,QAAQ,CAAC;;QAEjF,IAAI,WAAW,CAAC,aAAa,CAAC,kBAAkB,IAAI,UAAU,CAAC,KAAK,SAAS,EAAE;YAC7E,cAAc,CAAC,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,kBAAkB,IAAI,UAAU,CAAC;;QAEvF,IAAI,WAAW,CAAC,aAAa,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,SAAS,EAAE;YACzE,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,gBAAgB,IAAI,QAAQ,CAAC;;AAGjF,QAAA,OAAO,cAAc;;AAGvB,IAAA,cAAc,CAAI,IAAyB,EAAA;QACzC,MAAM,MAAM,GAAQ,EAAE;AACtB,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrD,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK;;AAEhD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI;;QAE5C,MAAM,OAAO,GAA8B,EAAE;;QAG7C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,IAAI,CAAC,GAAG,EAAE;YACjC,MAAM;YACN,OAAO;AACR,SAAA,CAAC;;AAGJ,IAAA,gBAAgB,CAAC,IAAuG,EAAA;QACtH,OAAO;YACL,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAe,KAAI;gBAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE;oBAChD,OAAO;AACL,wBAAA,GAAG,MAAM;wBACT,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO;wBACjF,eAAe,EAAE,IAAI,CAAC,IAAI;wBAC1B,kBAAkB,EAAE,MAAM,CAAC;AACzB,8BAAE;gCACE,GAAG,MAAM,CAAC,kBAAkB;gCAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC;AAC/C,gCAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC/B;AACH,8BAAE,SAAS;qBACd;;AAEH,gBAAA,OAAO,MAAM;AACf,aAAC,CAAC;SACH;;wGAlFQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC8DY,uBAAuB,CAAA;AACjB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACjC,IAAA,WAAW;IACvB,WAAW,GAAG,GAAG;AAEjB,IAAA,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;AAC7B,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAA,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC;;AAEtC,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAClD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;AAC/B,KAAC,CAAC;AACO,IAAA,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC/C,IAAA,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAC3C,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;AACxB,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;AAChC,IAAA,UAAU,GAAG,KAAK,CAAS,UAAU,CAAC;IAE/C,UAAU,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACjD,IAAA,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC;IACtC,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC;AACvC,IAAA,UAAU,GAAG,KAAK,CAAoC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC/E,IAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAiB;AAChD,IAAA,SAAS,GAAG,YAAY,CAAgB,MAAK;AAC3C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;QAC3C,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;AAE3E,QAAA,OAAO,IAAI;AACb,KAAC,CAAC;AACF,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;IAClC,QAAQ,GAAG,YAAY,CAAgB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AACnE,IAAA,eAAe,GAAG,MAAM,CAAgB,IAAI,CAAC;AAC7C,IAAA,QAAQ,GAAG,MAAM,CAAc,IAAI,CAAC;IAE5B,cAAc,GAAwB,IAAI;AAC1C,IAAA,oBAAoB,GAAqB,IAAI,GAAG,EAAe;AAC9D,IAAA,gBAAgB,GAAG;AAC1B,QAAA,IAAI,EAAE;AACJ,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA;KACF;AACQ,IAAA,gBAAgB,GAAG;AAC1B,QAAA,IAAI,EAAE;AACJ,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA;KACF;AACQ,IAAA,iBAAiB,GAAG;AAC3B,QAAA,IAAI,EAAE;AACJ,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA;KACF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;;;IAIrD,eAAe,GAAA;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;AACtD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;;IAG1B,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAK;YACzB,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;;IAGxD,uBAAuB,GAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAA,OAAO,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,MAAM,EAAE;;AAElC,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE;;AAG5B,IAAA,eAAe,CAAC,IAAiB,EAAA;QACvC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;;AAGX,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACtD,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,GAAG,EAAE;;IAGlC,IAAyB,iBAAiB,CAAC,OAAmB,EAAA;QAC5D,IAAI,OAAO,EAAE;AACX,YAAA,SAAS,CAAgB,OAAO,CAAC,aAAa,EAAE,OAAO;iBACpD,IAAI,CACH,GAAG,CAAC,CAAC,CAAgB,KAAM,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC,EAC/D,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE;AAEvB,iBAAA,SAAS,CAAC,CAAC,IAAY,KAAI;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;oBAC7B,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;AAE9C,aAAC,CAAC;;;AAIR,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,MAAM,IAAI,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;YACrD,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;;;IAIpD,sBAAsB,CAAC,UAAkB,EAAE,aAA2B,EAAA;AACpE,QAAA,MAAM,KAAK,GAAG,aAAa,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACvF,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,KAAK,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;QAC/I,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;IAGvD,cAAc,CAAC,UAAkB,EAAE,YAAmC,EAAA;AACpE,QAAA,MAAM,KAAK,GAAG,YAAY,EAAE,EAAE;AAC9B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,KAAK,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;QAC/I,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;AAGvD,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC;;AAG/C,IAAA,iBAAiB,CAAC,YAA2B,EAAA;;AAE3C,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG9B,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;;AAEzD,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBACvD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC3C,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;gBAChC;;;AAIF,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;YAExD;;;QAIF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;QAGzC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5B,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE;AAC3C,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,4DAA4D,CAAC;;YAEtF;;;AAIF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;QAChC,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC5C,IAAI,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;;IAGhD,YAAY,CAAC,UAAkB,EAAE,IAAU,EAAA;AACzC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;QAC9I,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;IAGvD,iBAAiB,GAAA;QACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;IAG1C,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;;AAGtB,IAAA,mBAAmB,CAAC,OAA+B,EAAA;AACzD,QAAA,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE;AAC3D,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjE,QAAA;AACE,YAAA,IAAI,CAAC,cAAc,EAAE,EAAE,gBAAgB,IAAI,QAAQ;AACnD,YAAA,IAAI,CAAC,cAAc,EAAE,EAAE,kBAAkB,IAAI,UAAU;AACvD,YAAA,IAAI,CAAC,cAAc,EAAE,EAAE,gBAAgB,IAAI,QAAQ;AACpD,SAAA,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;YACnC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC,YAAA,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE;gBACvF,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AAC9B,oBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAG,CAAC,CAAC,aAAsB,CAAC,WAAW,EAAE,CAAC;;qBACtE;AACL,oBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAuB,CAAC;;;AAGnE,SAAC,CAAC;AACF,QAAA,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;AACnC,YAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,gBAAgB,IAAI,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC;;QAEpG,IAAI,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACxD,YAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,kBAAkB,IAAI,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC;AACxG,YAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,gBAAgB,IAAI,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC;;AAEpG,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;;;IAI/E,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;;AAE3C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAG;AACrD,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;AAC5D,SAAC,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AACxF,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;QACxC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;SAC3B,EAAE,GAAG,CAAC;;IAGT,eAAe,GAAG,CAAC,MAAe,KAAK,CAAC,KAAU,KAAI;AACpD,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;AACtB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACjC;;QAGF,IAAI,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,IAAI,MAAM,CAAC,kBAAkB,EAAE;gBACrE,IAAI,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,IAAI,CAAC;;;AAG7I,KAAC;IAED,YAAY,CAAC,MAAe,EAAE,IAAY,EAAA;AACxC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;QACnD,IAAI,QAAQ,EAAE;YACZ,YAAY,CAAC,QAAQ,CAAC;;AAExB,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAK;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CACtB,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,GAAG,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EACpH,IAAI,EACJ,KAAK,CACN;AACD,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC;SACtC,EAAE,GAAG,CAAC;QACP,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;AAG3C,IAAA,mBAAmB,CAAC,MAAe,EAAE,IAAY,EAAE,MAAe,EAAA;AAChE,QAAA,IAAI,MAAM,CAAC,kBAAkB,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;;AAEvG,gBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,EAAE;AACrC,oBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACpC,wBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACvB,wBAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;AACpB,qBAAA,CAAC,CAAC;;gBAEL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;oBACrC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,IAAI,MAAM,CAAC,EAAE;AACzH,iBAAC,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC/H,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC1B,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;iBACvC,EAAE,GAAG,CAAC;AACT,aAAC,CAAC;;;AAIN,IAAA,cAAc,CAAC,MAAe,EAAA;AAC5B,QAAA,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE;AACzE,YAAA,OAAO,IAAI;;AAEb,QAAA,MAAM,EAAE,GAAI,MAAM,CAAC,cAA+B,CAAC,EAAE;AACrD,QAAA,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;;AAGrD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,UAAU;;wGA5TR,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAbvB,EAAE,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjEf,0sQA0NA,EAAA,MAAA,EAAA,CAAA,g6HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpKI,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAM,yYACN,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAMF,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,QAAQ,EAAE;gBAChB,UAAU,CAAC,QAAQ,EAAE;oBACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;AACrD,oBAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;iBAC5E,CAAC;aACH,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA5BnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,iBAAiB;wBACjB,MAAM;wBACN,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,YAAY;AACb,qBAAA,EAAA,SAAA,EACU,EAAE,EAAA,eAAA,EAGI,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA;wBACV,OAAO,CAAC,QAAQ,EAAE;4BAChB,UAAU,CAAC,QAAQ,EAAE;gCACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;AACrD,gCAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;6BAC5E,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,0sQAAA,EAAA,MAAA,EAAA,CAAA,g6HAAA,CAAA,EAAA;8BAKoB,WAAW,EAAA,CAAA;sBAA/B,SAAS;uBAAC,QAAQ;gBACV,WAAW,EAAA,CAAA;sBAAnB;gBAoGwB,iBAAiB,EAAA,CAAA;sBAAzC,SAAS;uBAAC,QAAQ;;;ME9KR,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA;AAEtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,uBAAuB,CAAA,EAAA,CAAA;;4FAGtB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA;;;ACPD;;AAEG;;;;"}