{"version":3,"file":"volo-abp.ng.account-public.mjs","sources":["../../../../packages/account/public/src/services/recovery-code.service.ts","../../../../packages/account/public/src/services/security-code.service.ts","../../../../packages/account/public/src/guards/authentication-flow.guard.ts","../../../../packages/account/public/src/services/url-component-encoder.ts","../../../../packages/account/public/src/services/account.service.ts","../../../../packages/account/public/src/services/manage-profile-state.service.ts","../../../../packages/account/public/src/strategies/recaptcha.strategy.ts","../../../../packages/account/public/src/services/recaptcha.service.ts","../../../../packages/account/public/src/services/change-password.service.ts","../../../../packages/account/public/src/services/two-factor-tab.service.ts","../../../../packages/account/public/src/services/password-complexity-indicator.service.ts","../../../../packages/account/public/src/services/authenticator-app.service.ts","../../../../packages/account/public/src/services/confirm-user.service.ts","../../../../packages/account/public/src/guards/confirm-user.guard.ts","../../../../packages/account/public/src/defaults/default-my-security-logs-entity-actions.ts","../../../../packages/account/public/src/components/my-security-logs/my-security-logs.component.ts","../../../../packages/account/public/src/components/my-security-logs/my-security-logs.component.html","../../../../packages/account/public/src/defaults/default-my-security-logs-entity-props.ts","../../../../packages/account/public/src/defaults/default-my-security-logs-toolbar-actions.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings-half-row/personal-settings-half-row.component.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings-verify-button/personal-settings-verify-button.component.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings-verify-button/personal-settings-verify-button.component.html","../../../../packages/account/public/src/components/personal-settings/personal-settings-email/personal-settings-email.component.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings-email/personal-settings-email.component.html","../../../../packages/account/public/src/components/personal-settings/personal-settings-phone-number/personal-settings-phone-number.component.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings-phone-number/personal-settings-phone-number.component.html","../../../../packages/account/public/src/components/password-complexity-indicator/password-complexity-indicator.component.ts","../../../../packages/account/public/src/components/change-password/change-password.component.ts","../../../../packages/account/public/src/components/change-password/change-password.component.html","../../../../packages/account/public/src/components/email-confirmation/email-confirmation.component.ts","../../../../packages/account/public/src/components/forgot-password/forgot-password.component.ts","../../../../packages/account/public/src/components/forgot-password/forgot-password.component.html","../../../../packages/account/public/src/tokens/config-options.token.ts","../../../../packages/account/public/src/utils/auth-utils.ts","../../../../packages/account/public/src/components/link-logged/link-logged.component.ts","../../../../packages/account/public/src/components/login-with-recovery-code/login-with-recovery-code.component.ts","../../../../packages/account/public/src/components/login-with-recovery-code/login-with-recovery-code.component.html","../../../../packages/account/public/src/enums/handled-error-exceptions.ts","../../../../packages/account/public/src/components/login/login.component.ts","../../../../packages/account/public/src/components/login/login.component.html","../../../../packages/account/public/src/components/manage-profile/manage-profile.component.ts","../../../../packages/account/public/src/components/manage-profile/manage-profile.component.html","../../../../packages/account/public/src/components/personal-settings/personal-settings.component.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings.component.html","../../../../packages/account/public/src/components/profile-picture/profile-picture.component.ts","../../../../packages/account/public/src/components/profile-picture/profile-picture.component.html","../../../../packages/account/public/src/components/register/register.component.ts","../../../../packages/account/public/src/components/register/register.component.html","../../../../packages/account/public/src/components/reset-password/reset-password.component.ts","../../../../packages/account/public/src/components/reset-password/reset-password.component.html","../../../../packages/account/public/src/components/send-securiy-code/send-security-code.component.ts","../../../../packages/account/public/src/components/send-securiy-code/send-security-code.component.html","../../../../packages/account/public/src/components/personal-settings/personal-settings-timezone/personal-settings-timezone.component.ts","../../../../packages/account/public/src/components/personal-settings/personal-settings-timezone/personal-settings-timezone.component.html","../../../../packages/account/public/src/components/refresh-password/refresh-password.component.ts","../../../../packages/account/public/src/components/refresh-password/refresh-password.component.html","../../../../packages/account/public/src/components/qr-code/qr-code.component.ts","../../../../packages/account/public/src/components/authenticator-app/authenticator-app.component.ts","../../../../packages/account/public/src/components/authenticator-app/authenticator-app.component.html","../../../../packages/account/public/src/components/two-factor-tab/two-factor-tab.component.ts","../../../../packages/account/public/src/components/two-factor-tab/two-factor-tab.component.html","../../../../packages/account/public/src/components/account-sessions/account-session-detail-modal/account-session-detail.component.ts","../../../../packages/account/public/src/components/account-sessions/account-session-detail-modal/account-session-detail.component.html","../../../../packages/account/public/src/components/account-sessions/account-sessions.component.ts","../../../../packages/account/public/src/components/account-sessions/account-sessions.component.html","../../../../packages/account/public/src/components/confirm-user/confirm-user.component.ts","../../../../packages/account/public/src/components/confirm-user/confirm-user.component.html","../../../../packages/account/public/src/defaults/default-personal-settings-form-props.ts","../../../../packages/account/public/src/tokens/extensions.token.ts","../../../../packages/account/public/src/guards/extensions.guard.ts","../../../../packages/account/public/src/guards/security-code.guard.ts","../../../../packages/account/public/src/guards/recovery-code.guard.ts","../../../../packages/account/public/src/resolvers/extensions.resolver.ts","../../../../packages/account/public/src/resolvers/manage-profile.resolver.ts","../../../../packages/account/public/src/account-public-routing.module.ts","../../../../packages/account/public/src/utils/factory-utils.ts","../../../../packages/account/public/src/account-public.module.ts","../../../../packages/account/public/src/tokens/re-login-confirmation.token.ts","../../../../packages/account/public/src/account-public.routes.ts","../../../../packages/account/public/src/volo-abp.ng.account-public.ts"],"sourcesContent":["import { Injectable, Injector, computed, inject, signal } from '@angular/core';\r\nimport { catchError, from, throwError } from 'rxjs';\r\nimport { AuthService, PIPE_TO_LOGIN_FN_KEY, PipeToLoginFn } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { RecoveryCodeData } from '../models';\r\n\r\n@Injectable()\r\nexport class RecoveryCodeService {\r\n  private readonly pipeToLogin? = inject<PipeToLoginFn>(PIPE_TO_LOGIN_FN_KEY);\r\n\r\n  protected readonly injector = inject(Injector);\r\n  protected readonly authService = inject(AuthService);\r\n  protected readonly toaster = inject(ToasterService);\r\n\r\n  data = signal<RecoveryCodeData>(null);\r\n  hasData = computed(() => !!this.data());\r\n\r\n  login(recoveryCode: string) {\r\n    const { username, password, redirectUrl, rememberMe } = this.data();\r\n\r\n    const grantType = 'password';\r\n    const params = {\r\n      username,\r\n      password,\r\n      RecoveryCode: recoveryCode,\r\n    };\r\n\r\n    const result = this.authService.loginUsingGrant(grantType, params);\r\n\r\n    return from(result).pipe(\r\n      this.pipeToLogin && this.pipeToLogin({ redirectUrl, rememberMe }, this.injector),\r\n      catchError(err => {\r\n        this.toaster.error(\r\n          err.error?.error_description ||\r\n            err.error?.error.message ||\r\n            'AbpAccount::DefaultErrorMessage',\r\n          null,\r\n          { life: 7000 },\r\n        );\r\n        return throwError(() => err);\r\n      }),\r\n    );\r\n  }\r\n}\r\n","import { LoginParams, PipeToLoginFn, PIPE_TO_LOGIN_FN_KEY, AuthService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { Injectable, Injector, inject } from '@angular/core';\r\nimport { throwError, from } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nexport interface SecurityCodeData extends LoginParams {\r\n  userId: string;\r\n  twoFactorToken: string;\r\n}\r\n\r\n@Injectable()\r\nexport class SecurityCodeService {\r\n  private injector = inject(Injector);\r\n  private toaster = inject(ToasterService);\r\n  private authService = inject(AuthService);\r\n\r\n  data: SecurityCodeData;\r\n  private pipeToLogin?: PipeToLoginFn;\r\n\r\n  constructor() {\r\n    this.pipeToLogin = this.injector.get(PIPE_TO_LOGIN_FN_KEY);\r\n  }\r\n\r\n  login(twoFactor: { provider: string; code: string }) {\r\n    const { username, password } = this.data;\r\n\r\n    const grantType = 'password';\r\n    const params = {\r\n      username,\r\n      password,\r\n      TwoFactorProvider: twoFactor.provider,\r\n      TwoFactorCode: twoFactor.code,\r\n    };\r\n\r\n    const result = this.authService.loginUsingGrant(grantType, params);\r\n\r\n    return from(result).pipe(\r\n      this.pipeToLogin &&\r\n        this.pipeToLogin(\r\n          { redirectUrl: this.data.redirectUrl, rememberMe: this.data.rememberMe },\r\n          this.injector,\r\n        ),\r\n      catchError(err => {\r\n        this.toaster.error(\r\n          err.error?.error_description ||\r\n            err.error?.error.message ||\r\n            'AbpAccount::DefaultErrorMessage',\r\n          null,\r\n          { life: 7000 },\r\n        );\r\n        return throwError(() => err);\r\n      }),\r\n    );\r\n  }\r\n}\r\n","import { AuthService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n/**\r\n * @deprecated Use `authenticationFlowGuard` *function* instead.\r\n */\r\n@Injectable()\r\nexport class AuthenticationFlowGuard {\r\n  private authService = inject(AuthService);\r\n\r\n\r\n  canActivate() {\r\n    if (this.authService.isInternalAuth) return true;\r\n\r\n    this.authService.navigateToLogin();\r\n    return false;\r\n  }\r\n}\r\n\r\nexport const authenticationFlowGuard = () => {\r\n  const authService = inject(AuthService);\r\n\r\n  if (authService.isInternalAuth) return true;\r\n\r\n  authService.navigateToLogin();\r\n  return false;\r\n};","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\nexport class UrlComponentEncoder implements HttpParameterCodec {\r\n  encodeKey(key: string): string {\r\n    return encodeURIComponent(key);\r\n  }\r\n\r\n  encodeValue(value: string): string {\r\n    return encodeURIComponent(value);\r\n  }\r\n\r\n  decodeKey(key: string): string {\r\n    return decodeURIComponent(key);\r\n  }\r\n\r\n  decodeValue(value: string): string {\r\n    return decodeURIComponent(value);\r\n  }\r\n}\r\n","import { PagedResultDto, RestService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport {\r\n  IdentitySecurityLogDto,\r\n  IdentitySecurityLogGetListInput,\r\n} from '@volo/abp.commercial.ng.ui/config';\r\nimport { Observable } from 'rxjs';\r\nimport type {\r\n  ConfirmEmailInput,\r\n  ConfirmPhoneNumberInput,\r\n  GetTwoFactorProvidersInput,\r\n  IFormFile,\r\n  ProfilePictureInput,\r\n  ProfilePictureSourceDto,\r\n  RegisterDto,\r\n  ResetPasswordDto,\r\n  SendEmailConfirmationTokenDto,\r\n  SendPasswordResetCodeDto,\r\n  SendPhoneNumberConfirmationTokenDto,\r\n  SendTwoFactorCodeInput,\r\n} from '../models/account';\r\nimport { UrlComponentEncoder } from './url-component-encoder';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AccountService {\r\n  private restService = inject(RestService);\r\n\r\n  apiName = 'AbpAccountPublic';\r\n\r\n  confirmEmail = (input: ConfirmEmailInput) =>\r\n    this.restService.request<any, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/confirm-email`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  confirmPhoneNumber = (input: ConfirmPhoneNumberInput) =>\r\n    this.restService.request<any, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/confirm-phone-number`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  getProfilePicture = (id: string) =>\r\n    this.restService.request<any, ProfilePictureSourceDto>(\r\n      {\r\n        method: 'GET',\r\n        url: `/api/account/profile-picture/${id}`,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  getProfilePictureFile = (id: string) =>\r\n    this.restService.request<any, any>(\r\n      {\r\n        method: 'GET',\r\n        url: `/api/account/profile-picture-file/${id}`,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  register = (input: RegisterDto) =>\r\n    this.restService.request<any, any>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/register`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  resetPassword = (input: ResetPasswordDto) =>\r\n    this.restService.request<any, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/reset-password`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  sendEmailConfirmationToken = (input: SendEmailConfirmationTokenDto) =>\r\n    this.restService.request<SendEmailConfirmationTokenDto, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/send-email-confirmation-token`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  sendPasswordResetCode = (input: SendPasswordResetCodeDto) =>\r\n    this.restService.request<any, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/send-password-reset-code`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  sendPhoneNumberConfirmationToken = (input: SendPhoneNumberConfirmationTokenDto) =>\r\n    this.restService.request<SendPhoneNumberConfirmationTokenDto, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/send-phone-number-confirmation-token`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  setProfilePicture = (input: ProfilePictureInput) =>\r\n    this.restService.request<any, void>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/profile-picture`,\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  uploadProfilePictureFile = (image: IFormFile) =>\r\n    this.restService.request<any, any>(\r\n      {\r\n        method: 'POST',\r\n        url: `/api/account/profile-picture-file`,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  getMySecurityLogsByInput(\r\n    params = {} as Partial<IdentitySecurityLogGetListInput>,\r\n  ): Observable<PagedResultDto<IdentitySecurityLogDto>> {\r\n    return this.restService.request(\r\n      { url: '/api/identity/security-logs/my', method: 'GET', params },\r\n      { apiName: this.apiName },\r\n    );\r\n  }\r\n\r\n  recaptchaByCaptchaResponse = (captchaResponse: string) =>\r\n    this.restService.request<any, void>(\r\n      {\r\n        method: 'GET',\r\n        url: '/api/account/recaptcha-validate',\r\n        params: { captchaResponse },\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n\r\n  getTwoFactorProviders = (input: GetTwoFactorProvidersInput) => {\r\n    // related angular issue for encoder https://github.com/angular/angular/issues/11058\r\n    return this.restService.request<void, string[]>(\r\n      {\r\n        url: '/api/account/two-factor-providers',\r\n        method: 'GET',\r\n        params: input,\r\n      },\r\n      { apiName: this.apiName, httpParamEncoder: new UrlComponentEncoder() },\r\n    );\r\n  };\r\n\r\n  sendTwoFactorCode = (input: SendTwoFactorCodeInput) => {\r\n    return this.restService.request<SendTwoFactorCodeInput, void>(\r\n      {\r\n        url: '/api/account/send-two-factor-code',\r\n        method: 'POST',\r\n        body: input,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n  };\r\n}\r\n","import { InternalStore } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport { ProfileDto } from '@volo/abp.ng.account/public/proxy';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface ManageProfileState {\r\n  profile: ProfileDto;\r\n  hideEmailVerificationBtn: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ManageProfileStateService {\r\n  private readonly store = new InternalStore({} as ManageProfileState);\r\n\r\n  get createStateStream() {\r\n    return this.store.sliceState;\r\n  }\r\n\r\n  getProfile$(): Observable<ProfileDto> {\r\n    return this.store.sliceState(state => state.profile);\r\n  }\r\n\r\n  getProfile(): ProfileDto {\r\n    return this.store.state.profile;\r\n  }\r\n\r\n  setProfile(profile: ProfileDto) {\r\n    this.store.patch({ profile });\r\n  }\r\n\r\n  setHideEmailVerificationBtn(hideEmailVerificationBtn: boolean) {\r\n    this.store.patch({ hideEmailVerificationBtn });\r\n  }\r\n}\r\n","import { ConfigStateService, LazyLoadService, LOADING_STRATEGY } from '@abp/ng.core';\r\nimport { DOCUMENT, inject, Injector, NgZone } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\n\r\ndeclare const grecaptcha: any;\r\n\r\ntype WindowWithRecaptchaV2 = Window & { recaptchaV2Loaded?: () => void };\r\n\r\nexport abstract class RecaptchaPageStrategy {\r\n  abstract action: string;\r\n  abstract settingKey: string;\r\n  protected configState: ConfigStateService;\r\n  targetElement: HTMLElement;\r\n  isEnabled: boolean;\r\n\r\n  constructor(configState: ConfigStateService, targetElement: HTMLElement) {\r\n    this.configState = configState;\r\n    this.targetElement = targetElement;\r\n  }\r\n\r\n  protected setIsEnabled() {\r\n    this.isEnabled = (this.configState.getSetting(this.settingKey) || '').toLowerCase() === 'true';\r\n  }\r\n}\r\n\r\nexport class RecaptchaLoginStrategy extends RecaptchaPageStrategy {\r\n  action = 'login';\r\n  settingKey = 'Abp.Account.Captcha.UseCaptchaOnLogin';\r\n\r\n  constructor(configState: ConfigStateService, targetElement: HTMLElement) {\r\n    super(configState, targetElement);\r\n    this.setIsEnabled();\r\n  }\r\n}\r\n\r\nexport class RecaptchaRegisterStrategy extends RecaptchaPageStrategy {\r\n  action = 'register';\r\n  settingKey = 'Abp.Account.Captcha.UseCaptchaOnRegistration';\r\n\r\n  constructor(configState: ConfigStateService, targetElement: HTMLElement) {\r\n    super(configState, targetElement);\r\n    this.setIsEnabled();\r\n  }\r\n}\r\n\r\nexport const RECAPTCHA_STRATEGY = {\r\n  Login(configState: ConfigStateService, targetElement: HTMLElement) {\r\n    return new RecaptchaLoginStrategy(configState, targetElement);\r\n  },\r\n  Register(configState: ConfigStateService, targetElement: HTMLElement) {\r\n    return new RecaptchaRegisterStrategy(configState, targetElement);\r\n  },\r\n};\r\n\r\nexport abstract class RecaptchaStrategy {\r\n  protected abstract scriptPath: string;\r\n  abstract getVerificationToken(): Observable<string>;\r\n  protected injector: Injector;\r\n  protected lazyLoadService: LazyLoadService;\r\n  protected configState: ConfigStateService;\r\n  protected insertedElement: ConfigStateService;\r\n\r\n  protected get cultureName() {\r\n    return this.configState.getAll().localization.currentCulture.cultureName;\r\n  }\r\n\r\n  protected get siteKey() {\r\n    return this.configState.getSetting('Abp.Account.Captcha.SiteKey');\r\n  }\r\n\r\n  protected get verifyBaseUrl() {\r\n    return this.configState.getSetting('Abp.Account.Captcha.VerifyBaseUrl');\r\n  }\r\n\r\n  constructor(injector: Injector) {\r\n    this.injector = injector;\r\n    this.lazyLoadService = injector.get(LazyLoadService);\r\n    this.configState = injector.get(ConfigStateService);\r\n    this.appendScript();\r\n  }\r\n\r\n  appendScript() {\r\n    this.lazyLoadService.load(LOADING_STRATEGY.AppendScriptToBody(this.scriptPath)).subscribe();\r\n  }\r\n\r\n  destroy() {\r\n    if (!this.scriptPath) return;\r\n    this.lazyLoadService.remove(this.scriptPath);\r\n  }\r\n\r\n  reset() {}\r\n}\r\n\r\nexport class RecaptchaV2Strategy extends RecaptchaStrategy {\r\n  targetElement: HTMLElement;\r\n  zone = this.injector.get(NgZone);\r\n  scriptPath: string;\r\n  protected token = new BehaviorSubject<string>(null);\r\n  document = inject(DOCUMENT);\r\n\r\n  constructor(injector: Injector, targetElement: HTMLElement) {\r\n    super(injector);\r\n    this.targetElement = targetElement;\r\n  }\r\n\r\n  appendScript() {\r\n    const window = this.document.defaultView as WindowWithRecaptchaV2 | null;\r\n    if (window) {\r\n      window.recaptchaV2Loaded = () => {\r\n        grecaptcha.render(this.targetElement, {\r\n          sitekey: this.siteKey,\r\n          'expired-callback': () => {\r\n            this.zone.run(() => this.token.next(null));\r\n          },\r\n          callback: response => this.token.next(response),\r\n        });\r\n      };\r\n    }\r\n\r\n    this.scriptPath = `${this.verifyBaseUrl}recaptcha/api.js?render=explicit&hl=${this.cultureName}&onload=recaptchaV2Loaded`;\r\n\r\n    super.appendScript();\r\n  }\r\n\r\n  reset() {\r\n    grecaptcha.reset();\r\n  }\r\n\r\n  getVerificationToken() {\r\n    return this.token.asObservable();\r\n  }\r\n}\r\n\r\nexport class RecaptchaV3Strategy extends RecaptchaStrategy {\r\n  action: string;\r\n  scriptPath: string;\r\n  document: Document = this.injector.get(DOCUMENT);\r\n\r\n  constructor(injector: Injector, action: string) {\r\n    super(injector);\r\n    this.action = action;\r\n  }\r\n\r\n  appendScript() {\r\n    this.scriptPath = `${this.verifyBaseUrl}recaptcha/api.js?hl=${this.cultureName}&render=${this.siteKey}`;\r\n\r\n    super.appendScript();\r\n  }\r\n\r\n  getVerificationToken(): Observable<string> {\r\n    try {\r\n      // tslint:disable-next-line\r\n      grecaptcha;\r\n    } catch (error) {\r\n      return of(null);\r\n    }\r\n\r\n    return new Observable(observer => {\r\n      grecaptcha.ready(() => {\r\n        grecaptcha.execute(this.siteKey, { action: this.action }).then(token => {\r\n          observer.next(token);\r\n        });\r\n      });\r\n    });\r\n  }\r\n\r\n  destroy() {\r\n    super.destroy();\r\n\r\n    const element = this.document.querySelector('.grecaptcha-badge');\r\n    element.parentElement.removeChild(element);\r\n  }\r\n}\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { mapTo, switchMap } from 'rxjs/operators';\r\nimport {\r\n  RecaptchaPageStrategy,\r\n  RecaptchaStrategy,\r\n  RecaptchaV2Strategy,\r\n  RecaptchaV3Strategy,\r\n} from '../strategies/recaptcha.strategy';\r\nimport { AccountService } from './account.service';\r\n\r\n@Injectable()\r\nexport class RecaptchaService implements OnDestroy {\r\n  protected injector = inject(Injector);\r\n  protected configState = inject(ConfigStateService);\r\n  protected accountService = inject(AccountService);\r\n\r\n  protected pageStrategy: RecaptchaPageStrategy;\r\n  protected strategy: RecaptchaStrategy;\r\n\r\n  get isEnabled(): boolean {\r\n    return this.pageStrategy.isEnabled;\r\n  }\r\n\r\n  protected get reCaptchaVersion() {\r\n    return this.configState.getSetting('Abp.Account.Captcha.Version');\r\n  }\r\n\r\n  setStrategy(strategy: RecaptchaPageStrategy) {\r\n    this.pageStrategy = strategy;\r\n    if (!this.pageStrategy.isEnabled) return;\r\n    this.init();\r\n  }\r\n\r\n  protected init() {\r\n    if (this.reCaptchaVersion === '2')\r\n      this.strategy = new RecaptchaV2Strategy(this.injector, this.pageStrategy.targetElement);\r\n    else if (this.reCaptchaVersion === '3') {\r\n      this.strategy = new RecaptchaV3Strategy(this.injector, this.pageStrategy.action);\r\n    }\r\n  }\r\n\r\n  validate(): Observable<any> {\r\n    return this.strategy\r\n      .getVerificationToken()\r\n      .pipe(\r\n        switchMap(token => this.accountService.recaptchaByCaptchaResponse(token).pipe(mapTo(true))),\r\n      );\r\n  }\r\n\r\n  getVerificationToken() {\r\n    return this.strategy.getVerificationToken();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (!this.pageStrategy.isEnabled) return;\r\n\r\n    this.strategy.destroy();\r\n  }\r\n\r\n  reset() {\r\n    if (!this.isEnabled) return;\r\n    this.strategy.reset();\r\n  }\r\n}\r\n","import { inject, Injectable, Injector } from '@angular/core';\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { from, Observable } from 'rxjs';\r\nimport { comparePasswords, Validation } from '@ngx-validate/core';\r\nimport { AuthService } from '@abp/ng.core';\r\nimport { getPasswordValidators, ToasterService } from '@abp/ng.theme.shared';\r\nimport { ChangePasswordInput, ProfileService } from '@volo/abp.ng.account/public/proxy';\r\nimport { ManageProfileStateService } from '../services/manage-profile-state.service';\r\n\r\nconst { required } = Validators;\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ChangePasswordService {\r\n  protected readonly manageProfileState = inject(ManageProfileStateService);\r\n  protected readonly fb = inject(FormBuilder);\r\n  protected readonly toasterService = inject(ToasterService);\r\n  protected readonly activatedRoute = inject(ActivatedRoute);\r\n  protected readonly router = inject(Router);\r\n  protected readonly profileService = inject(ProfileService);\r\n  protected readonly authService = inject(AuthService);\r\n\r\n  protected readonly toasterSuccessOption = {\r\n    message: 'AbpAccount::PasswordChangedMessage',\r\n    title: '',\r\n    options: { life: 5000 },\r\n  };\r\n\r\n  private legacyInjector = inject(Injector);\r\n  public readonly PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword'];\r\n\r\n  private getQueryParams() {\r\n    const { token, username } = this.activatedRoute.snapshot.queryParams;\r\n    return { token, username };\r\n  }\r\n\r\n  public readonly MapErrorsFnFactory: () => Validation.MapErrorsFn =\r\n    () => (errors, groupErrors, control) => {\r\n      if (this.PASSWORD_FIELDS.indexOf(String(control.name)) < 0) return errors;\r\n      return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));\r\n    };\r\n\r\n  get hasPassword() {\r\n    return !!this.manageProfileState.getProfile()?.hasPassword;\r\n  }\r\n\r\n  private get returnUrl() {\r\n    return this.activatedRoute.snapshot.queryParams.returnUrl;\r\n  }\r\n\r\n  buildForm(hideCurrentPassword: boolean = false) {\r\n    const passwordValidations = getPasswordValidators(this.legacyInjector);\r\n\r\n    const form = this.fb.group(\r\n      {\r\n        currentPassword: ['', required],\r\n        newPassword: [\r\n          '',\r\n          {\r\n            validators: [required, ...passwordValidations],\r\n          },\r\n        ],\r\n        repeatNewPassword: [\r\n          '',\r\n          {\r\n            validators: [required, ...passwordValidations],\r\n          },\r\n        ],\r\n      },\r\n      {\r\n        validators: [comparePasswords(this.PASSWORD_FIELDS)],\r\n      },\r\n    );\r\n    if (hideCurrentPassword) {\r\n      form.removeControl('currentPassword');\r\n    }\r\n\r\n    return form;\r\n  }\r\n\r\n  changePassword(formValue: ChangePasswordInput): Observable<any> {\r\n    return this.profileService.changePassword(formValue);\r\n  }\r\n\r\n  changePasswordAndLogin(formValue: ChangePasswordInput) {\r\n    const queryParams = this.getQueryParams();\r\n\r\n    const p = {\r\n      password: formValue.currentPassword,\r\n      NewPassword: formValue.newPassword,\r\n      username: queryParams.username,\r\n      ChangePasswordToken: queryParams.token,\r\n    };\r\n    return from(this.authService.loginUsingGrant('password', p));\r\n  }\r\n  redirectToReturnUrl() {\r\n    const url = this.returnUrl || '/';\r\n    return from(this.router.navigateByUrl(url));\r\n  }\r\n  public showSuccessMessage() {\r\n    const { message, title, options } = this.toasterSuccessOption;\r\n    this.toasterService.success(message, title, options);\r\n  }\r\n\r\n  public showErrorMessage(err: { error?: { error?: { message: string } } }) {\r\n    this.toasterService.error(err.error?.error?.message || 'AbpAccount::DefaultErrorMessage');\r\n  }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { AccountService, ProfileService } from '@volo/abp.ng.account/public/proxy';\r\n\r\n@Injectable()\r\nexport class TwoFactorTabService {\r\n  protected readonly accountService = inject(AccountService);\r\n  protected readonly profileService = inject(ProfileService);\r\n\r\n  get isTwoFactorEnabled$(): Observable<boolean> {\r\n    return this.profileService.getTwoFactorEnabled();\r\n  }\r\n\r\n  setTwoFactorStatus(status: boolean): Observable<void> {\r\n    return this.profileService.setTwoFactorEnabled(status);\r\n  }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ProgressBarStats } from '../models/password-complexity';\r\nexport interface RegexRequirementsModel {\r\n  minLengthRegex: RegExp;\r\n  numberRegex: RegExp;\r\n  lowercaseRegex: RegExp;\r\n  uppercaseRegex: RegExp;\r\n  specialCharacterRegex: RegExp;\r\n}\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class PasswordComplexityIndicatorService{\r\n  colors: string[] = ['#B0284B', '#F2A34F', '#5588A4', '#3E5CF6', '#6EBD70'];\r\n\r\n  texts: string[] = ['Weak', 'Fair', 'Normal', 'Good', 'Strong'];\r\n\r\n  requirements: RegexRequirementsModel = {\r\n    minLengthRegex: /(?=.{6,})/,                                        // Default min length 6\r\n    numberRegex: /(?=.*[0-9])/,                                         // Default isContain number\r\n    lowercaseRegex: /(?=.*[a-z ])/,                                     // Default isContainLowercase\r\n    uppercaseRegex: /(?=.*[A-Z])/,                                      // Default isContainUppercase\r\n    specialCharacterRegex: /[^a-zA-Z0-9 ]+/,                             // Default isContainSpecialCharacter\r\n  };\r\n\r\n  validatePassword(password: string): ProgressBarStats {\r\n    let passedCounter = 0;\r\n\r\n    Object.values(this.requirements).forEach((reg:RegExp)=>{\r\n      const isValid = reg.test(password);\r\n      \r\n      if(isValid){\r\n        passedCounter++;\r\n      }\r\n    })\r\n    return { bgColor:this.colors[passedCounter - 1], text:this.texts[passedCounter - 1], width: (100 / this.colors.length) * passedCounter };\r\n  }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { Observable } from 'rxjs';\r\nimport { AccountService, VerifyAuthenticatorCodeDto } from '@volo/abp.ng.account/public/proxy';\r\n\r\n@Injectable()\r\nexport class AuthenticatorAppService {\r\n  protected readonly accountService = inject(AccountService);\r\n\r\n  hasAuthenticator = toSignal(this.accountService.hasAuthenticator());\r\n  authenticatorInfo = toSignal(this.accountService.getAuthenticatorInfo());\r\n\r\n  resetAuthenticator(): Observable<void> {\r\n    return this.accountService.resetAuthenticator();\r\n  }\r\n\r\n  verifyAuthenticatorCode(code: string): Observable<VerifyAuthenticatorCodeDto> {\r\n    return this.accountService.verifyAuthenticatorCode({ code });\r\n  }\r\n}\r\n","import { Injectable, computed, inject, signal } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { combineLatest, interval, map, Subject, switchMap, takeUntil, tap } from 'rxjs';\r\n\r\nimport { ConfigStateService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { AccountService } from '@volo/abp.ng.account/public/proxy';\r\n\r\nimport { ConfirmUserParams } from '../models';\r\n\r\nexport const REQUIRE_EMAIL_SETTING_KEY = 'Abp.Identity.SignIn.RequireConfirmedEmail';\r\nexport const REQUIRE_PHONE_SETTING_KEY = 'Abp.Identity.SignIn.RequireConfirmedPhoneNumber';\r\n\r\n@Injectable()\r\nexport class ConfirmUserService {\r\n  protected readonly destroy = new Subject<void>();\r\n  protected readonly router = inject(Router);\r\n  protected readonly configService = inject(ConfigStateService);\r\n  protected readonly accountService = inject(AccountService);\r\n  protected readonly toasterService = inject(ToasterService);\r\n\r\n  readonly #data = signal<Partial<ConfirmUserParams>>({ email: { showButton: true } });\r\n\r\n  userId = computed(() => this.#data()?.userId);\r\n  email = computed(() => this.#data()?.email);\r\n  phone = computed(() => this.#data()?.phone);\r\n\r\n  protected isSettingTrueMap() {\r\n    return map(val => val === 'True');\r\n  }\r\n\r\n  confirmationStateRequest$() {\r\n    return this.accountService.getConfirmationState(this.userId());\r\n  }\r\n\r\n  initialize() {\r\n    const emailSetting$ = this.configService\r\n      .getSetting$(REQUIRE_EMAIL_SETTING_KEY)\r\n      .pipe(this.isSettingTrueMap());\r\n\r\n    const phoneSetting$ = this.configService\r\n      .getSetting$(REQUIRE_PHONE_SETTING_KEY)\r\n      .pipe(this.isSettingTrueMap());\r\n\r\n    const confirmationState$ = this.confirmationStateRequest$();\r\n\r\n    combineLatest([emailSetting$, phoneSetting$, confirmationState$]).subscribe(\r\n      ([emailSetting, phoneSetting, { emailConfirmed, phoneNumberConfirmed }]) => {\r\n        this.#data.update(prev => ({\r\n          ...prev,\r\n          email: {\r\n            ...prev.email,\r\n            requireSetting: emailSetting,\r\n            showButton: emailSetting && !emailConfirmed,\r\n            confirmed: emailConfirmed,\r\n          },\r\n          phone: {\r\n            ...prev.phone,\r\n            requireSetting: phoneSetting,\r\n            showButton: phoneSetting && !phoneNumberConfirmed,\r\n            confirmed: phoneNumberConfirmed,\r\n          },\r\n        }));\r\n      },\r\n    );\r\n  }\r\n\r\n  update(updateFn: (prev) => Partial<ConfirmUserParams>) {\r\n    this.#data.update(updateFn);\r\n  }\r\n\r\n  updateConfirmedState(emailConfirmed: boolean, phoneNumberConfirmed: boolean) {\r\n    this.#data.update(prev => ({\r\n      ...prev,\r\n      email: {\r\n        ...prev.email,\r\n        confirmed: emailConfirmed,\r\n      },\r\n      phone: {\r\n        ...prev.phone,\r\n        confirmed: phoneNumberConfirmed,\r\n      },\r\n    }));\r\n  }\r\n\r\n  validateUserId(): boolean {\r\n    if (!this.userId()) {\r\n      this.router.navigate(['/account/login']);\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  sendEmailConfirmation() {\r\n    const input = {\r\n      appName: 'Angular',\r\n      userId: this.userId(),\r\n    };\r\n\r\n    this.accountService.sendEmailConfirmationToken(input).subscribe(() => {\r\n      this.toasterService.success('AbpAccount::EmailConfirmationSentMessage', '', {\r\n        messageLocalizationParams: [this.#data().email.address],\r\n      });\r\n\r\n      this.#data.update(prev => ({ ...prev, email: { ...prev.email, showButton: false } }));\r\n    });\r\n\r\n    const interval$ = interval(3000).pipe(\r\n      switchMap(() => this.confirmationStateRequest$()),\r\n      tap(({ emailConfirmed, phoneNumberConfirmed }) => {\r\n        if (phoneNumberConfirmed && emailConfirmed) {\r\n          this.router.navigate(['/account/login']);\r\n        } else {\r\n          this.updateConfirmedState(emailConfirmed, phoneNumberConfirmed);\r\n        }\r\n\r\n        if (emailConfirmed) {\r\n          this.destroy.next();\r\n        }\r\n      }),\r\n      takeUntil(this.destroy),\r\n    );\r\n\r\n    interval$.subscribe();\r\n  }\r\n\r\n  sendPhoneConfirmation(phoneNumber: string) {\r\n    if (!phoneNumber) {\r\n      return;\r\n    }\r\n\r\n    const input = {\r\n      userId: this.userId(),\r\n      phoneNumber,\r\n    };\r\n\r\n    this.accountService.sendPhoneNumberConfirmationToken(input).subscribe();\r\n  }\r\n\r\n  verifyPhoneCode(token: string) {\r\n    this.accountService\r\n      .confirmPhoneNumber({\r\n        userId: this.userId(),\r\n        token,\r\n      })\r\n      .pipe(\r\n        switchMap(() => this.confirmationStateRequest$()),\r\n        tap(({ emailConfirmed, phoneNumberConfirmed }) =>\r\n          this.updateConfirmedState(emailConfirmed, phoneNumberConfirmed),\r\n        ),\r\n      )\r\n      .subscribe(({ emailConfirmed }) => {\r\n        if (emailConfirmed) {\r\n          this.router.navigate(['/account/login']);\r\n        }\r\n      });\r\n  }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { ConfirmUserService } from '../services';\r\n\r\nexport const confirmUserGuard = () => {\r\n  return inject(ConfirmUserService).validateUserId();\r\n};\r\n","import { IdentitySecurityLogDto } from '@volo/abp.commercial.ng.ui/config';\r\nimport { EntityAction } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_MY_SECURITY_LOGS_ENTITY_ACTIONS =\r\n  EntityAction.createMany<IdentitySecurityLogDto>([]);\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ListService, LocalizationPipe, PagedResultDto } from '@abp/ng.core';\r\nimport { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { DateAdapter } from '@abp/ng.theme.shared';\r\nimport { DatetimePickerComponent } from '@volo/abp.commercial.ng.ui';\r\nimport { AccountService, Volo } from '@volo/abp.ng.account/public/proxy';\r\nimport { eAccountComponents } from '../../enums/components';\r\n\r\n@Component({\r\n  selector: 'abp-my-security-logs',\r\n  templateUrl: './my-security-logs.component.html',\r\n  providers: [\r\n    ListService,\r\n    {\r\n      provide: EXTENSIONS_IDENTIFIER,\r\n      useValue: eAccountComponents.MySecurityLogs,\r\n    },\r\n    { provide: NgbDateAdapter, useClass: DateAdapter },\r\n    DatePipe,\r\n  ],\r\n  imports: [\r\n    FormsModule,\r\n    LocalizationPipe,\r\n    DatetimePickerComponent,\r\n    ExtensibleTableComponent,\r\n    PageComponent,\r\n  ],\r\n})\r\nexport class MySecurityLogsComponent implements OnInit {\r\n  protected readonly service = inject(AccountService);\r\n  public readonly list = inject(ListService);\r\n\r\n  data: PagedResultDto<Volo.Abp.Identity.IdentitySecurityLogDto> = { items: [], totalCount: 0 };\r\n\r\n  filter = {} as Partial<Volo.Abp.Identity.GetIdentitySecurityLogListInput>;\r\n\r\n  ngOnInit(): void {\r\n    this.hookToQuery();\r\n  }\r\n\r\n  private hookToQuery() {\r\n    this.list\r\n      .hookToQuery(query =>\r\n        this.service.getSecurityLogList({\r\n          ...query,\r\n          ...this.filter,\r\n        }),\r\n      )\r\n      .subscribe(res => (this.data = res));\r\n  }\r\n}\r\n","<div id=\"wrapper\">\r\n  <abp-page [title]=\"'AbpAccount::MySecurityLogs' | abpLocalization\" [toolbar]=\"data.items\">\r\n    <div class=\"card\">\r\n      <div class=\"card-body pb-lg-3\">\r\n        <div class=\"row align-items-end\" (keyup.enter)=\"list.get()\">\r\n          <div class=\"row\">\r\n            <div class=\"col-md-6 col-lg-3 col-xxl-3\">\r\n              <div class=\"mb-3\">\r\n                <label class=\"form-label\">{{ 'AbpAccount::StartTime' | abpLocalization }}</label>\r\n                <abp-datetime-picker\r\n                  [(ngModel)]=\"filter.startTime\"\r\n                  [ngModelOptions]=\"{ standalone: true }\"\r\n                ></abp-datetime-picker>\r\n              </div>\r\n            </div>\r\n\r\n            <div class=\"col-md-6 col-lg-3 col-xxl-3\">\r\n              <div class=\"mb-3\">\r\n                <label class=\"form-label\">{{ 'AbpAccount::EndTime' | abpLocalization }}</label>\r\n                <abp-datetime-picker\r\n                  [(ngModel)]=\"filter.endTime\"\r\n                  [ngModelOptions]=\"{ standalone: true }\"\r\n                ></abp-datetime-picker>\r\n              </div>\r\n            </div>\r\n\r\n            <div class=\"col-md-6 col-lg-3\">\r\n              <div class=\"mb-3\">\r\n                <label class=\"form-label\">{{\r\n                  'AbpAccount::MySecurityLogs:Action' | abpLocalization\r\n                }}</label>\r\n                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filter.action\" />\r\n              </div>\r\n            </div>\r\n            <div class=\"col-md-6 col-lg-3 col-xxl-3\">\r\n              <div class=\"mt-3 mb-lg-0 d-grid\">\r\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"list.get()\">\r\n                  <i class=\"fa fa-search me-1\"></i>\r\n                  <span>{{ 'AbpUi::Search' | abpLocalization }}</span>\r\n                </button>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <abp-extensible-table\r\n      [data]=\"data.items\"\r\n      [recordsTotal]=\"data.totalCount\"\r\n      [list]=\"list\"\r\n    ></abp-extensible-table>\r\n  </abp-page>\r\n</div>\r\n","import { getShortDateShortTimeFormat, ConfigStateService } from '@abp/ng.core';\r\nimport { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { DatePipe } from '@angular/common';\r\nimport { IdentitySecurityLogDto } from '@volo/abp.commercial.ng.ui/config';\r\nimport { of } from 'rxjs';\r\nimport { MySecurityLogsComponent } from '../components/my-security-logs/my-security-logs.component';\r\n\r\nexport const DEFAULT_MY_SECURITY_LOGS_ENTITY_PROPS = EntityProp.createMany<IdentitySecurityLogDto>([\r\n  {\r\n    type: ePropType.DateTime,\r\n    name: 'creationTime',\r\n    displayName: 'AbpAccount::MySecurityLogs:Time',\r\n    sortable: true,\r\n    columnWidth: 180,\r\n    valueResolver: data => {\r\n      const config = data.getInjected(ConfigStateService);\r\n      const datePipe = data.getInjected(DatePipe);\r\n\r\n      return of(datePipe.transform(data.record.creationTime, getShortDateShortTimeFormat(config)));\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'action',\r\n    displayName: 'AbpAccount::MySecurityLogs:Action',\r\n    sortable: true,\r\n    columnWidth: 180,\r\n    valueResolver: data => {\r\n      return of(\r\n        `<div style=\"max-width: 160px\" class=\"pointer abp-ellipsis-inline\">${\r\n          data.record.action || ''\r\n        }</div>`,\r\n      );\r\n    },\r\n    action: data => {\r\n      const component = data.getInjected(MySecurityLogsComponent);\r\n      component.filter.action = data.record.action;\r\n      component.list.get();\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'clientIpAddress',\r\n    displayName: 'AbpAccount::MySecurityLogs:IpAddress',\r\n    sortable: false,\r\n    columnWidth: 200,\r\n    valueResolver: data => {\r\n      return of(\r\n        `<div style=\"max-width: 180px\" class=\"abp-ellipsis-inline\">${\r\n          data.record.clientIpAddress || ''\r\n        }</div>`,\r\n      );\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'browserInfo',\r\n    displayName: 'AbpAccount::MySecurityLogs:Browser',\r\n    sortable: false,\r\n    columnWidth: 200,\r\n    valueResolver: data => {\r\n      return of(\r\n        `<div style=\"max-width: 180px\" class=\"abp-ellipsis-inline\">${\r\n          data.record.browserInfo || ''\r\n        }</div>`,\r\n      );\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'applicationName',\r\n    displayName: 'AbpAccount::MySecurityLogs:Application',\r\n    sortable: true,\r\n    columnWidth: 150,\r\n    valueResolver: data => {\r\n      return of(\r\n        `<div style=\"max-width: 135px\" class=\"abp-ellipsis-inline\">${\r\n          data.record.applicationName || ''\r\n        }</div>`,\r\n      );\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'identity',\r\n    displayName: 'AbpAccount::MySecurityLogs:Identity',\r\n    sortable: true,\r\n    columnWidth: 150,\r\n    valueResolver: data => {\r\n      return of(\r\n        `<div style=\"max-width: 135px\" class=\"abp-ellipsis-inline\">${\r\n          data.record.identity || ''\r\n        }</div>`,\r\n      );\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'clientId',\r\n    displayName: 'AbpAccount::MySecurityLogs:Client',\r\n    sortable: true,\r\n    columnWidth: 320,\r\n    valueResolver: data => {\r\n      return of(`<div>${data.record.clientId || ''}</div>`);\r\n    },\r\n  },\r\n]);\r\n","import { ToolbarAction } from '@abp/ng.components/extensible';\r\nimport { IdentitySecurityLogDto } from '@volo/abp.commercial.ng.ui/config';\r\n\r\nexport const DEFAULT_MY_SECURITY_LOGS_TOOLBAR_ACTIONS = ToolbarAction.createMany<\r\n  IdentitySecurityLogDto[]\r\n>([]);\r\n","import { Component, inject } from '@angular/core';\r\nimport { UntypedFormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n  EXTENSIBLE_FORM_VIEW_PROVIDER,\r\n  FormProp,\r\n  EXTENSIONS_FORM_PROP,\r\n} from '@abp/ng.components/extensible';\r\n\r\n@Component({\r\n  selector: 'abp-personal-settings-half-row',\r\n  template: ` <div class=\"w-50 d-inline\">\r\n    <div class=\"mb-3 \">\r\n      <label [attr.for]=\"name\" class=\"form-label\">{{ displayName | abpLocalization }} </label>\r\n      <input\r\n        type=\"text\"\r\n        [attr.id]=\"id\"\r\n        class=\"form-control\"\r\n        [attr.name]=\"name\"\r\n        [formControlName]=\"name\"\r\n      />\r\n    </div>\r\n  </div>`,\r\n  styles: [],\r\n  viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER],\r\n  imports: [FormsModule, ReactiveFormsModule, NgxValidateCoreModule, LocalizationPipe],\r\n})\r\nexport class PersonalSettingsHalfRowComponent {\r\n  private formProp = inject<FormProp>(EXTENSIONS_FORM_PROP);\r\n  public displayName: string;\r\n  public name: string;\r\n  public id: string;\r\n  public formGroup: UntypedFormGroup;\r\n\r\n  constructor() {\r\n    this.displayName = this.formProp.displayName;\r\n    this.name = this.formProp.name;\r\n    this.id = this.formProp.id;\r\n  }\r\n}\r\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\r\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n  selector: 'abp-personal-settings-verify-button',\r\n  templateUrl: './personal-settings-verify-button.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [NgbTooltipModule, LocalizationPipe],\r\n})\r\nexport class PersonalSettingsVerifyButtonComponent {\r\n  readonly buttonLabel = input<string>(undefined);\r\n  readonly verifiedLabel = input<string>(undefined);\r\n  readonly verified = input<boolean>(undefined);\r\n  readonly edited = input<boolean>(undefined);\r\n  readonly editedLabel = input<string>(undefined);\r\n  readonly editedTooltip = input<string>(undefined);\r\n\r\n  readonly btnClick = output();\r\n\r\n  onBtnClick() {\r\n    this.btnClick.emit();\r\n  }\r\n}\r\n","@if (!edited()) {\r\n  @if (verified()) {\r\n    <span class=\"input-group-text\">\r\n      <i class=\"me-1 text-success fa fa-check-square\" aria-hidden=\"true\"> </i\r\n      ><span class=\"text-success\">{{\r\n        verifiedLabel() || 'AbpAccount::Verified' | abpLocalization\r\n      }}</span>\r\n    </span>\r\n  } @else {\r\n    <button\r\n      style=\"border-top-left-radius: 0; border-bottom-left-radius: 0\"\r\n      type=\"button\"\r\n      class=\"btn btn-warning\"\r\n      (click)=\"onBtnClick()\"\r\n    >\r\n      <i class=\"me-1 fa fa-vcard\" aria-hidden=\"true\"></i>\r\n      {{ buttonLabel() || 'AbpAccount::Verify' | abpLocalization }}\r\n    </button>\r\n  }\r\n} @else {\r\n  <span\r\n    class=\"input-group-text\"\r\n    placement=\"top\"\r\n    [ngbTooltip]=\"editedTooltip() || 'AbpAccount::FirstlySubmitToVerify' | abpLocalization\"\r\n  >\r\n    <i class=\"me-1 fa fa-times\" aria-hidden=\"true\"> </i>\r\n    <span class=\"text-danger\">\r\n      {{ editedLabel() || 'AbpAccount::NotVerified' | abpLocalization }}\r\n    </span>\r\n  </span>\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport {\r\n  AbstractControl,\r\n  FormGroupDirective,\r\n  UntypedFormGroup,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { ProfileDto } from '@volo/abp.ng.account/public/proxy';\r\nimport {\r\n  ConfigStateService,\r\n  EnvironmentService,\r\n  LocalizationPipe,\r\n  SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport {\r\n  EXTENSIBLE_FORM_VIEW_PROVIDER,\r\n  EXTENSIONS_FORM_PROP,\r\n  EXTENSIONS_FORM_PROP_DATA,\r\n  FormProp,\r\n} from '@abp/ng.components/extensible';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { AccountService, ManageProfileStateService } from '../../../services';\r\nimport { PersonalSettingsVerifyButtonComponent } from '../personal-settings-verify-button/personal-settings-verify-button.component';\r\n\r\n@Component({\r\n  selector: 'abp-personal-settings-email',\r\n  templateUrl: './personal-settings-email.component.html',\r\n  viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER],\r\n  imports: [\r\n    NgxValidateCoreModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    AsyncPipe,\r\n    LocalizationPipe,\r\n    PersonalSettingsVerifyButtonComponent,\r\n  ],\r\n})\r\nexport class PersonalSettingsEmailComponent {\r\n  private formProp = inject<FormProp>(EXTENSIONS_FORM_PROP);\r\n  private propData = inject<ProfileDto>(EXTENSIONS_FORM_PROP_DATA);\r\n  private formGroupDirective = inject(FormGroupDirective);\r\n  private manageProfileState = inject(ManageProfileStateService);\r\n  private toasterService = inject(ToasterService);\r\n  private accountService = inject(AccountService);\r\n  private configState = inject(ConfigStateService);\r\n  private environmentService = inject(EnvironmentService);\r\n  protected readonly subscriptionService = inject(SubscriptionService);\r\n\r\n  public displayName: string;\r\n  public name: string;\r\n  public id: string;\r\n\r\n  public initialValue: string;\r\n  public isValueChanged$: Observable<boolean>;\r\n  public isVerified: boolean;\r\n  public isReadonly$: Observable<boolean>;\r\n  public showEmailVerificationBtn$: Observable<boolean>;\r\n  private formGroup: UntypedFormGroup;\r\n  private formControl: AbstractControl;\r\n\r\n  constructor() {\r\n    this.displayName = this.formProp.displayName;\r\n    this.name = this.formProp.name;\r\n    this.id = this.formProp.id;\r\n    this.formGroup = this.formGroupDirective.control;\r\n    this.formControl = this.formGroup.controls[this.name];\r\n    this.initialValue = this.propData.email;\r\n\r\n    this.isValueChanged$ = this.formControl.valueChanges.pipe(\r\n      map(value => value !== this.initialValue),\r\n    );\r\n    this.isReadonly$ = this.configState\r\n      .getSetting$('Abp.Identity.User.IsEmailUpdateEnabled')\r\n      .pipe(map(x => x.toLowerCase() !== 'true'));\r\n\r\n    this.isVerified = this.propData.emailConfirmed;\r\n\r\n    this.showEmailVerificationBtn$ = this.manageProfileState.createStateStream(\r\n      data => !data.hideEmailVerificationBtn,\r\n    );\r\n  }\r\n\r\n  get userId(): string {\r\n    return this.configState.getDeep('currentUser.id');\r\n  }\r\n\r\n  sendEmailVerificationToken() {\r\n    if (this.formControl.invalid) {\r\n      return;\r\n    }\r\n\r\n    const email = this.formControl.value;\r\n    const userId = this.userId;\r\n\r\n    const request$ = this.environmentService.getEnvironment$().pipe(\r\n      map(({ application: { baseUrl }, oAuthConfig: { responseType } }) => ({\r\n        appName: responseType === 'code' ? 'MVC' : 'Angular',\r\n        returnUrl: `${baseUrl}/account/login`,\r\n      })),\r\n      switchMap(({ appName, returnUrl }) =>\r\n        this.accountService.sendEmailConfirmationToken({\r\n          appName,\r\n          email,\r\n          userId,\r\n          returnUrl,\r\n        }),\r\n      ),\r\n    );\r\n\r\n    this.subscriptionService.addOne(request$, () => {\r\n      this.toasterService.success('AbpAccount::EmailConfirmationSentMessage', '', {\r\n        messageLocalizationParams: [email],\r\n      });\r\n      this.manageProfileState.setHideEmailVerificationBtn(true);\r\n    });\r\n  }\r\n}\r\n","<div class=\"mb-3\">\r\n  <label [attr.for]=\"id\" class=\"form-label\">{{ displayName | abpLocalization }}</label\r\n  ><span> * </span>\r\n  <div class=\"input-group\" validationTarget validationStyle>\r\n    <input\r\n      type=\"email\"\r\n      [attr.id]=\"id\"\r\n      class=\"form-control\"\r\n      [formControlName]=\"name\"\r\n      [readonly]=\"isReadonly$ | async\"\r\n    />\r\n    @if (showEmailVerificationBtn$ | async) {\r\n      <div class=\"input-group-append\">\r\n        <abp-personal-settings-verify-button\r\n          [verified]=\"isVerified\"\r\n          [edited]=\"isValueChanged$ | async\"\r\n          (btnClick)=\"sendEmailVerificationToken()\"\r\n        ></abp-personal-settings-verify-button>\r\n      </div>\r\n    }\r\n  </div>\r\n</div>\r\n","import { ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  UntypedFormGroup,\r\n  FormGroupDirective,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport {\r\n  EXTENSIBLE_FORM_VIEW_PROVIDER,\r\n  EXTENSIONS_FORM_PROP,\r\n  EXTENSIONS_FORM_PROP_DATA,\r\n  FormProp,\r\n} from '@abp/ng.components/extensible';\r\nimport { AutofocusDirective, ConfigStateService, LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n  ButtonComponent,\r\n  ModalCloseDirective,\r\n  ModalComponent,\r\n  ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport { ProfileDto } from '@volo/abp.ng.account/public/proxy';\r\nimport { AccountService, ManageProfileStateService } from '../../../services';\r\nimport { PersonalSettingsVerifyButtonComponent } from '../personal-settings-verify-button/personal-settings-verify-button.component';\r\n\r\n@Component({\r\n  selector: 'abp-personal-settings-phone-number',\r\n  templateUrl: './personal-settings-phone-number.component.html',\r\n  viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER],\r\n  imports: [\r\n    NgxValidateCoreModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    AutofocusDirective,\r\n    ModalCloseDirective,\r\n    AsyncPipe,\r\n    LocalizationPipe,\r\n    PersonalSettingsVerifyButtonComponent,\r\n    ModalComponent,\r\n    ButtonComponent,\r\n  ],\r\n})\r\nexport class PersonalSettingsPhoneNumberComponent {\r\n  private formProp = inject<FormProp>(EXTENSIONS_FORM_PROP);\r\n  private propData = inject<ProfileDto>(EXTENSIONS_FORM_PROP_DATA);\r\n  private formGroupDirective = inject(FormGroupDirective);\r\n  private configState = inject(ConfigStateService);\r\n  private accountService = inject(AccountService);\r\n  private toasterService = inject(ToasterService);\r\n  private manageProfileState = inject(ManageProfileStateService);\r\n  private cdr = inject(ChangeDetectorRef);\r\n\r\n  public displayName: string;\r\n  public name: string;\r\n  public id: string;\r\n  public isEnablePhoneNumberConfirmation: boolean;\r\n  public initialValue: string;\r\n  public isValueChanged$: Observable<boolean>;\r\n  public isVerified: boolean;\r\n  public modalVisible: boolean;\r\n  public token: string;\r\n  private formGroup: UntypedFormGroup;\r\n  public formControl: AbstractControl;\r\n  modalBusy: boolean;\r\n\r\n  constructor() {\r\n    this.name = this.formProp.name;\r\n    this.id = this.formProp.id;\r\n    this.isVerified = this.propData.phoneNumberConfirmed;\r\n\r\n    this.displayName = this.formProp.displayName;\r\n    this.formGroup = this.formGroupDirective.control;\r\n    this.formControl = this.formGroup.controls[this.name];\r\n    this.isEnablePhoneNumberConfirmation = this.getIsEnablePhoneNumberConfirmation();\r\n    this.initialValue = this.propData.phoneNumber;\r\n    this.isValueChanged$ = this.formControl.valueChanges.pipe(\r\n      map(value => value !== this.initialValue),\r\n    );\r\n  }\r\n\r\n  getIsEnablePhoneNumberConfirmation() {\r\n    return (\r\n      this.configState.getSetting('Abp.Identity.SignIn.EnablePhoneNumberConfirmation') === 'True'\r\n    );\r\n  }\r\n\r\n  get userId(): string {\r\n    return this.configState.getDeep('currentUser.id');\r\n  }\r\n\r\n  initPhoneNumberConfirmation = () => {\r\n    if (this.formControl.invalid) {\r\n      return;\r\n    }\r\n    const phoneNumber = this.formControl.value;\r\n    const userId = this.userId;\r\n    this.accountService\r\n      .sendPhoneNumberConfirmationToken({\r\n        phoneNumber,\r\n        userId,\r\n      })\r\n      .pipe(tap(() => (this.token = '')))\r\n      .subscribe(this.openModal);\r\n  };\r\n\r\n  openModal = () => {\r\n    this.modalVisible = true;\r\n    this.cdr.detectChanges();\r\n  };\r\n\r\n  removeModal = () => {\r\n    this.modalVisible = false;\r\n  };\r\n\r\n  setPhoneNumberAsConfirmed = () => {\r\n    const profile = { ...this.manageProfileState.getProfile(), phoneNumberConfirmed: true };\r\n    this.manageProfileState.setProfile(profile);\r\n  };\r\n\r\n  confirmPhoneNumber() {\r\n    this.accountService\r\n      .confirmPhoneNumber({ token: this.token, userId: this.userId })\r\n      .pipe(tap(this.setPhoneNumberAsConfirmed), tap(this.removeModal))\r\n      .subscribe(() => {\r\n        this.toasterService.success('AbpAccount::Verified', '', { life: 5000 });\r\n      });\r\n  }\r\n}\r\n","<div class=\"mb-3\">\r\n  <label [attr.for]=\"id\" class=\"form-label\">{{ displayName | abpLocalization }}</label>\r\n  <div class=\"input-group\" validationTarget validationStyle>\r\n    <input type=\"text\" [attr.id]=\"id\" class=\"form-control\" [formControlName]=\"name\" />\r\n    @if (initialValue && isEnablePhoneNumberConfirmation) {\r\n      <div class=\"input-group-append\">\r\n        <abp-personal-settings-verify-button\r\n          [verified]=\"isVerified\"\r\n          [edited]=\"isValueChanged$ | async\"\r\n          (btnClick)=\"initPhoneNumberConfirmation()\"\r\n        ></abp-personal-settings-verify-button>\r\n      </div>\r\n    }\r\n  </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"modalVisible\" [busy]=\"modalBusy\" [options]=\"{ size: 'sm' }\">\r\n  <ng-template #abpHeader>\r\n    <h5>{{ 'AbpAccount::Verify' | abpLocalization }}</h5>\r\n  </ng-template>\r\n  <ng-template #abpBody>\r\n    <form (ngSubmit)=\"confirmPhoneNumber()\">\r\n      <div class=\"mt-2\">\r\n        <p>\r\n          {{ 'AbpAccount::ConfirmationTokenSentMessage' | abpLocalization: formControl.value }}\r\n        </p>\r\n        <div class=\"mb-3\">\r\n          <label class=\"form-label\" for=\"confirm-phone-number\">{{\r\n            'AbpAccount::PhoneConfirmationToken' | abpLocalization\r\n          }}</label>\r\n          <input\r\n            [(ngModel)]=\"token\"\r\n            id=\"confirm-phone-number\"\r\n            name=\"confirm-phone-number\"\r\n            class=\"form-control\"\r\n            type=\"text\"\r\n            autofocus\r\n          />\r\n        </div>\r\n      </div>\r\n    </form>\r\n  </ng-template>\r\n  <ng-template #abpFooter>\r\n    <button abpClose type=\"button\" class=\"btn btn-outline-primary\">\r\n      {{ 'AbpAccount::Cancel' | abpLocalization }}\r\n    </button>\r\n    <abp-button type=\"abp-button\" iconClass=\"fa fa-check\" (click)=\"confirmPhoneNumber()\">\r\n      {{ 'AbpAccount::Save' | abpLocalization }}\r\n    </abp-button>\r\n  </ng-template>\r\n</abp-modal>\r\n","import { Component, input } from '@angular/core';\r\nimport { ProgressBarStats } from '../../models/password-complexity';\r\n\r\n@Component({\r\n  selector: 'abp-password-complexity-indicator',\r\n  template: `\r\n    <div\r\n      [style.opacity]=\"progressBar()?.width > 0 ? 1 : 0\"\r\n      [style.backgroundColor]=\"'var(--lpx-border-color)'\"\r\n      class=\"progress transition mx-3\"\r\n    >\r\n      <div\r\n        class=\"progress-bar transition\"\r\n        [style.width]=\"progressBar()?.width + '%'\"\r\n        [style.backgroundColor]=\"progressBar()?.bgColor\"\r\n      ></div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n      .transition {\r\n        transition: all 0.3s ease-out;\r\n      }\r\n      .progress {\r\n        background-color: var(--lpx-border-color);\r\n        height: 4px;\r\n        border-radius: 3px 3px 0 0;\r\n        margin-top: -5px;\r\n        z-index: 1;\r\n        position: relative;\r\n      }\r\n      :host-context {\r\n        order: 1;\r\n      }\r\n    `,\r\n  ],\r\n})\r\nexport class PasswordComplexityIndicatorComponent {\r\n  readonly progressBar = input.required<ProgressBarStats>();\r\n}\r\n","\r\nimport { ChangeDetectorRef, Component, DestroyRef, inject, OnInit } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe, ShowPasswordDirective, SubscriptionService } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { ChangePasswordService } from '../../services/change-password.service';\r\nimport { PasswordComplexityIndicatorService } from '../../services/password-complexity-indicator.service';\r\nimport { ProgressBarStats } from '../../models/password-complexity';\r\nimport { ChangePasswordFormModel } from '../../models/changePasswordFormModel';\r\nimport { PasswordComplexityIndicatorComponent } from '../password-complexity-indicator/password-complexity-indicator.component';\r\n\r\n@Component({\r\n  selector: 'abp-change-password-form',\r\n  templateUrl: './change-password.component.html',\r\n  exportAs: 'abpChangePasswordForm',\r\n  providers: [SubscriptionService],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    ShowPasswordDirective,\r\n    LocalizationPipe,\r\n    PasswordComplexityIndicatorComponent,\r\n    ButtonComponent\r\n],\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n  private readonly service = inject(ChangePasswordService);\r\n  readonly #destroyRef = inject(DestroyRef);\r\n  readonly #cdRef = inject(ChangeDetectorRef);\r\n\r\n  protected readonly passwordComplexityService = inject(PasswordComplexityIndicatorService);\r\n  protected readonly subscription = inject(SubscriptionService);\r\n\r\n  form: FormGroup<ChangePasswordFormModel>;\r\n  inProgress: boolean;\r\n  progressBar: ProgressBarStats;\r\n  public hideCurrentPassword = false;\r\n\r\n  showCurrentPassword = false;\r\n  showNewPassword = false;\r\n  showConfirmPassword = false;\r\n\r\n  mapErrorsFn = this.service.MapErrorsFnFactory();\r\n\r\n  ngOnInit(): void {\r\n    this.hideCurrentPassword = !this.service.hasPassword;\r\n    this.form = this.service.buildForm(this.hideCurrentPassword);\r\n  }\r\n\r\n  onSuccess() {\r\n    this.service.showSuccessMessage();\r\n    this.hideCurrentPassword = false;\r\n    this.form = this.service.buildForm(this.hideCurrentPassword);\r\n    this.progressBar = null;\r\n    this.#cdRef.detectChanges();\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.form.invalid) return;\r\n    const input = this.form.value;\r\n    this.service\r\n      .changePassword({ currentPassword: input.currentPassword, newPassword: input.newPassword })\r\n      .pipe(takeUntilDestroyed(this.#destroyRef))\r\n      .subscribe({ next: () => this.onSuccess() });\r\n  }\r\n\r\n  get newPassword(): string {\r\n    return this.form.value.newPassword;\r\n  }\r\n\r\n  validatePassword() {\r\n    this.progressBar = this.passwordComplexityService.validatePassword(this.newPassword);\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [mapErrorsFn]=\"mapErrorsFn\" validateOnSubmit>\r\n  @if (!hideCurrentPassword) {\r\n    <div class=\"mb-3\">\r\n      <label class=\"form-label\" for=\"current-password\">\r\n        {{ 'AbpIdentity::DisplayName:CurrentPassword' | abpLocalization }}\r\n        <span> * </span>\r\n      </label>\r\n      <div class=\"input-group form-group\" validationTarget>\r\n        <input\r\n          class=\"form-control\"\r\n          id=\"current-password\"\r\n          formControlName=\"currentPassword\"\r\n          [abpShowPassword]=\"showCurrentPassword\"\r\n        />\r\n        <button\r\n          class=\"btn btn-secondary\"\r\n          type=\"button\"\r\n          (click)=\"showCurrentPassword = !showCurrentPassword\"\r\n        >\r\n          <i\r\n            class=\"fa\"\r\n            aria-hidden=\"true\"\r\n            [class]=\"{\r\n              'fa-eye-slash': !showCurrentPassword,\r\n              'fa-eye': showCurrentPassword\r\n            }\"\r\n          ></i>\r\n        </button>\r\n      </div>\r\n    </div>\r\n  }\r\n\r\n  <div class=\"mb-3 d-flex flex-column\">\r\n    <label class=\"form-label\" for=\"new-password\">\r\n      {{ 'AbpIdentity::DisplayName:NewPassword' | abpLocalization }}\r\n      <span> * </span>\r\n    </label>\r\n    <div class=\"input-group form-group\" validationTarget>\r\n      <input\r\n        class=\"form-control\"\r\n        id=\"new-password\"\r\n        formControlName=\"newPassword\"\r\n        [abpShowPassword]=\"showNewPassword\"\r\n        (keyup)=\"validatePassword()\"\r\n      />\r\n      <button class=\"btn btn-secondary\" type=\"button\" (click)=\"showNewPassword = !showNewPassword\">\r\n        <i\r\n          class=\"fa\"\r\n          aria-hidden=\"true\"\r\n          [class]=\"{\r\n            'fa-eye-slash': !showNewPassword,\r\n            'fa-eye': showNewPassword\r\n          }\"\r\n        ></i>\r\n      </button>\r\n    </div>\r\n    @if (progressBar?.width > 0) {\r\n      <abp-password-complexity-indicator\r\n        [progressBar]=\"progressBar\"\r\n      ></abp-password-complexity-indicator>\r\n      <div class=\"d-flex align-items-center order-2 mt-1\" style=\"font-weight: 500\">\r\n        {{ 'AbpAccount::Strength' | abpLocalization }}&nbsp;\r\n        <span [style.color]=\"progressBar?.bgColor\">{{\r\n          'AbpAccount::' + progressBar?.text | abpLocalization\r\n        }}</span>\r\n      </div>\r\n    }\r\n  </div>\r\n\r\n  <div class=\"mb-3\">\r\n    <label class=\"form-label\" for=\"confirm-new-password\">\r\n      {{ 'AbpIdentity::DisplayName:NewPasswordConfirm' | abpLocalization }}\r\n      <span> * </span>\r\n    </label>\r\n    <div class=\"input-group form-group\" validationTarget>\r\n      <input\r\n        class=\"form-control\"\r\n        id=\"confirm-new-password\"\r\n        formControlName=\"repeatNewPassword\"\r\n        [abpShowPassword]=\"showConfirmPassword\"\r\n        (keyup)=\"validatePassword()\"\r\n      />\r\n      <button\r\n        class=\"btn btn-secondary\"\r\n        type=\"button\"\r\n        (click)=\"showConfirmPassword = !showConfirmPassword\"\r\n      >\r\n        <i\r\n          class=\"fa\"\r\n          aria-hidden=\"true\"\r\n          [class]=\"{\r\n            'fa-eye-slash': !showConfirmPassword,\r\n            'fa-eye': showConfirmPassword\r\n          }\"\r\n        ></i>\r\n      </button>\r\n    </div>\r\n  </div>\r\n\r\n  <abp-button iconClass=\"fa fa-check\" buttonClass=\"btn btn-primary color-white\" buttonType=\"submit\">\r\n    {{ 'AbpIdentity::Save' | abpLocalization }}\r\n  </abp-button>\r\n</form>\r\n","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, RouterLink } from '@angular/router';\r\nimport { LocalizationPipe, MultiTenancyService } from '@abp/ng.core';\r\nimport { AccountService } from '../../services/account.service';\r\n\r\nexport interface EmailConfirmationInput {\r\n  confirmationToken: string;\r\n  userId: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'abp-email-confirmation',\r\n  template: `\r\n    @if (confirmed) {\r\n      <p>\r\n        {{ 'AbpAccount::YourEmailAddressIsSuccessfullyConfirmed' | abpLocalization }}\r\n      </p>\r\n    }\r\n\r\n    @if (notValid) {\r\n      <p class=\"text-danger font-weight-bold\">\r\n        {{ 'AbpUi::ValidationErrorMessage' | abpLocalization }}\r\n      </p>\r\n    }\r\n\r\n    <a role=\"button\" class=\"btn btn-primary\" [routerLink]=\"['/account/login']\">{{\r\n      'AbpAccount::Login' | abpLocalization\r\n    }}</a>\r\n  `,\r\n  imports: [RouterLink, LocalizationPipe],\r\n})\r\nexport class EmailConfirmationComponent implements OnInit, OnDestroy {\r\n  private multiTenancy = inject(MultiTenancyService);\r\n  private accountService = inject(AccountService);\r\n  private route = inject(ActivatedRoute);\r\n\r\n  confirmed: boolean;\r\n\r\n  notValid: boolean;\r\n\r\n  private resetTenantBox = () => {};\r\n\r\n  ngOnInit() {\r\n    const { isTenantBoxVisible } = this.multiTenancy;\r\n    this.resetTenantBox = () => (this.multiTenancy.isTenantBoxVisible = isTenantBoxVisible);\r\n\r\n    // throws ExpressionChangedAfterItHasBeenCheckedError without setTimeout\r\n    setTimeout(() => (this.multiTenancy.isTenantBoxVisible = false), 0);\r\n\r\n    this.confirmation();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.resetTenantBox();\r\n  }\r\n\r\n  confirmation() {\r\n    const { userId, confirmationToken: token } = this.route.snapshot\r\n      .queryParams as EmailConfirmationInput;\r\n\r\n    if (!userId || !token) {\r\n      this.notValid = true;\r\n      return;\r\n    }\r\n\r\n    this.accountService.confirmEmail({ userId, token }).subscribe(() => (this.confirmed = true));\r\n  }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport {\r\n  UntypedFormBuilder,\r\n  UntypedFormGroup,\r\n  Validators,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { RouterLink } from '@angular/router';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AutofocusDirective, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AccountService } from '../../services/account.service';\r\n\r\nconst { required, email } = Validators;\r\n\r\n@Component({\r\n  selector: 'abp-forgot-password',\r\n  templateUrl: './forgot-password.component.html',\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    AutofocusDirective,\r\n    LocalizationPipe,\r\n    ButtonComponent,\r\n    RouterLink,\r\n  ],\r\n})\r\nexport class ForgotPasswordComponent {\r\n  private fb = inject(UntypedFormBuilder);\r\n  private accountService = inject(AccountService);\r\n\r\n  form: UntypedFormGroup;\r\n\r\n  inProgress: boolean;\r\n\r\n  isEmailSent = false;\r\n\r\n  constructor() {\r\n    this.form = this.fb.group({\r\n      email: ['', [required, email]],\r\n    });\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.form.invalid) return;\r\n\r\n    this.inProgress = true;\r\n\r\n    this.accountService\r\n      .sendPasswordResetCode({ email: this.form.get('email').value, appName: 'Angular' })\r\n      .pipe(finalize(() => (this.inProgress = false)))\r\n      .subscribe(() => {\r\n        this.isEmailSent = true;\r\n      });\r\n  }\r\n}\r\n","@if (!isEmailSent) {\r\n  <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" validateOnSubmit>\r\n    <p>{{ 'AbpAccount::SendPasswordResetLink_Information' | abpLocalization }}</p>\r\n    <div class=\"mb-3\">\r\n      <div class=\"form-floating mb-3\">\r\n        <input\r\n          autofocus\r\n          type=\"email\"\r\n          class=\"form-control\"\r\n          id=\"email\"\r\n          formControlName=\"email\"\r\n          placeholder=\"name@example.com\"\r\n        />\r\n        <label for=\"floatingInput\">{{ 'AbpAccount::EmailAddress' | abpLocalization }}</label>\r\n      </div>\r\n\r\n      <div class=\"d-flex gap-2\">\r\n        <a routerLink=\"/account/login\" class=\"btn btn-outline-primary btn-lg text-nowrap\">\r\n          <i class=\"bi bi-arrow-left-short\"></i> {{ 'AbpAccount::Login' | abpLocalization }}\r\n        </a>\r\n        <abp-button\r\n          class=\"flex-fill\"\r\n          buttonClass=\"btn btn-primary btn-lg text-nowrap w-100\"\r\n          [loading]=\"inProgress\"\r\n          buttonType=\"submit\"\r\n        >\r\n          <i class=\"bi bi-send me-1\"></i> {{ 'AbpAccount::Submit' | abpLocalization }}\r\n        </abp-button>\r\n      </div>\r\n    </div>\r\n  </form>\r\n} @else {\r\n  <p>\r\n    {{ 'AbpAccount::PasswordResetMailSentMessage' | abpLocalization }}\r\n  </p>\r\n\r\n  <a routerLink=\"/account/login\" class=\"d-grid\">\r\n    <button class=\"d-block mt-2 mb-3 btn btn-primary\">\r\n      <i class=\"fa fa-long-arrow-left me-1\" aria-hidden=\"true\"></i>\r\n      {{ 'AbpAccount::BackToLogin' | abpLocalization }}\r\n    </button>\r\n  </a>\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { AccountConfigOptions } from '../models/config-options';\r\n\r\nexport const ACCOUNT_CONFIG_OPTIONS = new InjectionToken<AccountConfigOptions>(\r\n  'ACCOUNT_CONFIG_OPTIONS',\r\n);\r\n","import { Injector } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ACCOUNT_CONFIG_OPTIONS } from '../tokens/config-options.token';\r\n\r\nexport function getRedirectUrl(injector: Injector): string {\r\n  const route = injector.get(ActivatedRoute);\r\n  const options = injector.get(ACCOUNT_CONFIG_OPTIONS);\r\n  return route.snapshot.queryParams.returnUrl || options.redirectUrl;\r\n}\r\n","import { Component, inject, Injector, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { IdentityLinkUserService } from '@volo/abp.ng.account/public/proxy';\r\nimport { getRedirectUrl } from '../../utils/auth-utils';\r\n\r\n@Component({\r\n  selector: 'abp-link-logged',\r\n  template: `\r\n    <div class=\"d-grid\">\r\n      <button type=\"button\" class=\"btn btn-primary mb-3\" (click)=\"navigateToMainPage()\">\r\n        &larr;\r\n        <span class=\"ms-1\">{{ 'AbpAccount::StayWithCurrentAccount' | abpLocalization }}</span>\r\n      </button>\r\n      <button (click)=\"navigateToMainPageForLinkLogin()\" class=\"btn btn-secondary\" type=\"button\">\r\n        <span class=\"me-1\">{{\r\n          'AbpAccount::ReturnToPreviousAccount' | abpLocalization: tenantAndUserName\r\n        }}</span>\r\n        &rarr;\r\n      </button>\r\n    </div>\r\n  `,\r\n  imports: [LocalizationPipe],\r\n})\r\nexport class LinkLoggedComponent implements OnInit {\r\n  private injector = inject(Injector);\r\n  private router = inject(Router);\r\n  private route = inject(ActivatedRoute);\r\n  private identityLinkUserService = inject(IdentityLinkUserService);\r\n\r\n  tenantAndUserName = '';\r\n\r\n  get linkUser() {\r\n    const { linkUserId, linkTenantId, linkUserName, linkTenantName } =\r\n      this.route.snapshot.queryParams;\r\n\r\n    return { linkUserId, linkTenantId, linkUserName, linkTenantName };\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.init();\r\n  }\r\n\r\n  protected init() {\r\n    const { linkUserId, linkTenantId, linkUserName, linkTenantName } = this.linkUser;\r\n\r\n    if (!linkUserId) {\r\n      this.navigateToLogin();\r\n      return;\r\n    }\r\n\r\n    this.identityLinkUserService\r\n      .isLinked({ tenantId: linkTenantId, userId: linkUserId })\r\n      .subscribe(res => {\r\n        if (!res) {\r\n          this.navigateToLogin();\r\n        }\r\n      });\r\n\r\n    this.tenantAndUserName = linkTenantId ? `${linkTenantName}\\\\${linkUserName}` : linkUserName;\r\n  }\r\n\r\n  protected navigateToLogin() {\r\n    this.router.navigateByUrl('/account/login');\r\n  }\r\n\r\n  navigateToMainPage(queryParams?: Params) {\r\n    this.router.navigate([getRedirectUrl(this.injector) || '/'], { queryParams });\r\n  }\r\n\r\n  navigateToMainPageForLinkLogin() {\r\n    const { linkUserId, linkTenantId } = this.linkUser;\r\n    this.navigateToMainPage({ handler: 'linkLogin', linkUserId, linkTenantId });\r\n  }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { finalize } from 'rxjs';\r\nimport { AutofocusDirective, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { RecoveryCodeService } from '../../services';\r\n\r\nconst { required } = Validators;\r\n\r\n@Component({\r\n  selector: 'abp-login-with-recovery-code',\r\n  templateUrl: './login-with-recovery-code.component.html',\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    AutofocusDirective,\r\n    LocalizationPipe,\r\n    ButtonComponent,\r\n  ],\r\n})\r\nexport class LoginWithRecoveryCodeComponent {\r\n  protected readonly fb = inject(FormBuilder);\r\n  protected readonly recoveryCodeService = inject(RecoveryCodeService);\r\n\r\n  protected loading = false;\r\n  protected readonly form = this.fb.group({\r\n    recoveryCode: [null, required],\r\n  });\r\n\r\n  login(): void {\r\n    if (this.form.invalid) return;\r\n\r\n    this.loading = true;\r\n    this.recoveryCodeService\r\n      .login(this.form.value.recoveryCode)\r\n      .pipe(finalize(() => (this.loading = false)))\r\n      .subscribe();\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"login()\">\r\n  <p>{{ 'AbpAccount::LoginWithRecoveryCode_Information' | abpLocalization }}</p>\r\n\r\n  <div class=\"mb-3\">\r\n    <label for=\"recoveryCode\" class=\"form-label\">\r\n      {{ 'AbpAccount::RecoveryCode' | abpLocalization }}\r\n    </label>\r\n    <input\r\n      autofocus\r\n      id=\"recoveryCode\"\r\n      type=\"text\"\r\n      class=\"form-control\"\r\n      formControlName=\"recoveryCode\"\r\n      autocomplete=\"off\"\r\n    />\r\n  </div>\r\n\r\n  <abp-button buttonType=\"submit\" [loading]=\"loading\" [disabled]=\"form.invalid\">\r\n    {{ 'AbpAccount::Submit' | abpLocalization }}\r\n  </abp-button>\r\n</form>\r\n","export const REQUIRES_TWO_FACTOR = 'RequiresTwoFactor';\r\nexport const SHOULD_CHANGE_PASSWORD_ON_NEXT_LOGIN = 'ShouldChangePasswordOnNextLogin';\r\nexport const PERIODICALLY_CHANGE_PASSWORD = 'PeriodicallyChangePassword';\r\nexport const REQUIRES_CONFIRM_USER = 'RequiresConfirmUser';\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  Injector,\r\n  OnInit,\r\n  inject,\r\n  viewChild\r\n} from '@angular/core';\r\nimport { FormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { from, of, pipe, throwError } from 'rxjs';\r\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n  AuthService,\r\n  AutofocusDirective,\r\n  ConfigStateService,\r\n  LocalizationPipe,\r\n  LoginParams,\r\n  ShowPasswordDirective,\r\n  TrackCapsLockDirective,\r\n} from '@abp/ng.core';\r\nimport { ButtonComponent, ToasterService } from '@abp/ng.theme.shared';\r\nimport { IdentityLinkUserService, LinkUserInput } from '@volo/abp.ng.account/public/proxy';\r\nimport { eAccountComponents } from '../../enums/components';\r\nimport { RecaptchaService } from '../../services/recaptcha.service';\r\nimport { SecurityCodeService } from '../../services/security-code.service';\r\nimport { RecoveryCodeService } from '../../services/recovery-code.service';\r\nimport { RECAPTCHA_STRATEGY } from '../../strategies/recaptcha.strategy';\r\nimport { getRedirectUrl } from '../../utils/auth-utils';\r\nimport {\r\n  PERIODICALLY_CHANGE_PASSWORD,\r\n  REQUIRES_TWO_FACTOR,\r\n  SHOULD_CHANGE_PASSWORD_ON_NEXT_LOGIN,\r\n  REQUIRES_CONFIRM_USER,\r\n} from '../../enums';\r\nimport { ConfirmUserService } from '../../services';\r\n\r\nconst { maxLength, required } = Validators;\r\n\r\n@Component({\r\n  selector: 'abp-login',\r\n  templateUrl: './login.component.html',\r\n  providers: [RecaptchaService],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    NgbTooltip,\r\n    RouterLink,\r\n    AutofocusDirective,\r\n    ShowPasswordDirective,\r\n    TrackCapsLockDirective,\r\n    LocalizationPipe,\r\n    ButtonComponent,\r\n  ],\r\n})\r\nexport class LoginComponent implements OnInit, AfterViewInit {\r\n  protected readonly injector = inject(Injector);\r\n  protected readonly fb = inject(FormBuilder);\r\n  protected readonly toasterService = inject(ToasterService);\r\n  protected readonly authService = inject(AuthService);\r\n  protected readonly configState = inject(ConfigStateService);\r\n  protected readonly route = inject(ActivatedRoute);\r\n  protected readonly router = inject(Router);\r\n  protected readonly identityLinkUserService = inject(IdentityLinkUserService);\r\n  protected readonly recaptchaService = inject(RecaptchaService);\r\n  protected readonly securityCodeService = inject(SecurityCodeService);\r\n  protected readonly recoveryCodeService = inject(RecoveryCodeService);\r\n  protected readonly confirmUserService = inject(ConfirmUserService);\r\n\r\n  readonly recaptchaRef = viewChild<ElementRef<HTMLDivElement>>('recaptcha');\r\n\r\n  form = this.buildForm();\r\n\r\n  inProgress: boolean;\r\n\r\n  isSelfRegistrationEnabled = true;\r\n\r\n  authWrapperKey = eAccountComponents.AuthWrapper;\r\n\r\n  linkUser: LinkUserInput;\r\n\r\n  showPassword = false;\r\n  capsLock = false;\r\n\r\n  protected init() {\r\n    this.isSelfRegistrationEnabled =\r\n      (\r\n        (this.configState.getSetting('Abp.Account.IsSelfRegistrationEnabled') as string) || ''\r\n      ).toLowerCase() !== 'false';\r\n  }\r\n\r\n  protected buildForm() {\r\n    return this.fb.group({\r\n      username: ['', [required, maxLength(255)]],\r\n      password: ['', [required, maxLength(128)]],\r\n      rememberMe: [false],\r\n    });\r\n  }\r\n\r\n  protected setLinkUserParams() {\r\n    const {\r\n      linkUserId: userId,\r\n      linkToken: token,\r\n      linkTenantId: tenantId,\r\n    } = this.route.snapshot.queryParams;\r\n\r\n    if (userId && token) {\r\n      this.identityLinkUserService.verifyLinkToken({ token, userId, tenantId }).subscribe(res => {\r\n        if (res) {\r\n          this.linkUser = { userId, token, tenantId };\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.init();\r\n    this.setLinkUserParams();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.recaptchaService.setStrategy(\r\n      RECAPTCHA_STRATEGY.Login(this.configState, this.recaptchaRef().nativeElement),\r\n    );\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.form.invalid) return;\r\n\r\n    this.inProgress = true;\r\n\r\n    const { username, password, rememberMe } = this.form.value;\r\n    const redirectUrl = getRedirectUrl(this.injector) || (this.linkUser ? null : '/');\r\n    const loginParams = { username, password, rememberMe, redirectUrl };\r\n\r\n    this.checkRecaptcha()\r\n      .pipe(\r\n        switchMap(isValid => {\r\n          if (!isValid) {\r\n            return of(null);\r\n          }\r\n\r\n          return this.authService\r\n            .login(loginParams)\r\n            .pipe(this.handleLoginError(loginParams))\r\n            .pipe(this.linkUser ? this.switchToLinkUser() : tap());\r\n        }),\r\n        finalize(() => (this.inProgress = false)),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  private checkRecaptcha() {\r\n    return this.recaptchaService.isEnabled ? this.recaptchaService.validate() : of(true);\r\n  }\r\n\r\n  private switchToLinkUser() {\r\n    return pipe(\r\n      switchMap(() => this.identityLinkUserService.link(this.linkUser)),\r\n      tap(() => {\r\n        this.router.navigate(['/account/link-logged'], {\r\n          queryParams: this.route.snapshot.queryParams,\r\n        });\r\n      }),\r\n    );\r\n  }\r\n\r\n  private handleLoginError(loginParams?: LoginParams) {\r\n    return catchError(err => {\r\n      const errorDescription = err.error?.error_description;\r\n\r\n      switch (errorDescription) {\r\n        case REQUIRES_TWO_FACTOR:\r\n          const data = {\r\n            ...loginParams,\r\n            userId: err.error.userId,\r\n          };\r\n          this.securityCodeService.data = { ...data, twoFactorToken: err.error.twoFactorToken };\r\n          this.recoveryCodeService.data.set({ ...data });\r\n          return from(this.router.navigate(['/account/send-security-code']));\r\n        case PERIODICALLY_CHANGE_PASSWORD:\r\n        case SHOULD_CHANGE_PASSWORD_ON_NEXT_LOGIN: {\r\n          const queryParams = {\r\n            token: err.error.changePasswordToken,\r\n            redirectUrl: loginParams.redirectUrl,\r\n            username: loginParams.username,\r\n          };\r\n          return from(\r\n            this.router.navigate(['/account/change-password'], {\r\n              queryParams,\r\n            }),\r\n          );\r\n        }\r\n        case REQUIRES_CONFIRM_USER: {\r\n          const { userId, email, phoneNumber } = err?.error ?? {};\r\n          if (!err || !err.error) {\r\n            throw new Error(`Error detail could not be found.\\n ${err}`);\r\n          }\r\n\r\n          this.confirmUserService.update(prev => ({\r\n            userId,\r\n            email: { ...prev.email, address: email },\r\n            phone: { ...prev.phone, number: phoneNumber },\r\n          }));\r\n          return from(this.router.navigate(['/account/confirm-user']));\r\n        }\r\n      }\r\n\r\n      this.recaptchaService.reset();\r\n      this.toasterService.error(\r\n        err.error?.error_description ||\r\n          err.error?.error?.message ||\r\n          'AbpAccount::DefaultErrorMessage',\r\n        null,\r\n        { life: 7000 },\r\n      );\r\n\r\n      return throwError(() => err);\r\n    });\r\n  }\r\n}\r\n","@if (linkUser) {\r\n  <div\r\n    role=\"alert\"\r\n    class=\"alert alert-warning\"\r\n    [innerHTML]=\"'AbpAccount::LinkAccountWarning' | abpLocalization: '/account/login'\"\r\n  ></div>\r\n}\r\n\r\n@if (isSelfRegistrationEnabled) {\r\n  <h5 class=\"mb-2\">\r\n    {{ 'AbpAccount::NotAMemberYet' | abpLocalization }}\r\n    <a routerLink=\"/account/register\" queryParamsHandling=\"preserve\" class=\"text-decoration-none\">\r\n      {{ 'AbpAccount::Register' | abpLocalization }}\r\n    </a>\r\n  </h5>\r\n}\r\n\r\n\r\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" validateOnSubmit>\r\n  <div class=\"form-floating mb-2\">\r\n    <input\r\n      autofocus\r\n      type=\"text\"\r\n      id=\"login-input-user-name-or-email-address\"\r\n      class=\"form-control\"\r\n      formControlName=\"username\"\r\n      placeholder=\"name@example.com\"\r\n    />\r\n    <label for=\"login-input-user-name-or-email-address\">\r\n      {{ 'AbpAccount::UserNameOrEmailAddress' | abpLocalization }}\r\n    </label>\r\n  </div>\r\n\r\n  <div class=\"form-floating mb-2\">\r\n    <input\r\n      id=\"password\"\r\n      class=\"form-control\"\r\n      placeholder=\"Password\"\r\n      formControlName=\"password\"\r\n      (abpCapsLock)=\"capsLock = $event\"\r\n      [abpShowPassword]=\"showPassword\"\r\n    />\r\n    <label for=\"floatingPassword\">{{ 'AbpAccount::Password' | abpLocalization }}</label>\r\n    <i\r\n      id=\"capslockicon\"\r\n      class=\"bi bi-capslock caps-lock-icon\"\r\n      [class.d-none]=\"!capsLock\"\r\n      [ngbTooltip]=\"'AbpAccount::CapsLockOn' | abpLocalization\"\r\n    ></i>\r\n\r\n    <i\r\n      id=\"passwordicon\"\r\n      class=\"bi bi-eye{{ showPassword ? '' : '-slash' }} show-pass-icon\"\r\n      aria-label=\"Show/Hide password\"\r\n      (click)=\"showPassword = !showPassword\"\r\n      [ngbTooltip]=\"\r\n        'AbpAccount::' + (!showPassword ? 'ShowPassword' : 'HidePassword') | abpLocalization\r\n      \"\r\n    ></i>\r\n  </div>\r\n\r\n  <div class=\"row mb-3\">\r\n    <div class=\"col\">\r\n      <div class=\"form-check form-switch\">\r\n        <input\r\n          class=\"form-check-input\"\r\n          type=\"checkbox\"\r\n          id=\"rememberMe\"\r\n          formControlName=\"rememberMe\"\r\n        />\r\n        <label class=\"form-check-label\" for=\"rememberMe\">\r\n          {{ 'AbpAccount::RememberMe' | abpLocalization }}\r\n        </label>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"col text-end\">\r\n      <a class=\"text-decoration-none\" routerLink=\"/account/forgot-password\">\r\n        {{ 'AbpAccount::ForgotPassword' | abpLocalization }}\r\n      </a>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"row\">\r\n    <div class=\"col\">\r\n      <div #recaptcha></div>\r\n      <abp-button\r\n        class=\"d-grid\"\r\n        buttonClass=\"mt-2 mb-3 btn btn-primary btn-lg\"\r\n        [loading]=\"inProgress\"\r\n        buttonType=\"submit\"\r\n      >\r\n        <i class=\"bi bi-box-arrow-in-right me-1\"></i> {{ 'AbpAccount::Login' | abpLocalization }}\r\n      </abp-button>\r\n    </div>\r\n  </div>\r\n</form>\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { NgComponentOutlet, AsyncPipe } from '@angular/common';\r\nimport { switchMap, tap } from 'rxjs';\r\nimport {\r\n  ABP,\r\n  ConfigStateService,\r\n  LocalizationPipe,\r\n  PermissionDirective,\r\n  SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport { LoadingDirective } from '@abp/ng.theme.shared';\r\nimport { twoFactorBehaviourOptions } from '@volo/abp.ng.account/admin';\r\nimport {\r\n  eAccountManageProfileTabNames,\r\n  ManageProfileTabsService,\r\n} from '@volo/abp.ng.account/public/config';\r\nimport { ProfileDto, ProfileService } from '@volo/abp.ng.account/public/proxy';\r\nimport { ManageProfileStateService } from '../../services/manage-profile-state.service';\r\n\r\n@Component({\r\n  selector: 'abp-manage-profile',\r\n  templateUrl: './manage-profile.component.html',\r\n  styles: [\r\n    `\r\n      .fade-in {\r\n        animation: fadeIn 350ms ease both;\r\n      }\r\n\r\n      @keyframes fadeIn {\r\n        from {\r\n          opacity: 0;\r\n        }\r\n        to {\r\n          opacity: 1;\r\n        }\r\n      }\r\n    `,\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    PermissionDirective,\r\n    LoadingDirective,\r\n    AsyncPipe,\r\n    LocalizationPipe,\r\n    NgComponentOutlet\r\n  ],\r\n})\r\nexport class ManageProfileComponent {\r\n  private tabsService = inject(ManageProfileTabsService);\r\n  private configState = inject(ConfigStateService);\r\n  protected profileService = inject(ProfileService);\r\n  protected manageProfileState = inject(ManageProfileStateService);\r\n\r\n  protected readonly subscriptionService = inject(SubscriptionService);\r\n\r\n  firstTab: ABP.Tab;\r\n  selected: ABP.Tab;\r\n  isProfileLoaded: boolean;\r\n\r\n  tabs$ = this.tabsService.visible$.pipe(\r\n    tap(tabs => {\r\n      this.firstTab = tabs[0];\r\n      if (!this.selected && tabs[0].component) {\r\n        this.selected = tabs[0];\r\n      }\r\n    }),\r\n  );\r\n\r\n  get isTwoFactorEnabled(): boolean {\r\n    const { key } = twoFactorBehaviourOptions[0];\r\n    return (\r\n      this.configState.getFeature('Identity.TwoFactor') === key &&\r\n      this.configState.getSetting('Abp.Identity.TwoFactor.Behaviour') === key &&\r\n      (\r\n        (this.configState.getSetting('Abp.Identity.TwoFactor.UsersCanChange') as string) || ''\r\n      ).toLowerCase() === 'true'\r\n    );\r\n  }\r\n\r\n  protected setProfile(profile: ProfileDto): void {\r\n    this.manageProfileState.setProfile(profile as ProfileDto);\r\n    this.isProfileLoaded = true;\r\n    if (profile.isExternal) {\r\n      this.tabsService.patch(eAccountManageProfileTabNames.ChangePassword, {\r\n        invisible: true,\r\n      });\r\n      this.selected = this.firstTab;\r\n    }\r\n  }\r\n\r\n  protected patchTwoFactorTab(canEnableTwoFactor: boolean): void {\r\n    const invisible = !this.isTwoFactorEnabled || !canEnableTwoFactor;\r\n    this.tabsService.patch(eAccountManageProfileTabNames.TwoFactor, { invisible });\r\n    this.tabsService.patch(eAccountManageProfileTabNames.AuthenticatorApp, { invisible });\r\n  }\r\n\r\n  protected init(): void {\r\n    const profile$ = this.profileService.get().pipe(\r\n      tap(profile => this.setProfile(profile)),\r\n      switchMap(() => this.profileService.canEnableTwoFactor()),\r\n      tap(canEnable => this.patchTwoFactorTab(canEnable)),\r\n    );\r\n\r\n    this.subscriptionService.addOne(profile$);\r\n  }\r\n\r\n  constructor() {\r\n    this.init();\r\n  }\r\n}\r\n","<div class=\"card\">\r\n  <div class=\"card-body\">\r\n    <div class=\"row\">\r\n      @if (tabs$ | async; as tabs) {\r\n      <div class=\"col-12 col-md-3\">\r\n        <ul class=\"nav flex-column nav-pills\" id=\"nav-tab\" role=\"tablist\">\r\n          @for (tab of tabs; track tab.name) {\r\n          <li *abpPermission=\"tab.requiredPolicy!\" class=\"nav-item\" (click)=\"selected = tab\">\r\n            <a class=\"nav-link\" [class.active]=\"selected?.name === tab.name\" role=\"tab\" href=\"javascript:void(0)\">\r\n              {{ tab.name | abpLocalization }}\r\n            </a>\r\n          </li>\r\n          }\r\n        </ul>\r\n      </div>\r\n      <div class=\"col-12 col-md-9\">\r\n        @if (isProfileLoaded && tabs.length && selected) {\r\n        <div class=\"tab-content\">\r\n          <div class=\"tab-pane fade show active fade-in\" [id]=\"selected.name + '-tab'\" role=\"tabpanel\">\r\n            <h2>{{ selected.name | abpLocalization }}</h2>\r\n\r\n            <hr class=\"my-4\" />\r\n\r\n            <ng-container *ngComponentOutlet=\"selected.component\" />\r\n          </div>\r\n        </div>\r\n        }\r\n      </div>\r\n      } @else {\r\n      <ng-template #loader>\r\n        <div [abpLoading]=\"true\"></div>\r\n      </ng-template>\r\n      }\r\n    </div>\r\n  </div>\r\n</div>","import { Component, EmbeddedViewRef, inject, Injector } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, tap } from 'rxjs/operators';\r\nimport {\r\n  AuthService,\r\n  ConfigStateService,\r\n  LocalizationPipe,\r\n  SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport { ButtonComponent, ToasterService } from '@abp/ng.theme.shared';\r\nimport {\r\n  ExtensibleFormComponent,\r\n  EXTENSIONS_IDENTIFIER,\r\n  FormPropData,\r\n  generateFormFromProps,\r\n} from '@abp/ng.components/extensible';\r\nimport { ProfileDto, ProfileService } from '@volo/abp.ng.account/public/proxy';\r\nimport { ManageProfileStateService } from '../../services/manage-profile-state.service';\r\nimport { eAccountComponents } from '../../enums';\r\n\r\n@Component({\r\n  selector: 'abp-personal-settings-form',\r\n  templateUrl: './personal-settings.component.html',\r\n  providers: [\r\n    SubscriptionService,\r\n    {\r\n      provide: EXTENSIONS_IDENTIFIER,\r\n      useValue: eAccountComponents.PersonalSettings,\r\n    },\r\n  ],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    LocalizationPipe,\r\n    ExtensibleFormComponent,\r\n    ButtonComponent,\r\n  ],\r\n})\r\nexport class PersonalSettingsComponent {\r\n  readonly #injector = inject(Injector);\r\n  protected readonly toasterService = inject(ToasterService);\r\n  protected readonly subscription = inject(SubscriptionService);\r\n  protected readonly manageProfileState = inject(ManageProfileStateService);\r\n  protected readonly profileService = inject(ProfileService);\r\n  protected readonly configState = inject(ConfigStateService);\r\n  protected readonly authService = inject(AuthService);\r\n\r\n  storedProfile: ProfileDto;\r\n\r\n  profile$: Observable<ProfileDto> = this.manageProfileState.getProfile$();\r\n\r\n  modalBusy = false;\r\n  modalRef: EmbeddedViewRef<any>;\r\n\r\n  form: FormGroup<any>;\r\n\r\n  token = '';\r\n\r\n  isEmailUpdateEnabled = true;\r\n\r\n  isUserNameUpdateEnabled = true;\r\n\r\n  buildForm = (profile: ProfileDto) => {\r\n    const data = new FormPropData(this.#injector, profile);\r\n    this.form = generateFormFromProps(data);\r\n  };\r\n\r\n  constructor() {\r\n    this.profile$\r\n      .pipe(\r\n        filter<ProfileDto>(Boolean),\r\n        tap(profile => (this.storedProfile = profile)),\r\n      )\r\n      .subscribe(this.buildForm);\r\n  }\r\n\r\n  submit() {\r\n    if (this.form.invalid) return;\r\n\r\n    const isRefreshTokenExists = this.authService.getRefreshToken();\r\n    const { phoneNumberConfirmed, ...profile } = this.form.value;\r\n\r\n    this.profileService.update(profile).subscribe(res => {\r\n      this.manageProfileState.setProfile(res);\r\n      this.configState.refreshAppState();\r\n      this.toasterService.success('AbpAccount::PersonalSettingsSaved', '', { life: 5000 });\r\n\r\n      if (isRefreshTokenExists) {\r\n        return this.authService.refreshToken();\r\n      }\r\n    });\r\n  }\r\n}\r\n","@if (form) {\r\n  <form [formGroup]=\"form\" (ngSubmit)=\"submit()\" validateOnSubmit>\r\n    <abp-extensible-form [selectedRecord]=\"storedProfile\" />\r\n    <abp-button\r\n      buttonType=\"submit\"\r\n      iconClass=\"fa fa-check\"\r\n      buttonClass=\"btn btn-primary color-white\"\r\n      [disabled]=\"form?.invalid\"\r\n    >\r\n      {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n    >\r\n  </form>\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  DOCUMENT,\r\n  ElementRef,\r\n  inject,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  viewChild,\r\n  viewChildren\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { EMPTY, Subject } from 'rxjs';\r\nimport { catchError, filter, finalize, switchMap, take, tap } from 'rxjs/operators';\r\nimport Cropper from 'cropperjs/dist/cropper.esm.js';\r\nimport { ConfigStateService, LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n  Confirmation,\r\n  ConfirmationService,\r\n  LoadingDirective,\r\n  ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport {\r\n  DEFAULT_PROFILE_ICON,\r\n  eProfilePictureType,\r\n  ProfilePictureService,\r\n  PROFILE_PICTURE,\r\n} from '@volo/abp.commercial.ng.ui/config';\r\n\r\n@Component({\r\n  selector: 'abp-profile-picture',\r\n  templateUrl: 'profile-picture.component.html',\r\n  styleUrls: ['profile-picture.component.scss'],\r\n  // ViewEncapsulation.None is important. Do not change! Otherwise cropper.css will not work.\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [FormsModule, LoadingDirective, AsyncPipe, LocalizationPipe],\r\n})\r\nexport class ProfilePictureComponent implements OnInit {\r\n  protected readonly cdRef = inject(ChangeDetectorRef);\r\n  protected readonly confirmation = inject(ConfirmationService);\r\n  protected readonly profilePictureService = inject(ProfilePictureService);\r\n  protected readonly configState = inject(ConfigStateService);\r\n  protected readonly toasterService = inject(ToasterService);\r\n  protected readonly profilePicture$ = inject(PROFILE_PICTURE);\r\n  private document = inject(DOCUMENT);\r\n\r\n  readonly uploadFileRef = viewChild('uploadFile', { read: ElementRef });\r\n  readonly selectedImgRef = viewChild('selectedImgRef', { read: ElementRef });\r\n  readonly selectedImagePreviews = viewChildren('preview', { read: ElementRef });\r\n\r\n  profileLoaded: boolean;\r\n  inProgress: boolean;\r\n  profilePictureType = eProfilePictureType.None;\r\n  selectedImage: any;\r\n  cropper: Cropper;\r\n\r\n  get currentUserId(): string {\r\n    return this.configState.getDeep('currentUser.id');\r\n  }\r\n\r\n  private toBase64(file) {\r\n    return new Promise((resolve, reject) => {\r\n      const reader = new FileReader();\r\n      reader.readAsDataURL(file);\r\n      reader.onload = () => resolve(reader.result);\r\n      reader.onerror = error => reject(error);\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.getProfilePhoto();\r\n  }\r\n\r\n  getProfilePhoto() {\r\n    this.profilePictureService\r\n      .getProfilePicture(this.currentUserId)\r\n      .pipe(\r\n        finalize(() => {\r\n          this.profileLoaded = true;\r\n          this.cdRef.markForCheck();\r\n        }),\r\n      )\r\n      .subscribe({\r\n        next: res => {\r\n          this.profilePictureType = res.type;\r\n          const pP = res.source || `data:image/png;base64,${res.fileContent}`;\r\n\r\n          if (this.profilePicture$.value.source !== pP) {\r\n            this.profilePicture$.next({ type: 'image', source: pP });\r\n          }\r\n        },\r\n        error: () => this.profilePicture$.next(DEFAULT_PROFILE_ICON),\r\n      });\r\n  }\r\n\r\n  submit() {\r\n    let localization = '';\r\n    switch (this.profilePictureType) {\r\n      case eProfilePictureType.Gravatar:\r\n        localization = 'UseGravatarConfirm';\r\n        break;\r\n      case eProfilePictureType.Image:\r\n        localization = 'PPUploadConfirm';\r\n        break;\r\n      default:\r\n        localization = 'NoProfilePictureConfirm';\r\n        break;\r\n    }\r\n\r\n    this.confirmation\r\n      .warn(`AbpAccount::${localization}`, 'AbpAccount::AreYouSure')\r\n      .pipe(\r\n        filter(res => res === Confirmation.Status.confirm),\r\n        tap(() => (this.inProgress = true)),\r\n        switchMap(() => {\r\n          if (this.profilePictureType === eProfilePictureType.Image) {\r\n            const subject = new Subject();\r\n\r\n            this.cropper.getCroppedCanvas().toBlob(blob => {\r\n              this.profilePictureService\r\n                .setProfilePicture({\r\n                  type: this.profilePictureType,\r\n                  imageContent: blob,\r\n                })\r\n                .pipe(\r\n                  finalize(() => subject.complete()),\r\n                  catchError(error => {\r\n                    subject.error(error);\r\n                    return EMPTY;\r\n                  }),\r\n                )\r\n                .subscribe(result => subject.next(result));\r\n            });\r\n\r\n            return subject.asObservable();\r\n          }\r\n\r\n          return this.profilePictureService.setProfilePicture({\r\n            type: this.profilePictureType,\r\n          });\r\n        }),\r\n        take(1),\r\n        finalize(() => {\r\n          this.inProgress = false;\r\n          const scrollContainer = this.document.getElementsByClassName('lpx-scroll-container')[0];\r\n          if (scrollContainer) {\r\n            scrollContainer.scrollTo({ top: 0, behavior: 'instant' });\r\n          }\r\n        }),\r\n      )\r\n      .subscribe(() => {\r\n        this.getProfilePhoto();\r\n        this.toasterService.success('AbpUi::SavedSuccessfully');\r\n        this.selectedImage = null;\r\n\r\n        const uploadFileRef = this.uploadFileRef();\r\n        if (uploadFileRef) {\r\n          uploadFileRef.nativeElement.value = null;\r\n        }\r\n      });\r\n  }\r\n\r\n  async onSelectImage(file: File) {\r\n    this.selectedImage = await this.toBase64(file);\r\n    this.cdRef.detectChanges();\r\n\r\n    if (this.cropper) {\r\n      this.cropper.destroy();\r\n    }\r\n\r\n    const previewSizes = [250, 150, 75];\r\n\r\n    const setImgUrls = () => {\r\n      this.selectedImagePreviews().forEach((el, i) => {\r\n        const width = previewSizes[i];\r\n        el.nativeElement.src = this.cropper.getCroppedCanvas({ width, height: width }).toDataURL();\r\n      });\r\n    };\r\n\r\n    this.cropper = new Cropper(this.selectedImgRef().nativeElement, {\r\n      aspectRatio: 1,\r\n      viewMode: 1,\r\n      cropend: () => setImgUrls(),\r\n      ready: () => setImgUrls(),\r\n    });\r\n  }\r\n}\r\n","@if (profileLoaded) {\r\n<div class=\"row\">\r\n  <div class=\"col\">\r\n    <div class=\"mb-3\">\r\n      <label class=\"form-label\">{{ 'AbpAccount::CurrentProfilePicture' | abpLocalization }}</label>\r\n      <br />\r\n      <img\r\n        class=\"current-profile-picture\"\r\n        [src]=\"(profilePicture$ | async)?.source\"\r\n        alt=\"current-profile-picture\"\r\n      />\r\n    </div>\r\n  </div>\r\n</div>\r\n<hr />\r\n\r\n<div class=\"row\">\r\n  <div class=\"col\">\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"radio\"\r\n        name=\"pptype\"\r\n        id=\"Radio_UseDefault\"\r\n        class=\"form-check-input pp-type-selector\"\r\n        [value]=\"0\"\r\n        [(ngModel)]=\"profilePictureType\"\r\n      />\r\n      <label class=\"form-check-label\" for=\"Radio_UseDefault\">{{\r\n        'AbpAccount::UseDefault' | abpLocalization\r\n      }}</label>\r\n    </div>\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"radio\"\r\n        name=\"pptype\"\r\n        id=\"Radio_UseGravatar\"\r\n        class=\"form-check-input pp-type-selector\"\r\n        [value]=\"1\"\r\n        [(ngModel)]=\"profilePictureType\"\r\n      />\r\n      <label class=\"form-check-label\" for=\"Radio_UseGravatar\">{{\r\n        'AbpAccount::DisplayName:UseGravatar' | abpLocalization\r\n      }}</label>\r\n      <small class=\"d-block form-text text-muted\">{{\r\n        'AbpAccount::Description:UseGravatar' | abpLocalization\r\n      }}</small>\r\n    </div>\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"radio\"\r\n        name=\"pptype\"\r\n        id=\"Radio_UploadFile\"\r\n        class=\"form-check-input pp-type-selector\"\r\n        [value]=\"2\"\r\n        [(ngModel)]=\"profilePictureType\"\r\n      />\r\n      <label class=\"form-check-label\" for=\"Radio_UploadFile\">{{\r\n        'AbpAccount::UploadFile' | abpLocalization\r\n      }}</label>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n@if (profilePictureType === 2) {\r\n<div class=\"row\" id=\"UploadPPContainer\">\r\n  <div class=\"col\">\r\n    <h3>{{ 'AbpAccount::ChangeProfilePicture' | abpLocalization }}</h3>\r\n    <div class=\"mb-3\">\r\n      <label for=\"UploadProfilePictureInfo_Picture\" class=\"form-label\">{{\r\n        'AbpAccount::SelectNewImage' | abpLocalization\r\n      }}</label\r\n      ><input\r\n        #uploadFile\r\n        accept=\"image/*\"\r\n        type=\"file\"\r\n        class=\"form-control\"\r\n        id=\"UploadProfilePictureInfo_Picture\"\r\n        (change)=\"onSelectImage($event.target.files[0])\"\r\n      />\r\n    </div>\r\n\r\n    @if (selectedImage) {\r\n    <div class=\"general-image-container\">\r\n      <img #selectedImgRef class=\"selected-image\" alt=\"selected-image\" [src]=\"selectedImage\" />\r\n    </div>\r\n\r\n    <div id=\"CursorInfo\" class=\"mt-2\">\r\n      {{ 'AbpAccount::MoveCursorOnExamples' | abpLocalization }}\r\n    </div>\r\n\r\n    <div class=\"image-process-section\">\r\n      <ul class=\"sample-images clearfix mt-2\">\r\n        <li class=\"big\"><img #preview alt=\"selected-image-preview-big\" /></li>\r\n        <li class=\"medium\"><img #preview alt=\"selected-image-preview-medium\" /></li>\r\n        <li class=\"small\"><img #preview alt=\"selected-image-preview-small\" /></li>\r\n      </ul>\r\n    </div>\r\n    }\r\n  </div>\r\n</div>\r\n}\r\n\r\n<div class=\"mt-2 row\">\r\n  <div class=\"col\">\r\n    <button\r\n      class=\"btn btn-primary\"\r\n      (click)=\"submit()\"\r\n      [disabled]=\"inProgress || (profilePictureType === 2 && !selectedImage)\"\r\n    >\r\n      {{ 'AbpAccount::SaveChanges' | abpLocalization }}\r\n    </button>\r\n  </div>\r\n</div>\r\n} @else {\r\n<div [abpLoading]=\"!profileLoaded\"></div>\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  inject,\r\n  Injector,\r\n  OnInit,\r\n  viewChild\r\n} from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormGroup,\r\n  Validators,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { RouterLink } from '@angular/router';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { of, throwError } from 'rxjs';\r\nimport { catchError, finalize, switchMap } from 'rxjs/operators';\r\nimport {\r\n  AuthService,\r\n  AutofocusDirective,\r\n  ConfigStateService,\r\n  LocalizationPipe,\r\n  ShowPasswordDirective,\r\n  TrackCapsLockDirective,\r\n} from '@abp/ng.core';\r\nimport { ButtonComponent, getPasswordValidators, ToasterService } from '@abp/ng.theme.shared';\r\nimport {\r\n  AccountService,\r\n  RecaptchaService,\r\n  PasswordComplexityIndicatorService,\r\n} from '../../services';\r\nimport { RECAPTCHA_STRATEGY } from '../../strategies/recaptcha.strategy';\r\nimport { getRedirectUrl } from '../../utils/auth-utils';\r\nimport { ProgressBarStats } from '../../models/password-complexity';\r\nimport { RegisterFormModel } from '../../models/registerFormModel';\r\nimport { PasswordComplexityIndicatorComponent } from '../password-complexity-indicator/password-complexity-indicator.component';\r\n\r\nconst { maxLength, required, email } = Validators;\r\n\r\n@Component({\r\n  selector: 'abp-register',\r\n  templateUrl: './register.component.html',\r\n  providers: [RecaptchaService],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    AutofocusDirective,\r\n    ShowPasswordDirective,\r\n    TrackCapsLockDirective,\r\n    LocalizationPipe,\r\n    PasswordComplexityIndicatorComponent,\r\n    ButtonComponent,\r\n    NgbTooltip,\r\n    RouterLink,\r\n  ],\r\n})\r\nexport class RegisterComponent implements OnInit, AfterViewInit {\r\n  protected injector = inject(Injector);\r\n  protected fb = inject(FormBuilder);\r\n  protected accountService = inject(AccountService);\r\n  protected toasterService = inject(ToasterService);\r\n  protected configState = inject(ConfigStateService);\r\n  protected authService = inject(AuthService);\r\n  protected recaptchaService = inject(RecaptchaService);\r\n  protected passwordComplexityService = inject(PasswordComplexityIndicatorService);\r\n  \r\n  readonly recaptchaRef = viewChild<ElementRef<HTMLDivElement>>('recaptcha');\r\n\r\n  form: FormGroup<RegisterFormModel>;\r\n\r\n  inProgress: boolean;\r\n\r\n  isSelfRegistrationEnabled = true;\r\n\r\n  showPassword = false;\r\n  capsLock = false;\r\n  progressBar: ProgressBarStats;\r\n\r\n\r\n\r\n\r\n  ngOnInit() {\r\n    this.isSelfRegistrationEnabled =\r\n      (\r\n        (this.configState.getSetting('Abp.Account.IsSelfRegistrationEnabled') as string) || ''\r\n      ).toLowerCase() !== 'false';\r\n    if (!this.isSelfRegistrationEnabled) {\r\n      this.toasterService.warn(\r\n        {\r\n          key: 'AbpAccount::SelfRegistrationDisabledMessage',\r\n          defaultValue: 'Self registration is disabled.',\r\n        },\r\n        null,\r\n        { life: 10000 },\r\n      );\r\n      return;\r\n    }\r\n\r\n    this.form = this.fb.group({\r\n      username: ['', [required, maxLength(255)]],\r\n      password: ['', [required, ...getPasswordValidators(this.injector)]],\r\n      email: ['', [required, email]],\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.recaptchaService.setStrategy(\r\n      RECAPTCHA_STRATEGY.Register(this.configState, this.recaptchaRef().nativeElement),\r\n    );\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.form.invalid) return;\r\n\r\n    this.inProgress = true;\r\n\r\n    const newUser = {\r\n      userName: this.form.get('username').value,\r\n      password: this.form.get('password').value,\r\n      emailAddress: this.form.get('email').value,\r\n      appName: 'Angular',\r\n    };\r\n\r\n    (this.recaptchaService.isEnabled ? this.recaptchaService.getVerificationToken() : of(undefined))\r\n      .pipe(\r\n        switchMap(captchaResponse =>\r\n          this.accountService.register({ ...newUser, captchaResponse }).pipe(\r\n            switchMap(() =>\r\n              this.authService.login({\r\n                username: newUser.userName,\r\n                password: newUser.password,\r\n                redirectUrl: getRedirectUrl(this.injector) || '/',\r\n              }),\r\n            ),\r\n            catchError(error => {\r\n              this.recaptchaService.reset();\r\n              this.toasterService.error(\r\n                error.error?.error_description ||\r\n                  error.error?.error?.message ||\r\n                  'AbpAccount::DefaultErrorMessage',\r\n                null,\r\n                { life: 7000 },\r\n              );\r\n              return throwError(() => error);\r\n            }),\r\n          ),\r\n        ),\r\n\r\n        finalize(() => (this.inProgress = false)),\r\n      )\r\n\r\n      .subscribe();\r\n  }\r\n\r\n  get password(): string {\r\n    return this.form.value.password;\r\n  }\r\n\r\n  validatePassword() {\r\n    this.progressBar = this.passwordComplexityService.validatePassword(this.password);\r\n  }\r\n}\r\n","<h5 class=\"mb-3\">\r\n  {{ 'AbpAccount::AlreadyRegistered' | abpLocalization }}\r\n  <a routerLink=\"/account/login\" class=\"text-decoration-none\">{{\r\n    'AbpAccount::Login' | abpLocalization\r\n  }}</a>\r\n</h5>\r\n\r\n@if (isSelfRegistrationEnabled) {\r\n  <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" validateOnSubmit>\r\n    <div class=\"form-floating mb-2\">\r\n      <input\r\n        autofocus\r\n        type=\"text\"\r\n        class=\"form-control\"\r\n        id=\"input-user-name\"\r\n        placeholder=\"name@example.com\"\r\n        formControlName=\"username\"\r\n      />\r\n      <label for=\"input-user-name\">\r\n        {{ 'AbpAccount::UserName' | abpLocalization }}\r\n      </label>\r\n    </div>\r\n\r\n    <div class=\"form-floating mb-2\">\r\n      <input\r\n        type=\"email\"\r\n        class=\"form-control\"\r\n        id=\"input-email-address\"\r\n        placeholder=\"name@example.com\"\r\n        formControlName=\"email\"\r\n      />\r\n      <label for=\"input-email-address\">\r\n        {{ 'AbpAccount::EmailAddress' | abpLocalization }}\r\n      </label>\r\n    </div>\r\n\r\n    <div class=\"form-floating mb-2 d-flex flex-column\">\r\n      <input\r\n        id=\"password\"\r\n        class=\"form-control\"\r\n        placeholder=\"Password\"\r\n        formControlName=\"password\"\r\n        (abpCapsLock)=\"capsLock = $event\"\r\n        [abpShowPassword]=\"showPassword\"\r\n        (keyup)=\"validatePassword()\"\r\n      />\r\n      <abp-password-complexity-indicator [progressBar]=\"progressBar\" />\r\n      @if (progressBar?.width > 0) {\r\n        <div\r\n          class=\"d-flex align-items-center order-2 mt-1\"\r\n          style=\"font-weight: 500; padding-left: 1.25rem\"\r\n        >\r\n          {{ 'AbpAccount::Strength' | abpLocalization }}&nbsp;\r\n          <span [style.color]=\"progressBar?.bgColor\">{{\r\n            'AbpAccount::' + progressBar?.text | abpLocalization\r\n          }}</span>\r\n        </div>\r\n      }\r\n      <label for=\"input-password\" class=\"opacity-100\">\r\n        {{ 'AbpAccount::Password' | abpLocalization }}\r\n      </label>\r\n      <i\r\n        id=\"capslockicon\"\r\n        class=\"bi bi-capslock caps-lock-icon\"\r\n        [class.d-none]=\"!capsLock\"\r\n        [ngbTooltip]=\"'AbpAccount::CapsLockOn' | abpLocalization\"\r\n      ></i>\r\n\r\n      <i\r\n        id=\"passwordicon\"\r\n        class=\"bi bi-eye{{ showPassword ? '' : '-slash' }} show-pass-icon\"\r\n        aria-label=\"Show/Hide password\"\r\n        (click)=\"showPassword = !showPassword\"\r\n        [ngbTooltip]=\"\r\n          'AbpAccount::' + (!showPassword ? 'ShowPassword' : 'HidePassword') | abpLocalization\r\n        \"\r\n      ></i>\r\n    </div>\r\n\r\n    <div #recaptcha></div>\r\n\r\n    <div class=\"row mb-3\">\r\n      <div class=\"col\">\r\n        <abp-button\r\n          class=\"d-grid\"\r\n          buttonClass=\"btn btn-primary register-btn btn-lg w-100\"\r\n          [loading]=\"inProgress\"\r\n          buttonType=\"submit\"\r\n        >\r\n          {{ 'AbpAccount::Register' | abpLocalization }}\r\n        </abp-button>\r\n      </div>\r\n    </div>\r\n  </form>\r\n}\r\n","import {\r\n  UntypedFormBuilder,\r\n  UntypedFormGroup,\r\n  Validators,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { Component, Injector, OnInit, inject } from '@angular/core';\r\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { comparePasswords, Validation, NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent, getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { AccountService } from '../../services/account.service';\r\nimport { PasswordComplexityIndicatorService } from '../../services/password-complexity-indicator.service';\r\nimport { ProgressBarStats } from '../../models/password-complexity';\r\nimport { PasswordComplexityIndicatorComponent } from '../password-complexity-indicator/password-complexity-indicator.component';\r\n\r\nconst PASSWORD_FIELDS = ['password', 'confirmPassword'];\r\n\r\n@Component({\r\n  selector: 'abp-reset-password',\r\n  templateUrl: './reset-password.component.html',\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    LocalizationPipe,\r\n    PasswordComplexityIndicatorComponent,\r\n    ButtonComponent,\r\n    RouterLink,\r\n  ],\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n  inProgress = false;\r\n  isPasswordReset = false;\r\n  form: UntypedFormGroup;\r\n  progressBar: ProgressBarStats;\r\n\r\n  private readonly passwordComplexityService = inject(PasswordComplexityIndicatorService);\r\n  private fb = inject(UntypedFormBuilder);\r\n  private accountService = inject(AccountService);\r\n  private route = inject(ActivatedRoute);\r\n  private router = inject(Router);\r\n  private injector = inject(Injector);\r\n\r\n  mapErrorsFn: Validation.MapErrorsFn = (errors, groupErrors, control) => {\r\n    if (PASSWORD_FIELDS.indexOf(String(control.name)) < 0) return errors;\r\n\r\n    return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));\r\n  };\r\n\r\n  ngOnInit(): void {\r\n    this.route.queryParams.subscribe(({ userId, resetToken }) => {\r\n      if (!userId || !resetToken) this.router.navigateByUrl('/account/login');\r\n\r\n      this.form = this.fb.group(\r\n        {\r\n          userId: [userId, [Validators.required]],\r\n          resetToken: [resetToken, [Validators.required]],\r\n          password: ['', [Validators.required, ...getPasswordValidators(this.injector)]],\r\n          confirmPassword: ['', [Validators.required, ...getPasswordValidators(this.injector)]],\r\n        },\r\n        {\r\n          validators: [comparePasswords(PASSWORD_FIELDS)],\r\n        },\r\n      );\r\n    });\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.form.invalid || this.inProgress) return;\r\n\r\n    this.inProgress = true;\r\n\r\n    this.accountService\r\n      .resetPassword({\r\n        userId: this.form.get('userId').value,\r\n        resetToken: this.form.get('resetToken').value,\r\n        password: this.form.get('password').value,\r\n      })\r\n      .pipe(finalize(() => (this.inProgress = false)))\r\n      .subscribe(() => {\r\n        this.isPasswordReset = true;\r\n      });\r\n  }\r\n\r\n  get password(): string {\r\n    return this.form.get('password').value;\r\n  }\r\n\r\n  validatePassword() {\r\n    this.progressBar = this.passwordComplexityService.validatePassword(this.password);\r\n  }\r\n}\r\n","@if (!isPasswordReset) {\r\n  <form [formGroup]=\"form\" [mapErrorsFn]=\"mapErrorsFn\" (ngSubmit)=\"onSubmit()\" validateOnSubmit>\r\n    <p>{{ 'AbpAccount::ResetPassword_Information' | abpLocalization }}</p>\r\n    <div class=\"mb-3 d-flex flex-column\">\r\n      <label for=\"input-password\" class=\"form-label\">\r\n        {{ 'AbpAccount::Password' | abpLocalization }}\r\n        <span> * </span>\r\n      </label>\r\n      <input\r\n        type=\"password\"\r\n        id=\"input-password\"\r\n        class=\"form-control\"\r\n        formControlName=\"password\"\r\n        (keyup)=\"validatePassword()\"\r\n      />\r\n      <abp-password-complexity-indicator [progressBar]=\"progressBar\" />\r\n      @if (progressBar?.width > 0) {\r\n        <div class=\"d-flex align-items-center order-2 mt-1\" style=\"font-weight: 500\">\r\n          {{ 'AbpAccount::Strength' | abpLocalization }}&nbsp;\r\n          <span [style.color]=\"progressBar?.bgColor\">{{\r\n            'AbpAccount::' + progressBar?.text | abpLocalization\r\n          }}</span>\r\n        </div>\r\n      }\r\n    </div>\r\n    <div class=\"mb-3\">\r\n      <label for=\"input-confirm-password\" class=\"form-label\">{{\r\n        'AbpAccount::ConfirmPassword' | abpLocalization\r\n      }}</label>\r\n      <span> * </span>\r\n      <input\r\n        type=\"password\"\r\n        id=\"input-confirm-password\"\r\n        class=\"form-control\"\r\n        formControlName=\"confirmPassword\"\r\n      />\r\n    </div>\r\n    <button class=\"me-2 btn btn-outline-primary\" type=\"button\">\r\n      {{ 'AbpAccount::Cancel' | abpLocalization }}\r\n    </button>\r\n    <abp-button buttonClass=\"me-2 btn btn-primary\" [loading]=\"inProgress\" buttonType=\"submit\">\r\n      {{ 'AbpAccount::Submit' | abpLocalization }}\r\n    </abp-button>\r\n  </form>\r\n} @else {\r\n  <p>\r\n    {{ 'AbpAccount::YourPasswordIsSuccessfullyReset' | abpLocalization }}\r\n  </p>\r\n\r\n  <a routerLink=\"/account/login\">\r\n    <button class=\"d-block mt-2 mb-3 btn btn-primary\">\r\n      {{ 'AbpAccount::BackToLogin' | abpLocalization }}\r\n    </button>\r\n  </a>\r\n}\r\n","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AccountService } from '../../services/account.service';\r\nimport { SecurityCodeService } from '../../services/security-code.service';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { AutofocusDirective, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n  selector: 'abp-send-security-code',\r\n  templateUrl: 'send-security-code.component.html',\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    LocalizationPipe,\r\n    AutofocusDirective,\r\n    ButtonComponent,\r\n    RouterLink,\r\n  ],\r\n})\r\nexport class SendSecurityCodeComponent implements OnInit, OnDestroy {\r\n  protected service = inject(SecurityCodeService);\r\n  protected accountService = inject(AccountService);\r\n  protected fb = inject(UntypedFormBuilder);\r\n\r\n  providers: string[] = [];\r\n  selectedProvider: string;\r\n  loading: boolean;\r\n  showCodeForm: boolean;\r\n\r\n  codeForm = this.fb.group({\r\n    code: [null, [Validators.required]],\r\n  });\r\n\r\n  ngOnInit() {\r\n    const { twoFactorToken: token, userId } = this.service.data;\r\n\r\n    this.accountService.getTwoFactorProviders({ token, userId }).subscribe(res => {\r\n      this.providers = res;\r\n      this.selectedProvider = res[0];\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.service.data = null;\r\n  }\r\n\r\n  sendTwoFactorCode() {\r\n    if (this.loading) return;\r\n    this.loading = true;\r\n\r\n    const { twoFactorToken: token, userId } = this.service.data;\r\n    this.accountService\r\n      .sendTwoFactorCode({\r\n        token,\r\n        userId,\r\n        provider: this.selectedProvider,\r\n      })\r\n      .pipe(finalize(() => (this.loading = false)))\r\n      .subscribe(() => {\r\n        this.showCodeForm = true;\r\n      });\r\n  }\r\n\r\n  login() {\r\n    if (this.codeForm.invalid) return;\r\n\r\n    const { code } = this.codeForm.value;\r\n\r\n    this.loading = true;\r\n    this.service\r\n      .login({ code, provider: this.selectedProvider })\r\n      .pipe(finalize(() => (this.loading = false)))\r\n      .subscribe();\r\n  }\r\n}\r\n","@if (!showCodeForm) {\r\n  <form>\r\n    <p>{{ 'AbpAccount::SendSecurityCode_Information' | abpLocalization }}</p>\r\n\r\n    <div class=\"mb-3\">\r\n      <label for=\"selected-provider\" class=\"form-label\">{{\r\n        'AbpAccount::SelectedProvider' | abpLocalization\r\n      }}</label>\r\n      <select\r\n        class=\"form-select form-control\"\r\n        id=\"selected-provider\"\r\n        name=\"selected-provider\"\r\n        [(ngModel)]=\"selectedProvider\"\r\n      >\r\n        @for (provider of providers; track $index) {\r\n          <option [ngValue]=\"provider\">{{ provider }}</option>\r\n        }\r\n      </select>\r\n    </div>\r\n\r\n    <abp-button (click)=\"sendTwoFactorCode()\" [loading]=\"loading\">\r\n      {{ 'AbpAccount::Submit' | abpLocalization }}\r\n    </abp-button>\r\n  </form>\r\n} @else {\r\n  <form [formGroup]=\"codeForm\" (ngSubmit)=\"login()\">\r\n    <p>{{ 'AbpAccount::VerifySecurityCode_Information' | abpLocalization }}</p>\r\n\r\n    <div class=\"mb-3\">\r\n      <label for=\"code\" class=\"form-label\">{{ 'AbpAccount::Code' | abpLocalization }}</label>\r\n      <input\r\n        class=\"form-control\"\r\n        type=\"text\"\r\n        id=\"code\"\r\n        formControlName=\"code\"\r\n        autocomplete=\"off\"\r\n        autofocus\r\n      />\r\n    </div>\r\n\r\n    <abp-button buttonType=\"submit\" [loading]=\"loading\">\r\n      {{ 'AbpAccount::Submit' | abpLocalization }}\r\n    </abp-button>\r\n  </form>\r\n\r\n  <div class=\"mt-3\">\r\n    <p>\r\n      <a [routerLink]=\"['/account/login-with-recovery-code']\">\r\n        {{ 'AbpAccount::LoginWithRecoveryCode_URL' | abpLocalization }}.\r\n      </a>\r\n    </p>\r\n  </div>\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LocalizationPipe} from '@abp/ng.core';\r\nimport {\r\n  EXTENSIBLE_FORM_VIEW_PROVIDER,\r\n  EXTENSIONS_FORM_PROP\r\n} from '@abp/ng.components/extensible';\r\nimport { ProfileService, Volo } from '@volo/abp.ng.account/public/proxy';\r\n\r\n@Component({\r\n  selector: 'abp-personal-settings-time-zone',\r\n  templateUrl: './personal-settings-timezone.component.html',\r\n  viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER],\r\n  imports: [FormsModule, ReactiveFormsModule, NgxValidateCoreModule, AsyncPipe, LocalizationPipe],\r\n})\r\nexport class PersonalSettingsTimerZoneComponent {\r\n  protected readonly profileService = inject(ProfileService);\r\n  protected readonly formProp = inject(EXTENSIONS_FORM_PROP);\r\n  timeZones$: Observable<Volo.Abp.NameValue[]> = this.profileService.getTimezones();\r\n\r\n  get name() {\r\n    return this.formProp.name;\r\n  }\r\n}\r\n","<div class=\"mb-3\">\r\n  <label class=\"form-label\"\r\n    >{{ 'AbpSettingManagement::Menu:TimeZone' | abpLocalization }}<span class=\"ms-1\"></span>\r\n  </label>\r\n  <div>\r\n    <select class=\"form-select form-control\" [formControlName]=\"name\" name=\"timezone\">\r\n      @if (timeZones$ | async; as timezones) {\r\n        @for (item of timezones; track item.value) {\r\n          <option [ngValue]=\"item.value\">\r\n            {{ item.name }}\r\n          </option>\r\n        }\r\n      }\r\n    </select>\r\n  </div>\r\n</div>\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe, ShowPasswordDirective, SubscriptionService } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { ChangePasswordService } from '../../services/change-password.service';\r\nimport { PasswordComplexityIndicatorService } from '../../services/password-complexity-indicator.service';\r\nimport { ProgressBarStats } from '../../models/password-complexity';\r\nimport { ChangePasswordFormModel } from '../../models/changePasswordFormModel';\r\nimport { PasswordComplexityIndicatorComponent } from '../password-complexity-indicator/password-complexity-indicator.component';\r\n\r\n@Component({\r\n  selector: 'abp-refresh-password-form',\r\n  templateUrl: './refresh-password.component.html',\r\n  exportAs: 'abpRefreshPasswordForm',\r\n  providers: [SubscriptionService],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    ShowPasswordDirective,\r\n    LocalizationPipe,\r\n    PasswordComplexityIndicatorComponent,\r\n    ButtonComponent\r\n],\r\n})\r\nexport class RefreshPasswordComponent implements OnInit {\r\n  private readonly passwordComplexityService = inject(PasswordComplexityIndicatorService);\r\n  private readonly service = inject(ChangePasswordService);\r\n  protected readonly subscription = inject(SubscriptionService);\r\n  form: FormGroup<ChangePasswordFormModel>;\r\n  progressBar: ProgressBarStats;\r\n  showCurrentPassword = false;\r\n  showNewPassword = false;\r\n  showConfirmPassword = false;\r\n  mapErrorsFn = this.service.MapErrorsFnFactory();\r\n\r\n  ngOnInit(): void {\r\n    this.form = this.service.buildForm();\r\n  }\r\n\r\n  onSuccess() {\r\n    const sub = this.service.redirectToReturnUrl();\r\n    this.subscription.addOne(sub);\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.form.invalid) return;\r\n    const input = this.form.value;\r\n    const sub = this.service.changePasswordAndLogin({\r\n      currentPassword: input.currentPassword,\r\n      newPassword: input.newPassword,\r\n    });\r\n    this.subscription.addOne(\r\n      sub,\r\n      () => this.onSuccess(),\r\n      e => this.service.showErrorMessage(e),\r\n    );\r\n  }\r\n\r\n  get newPassword(): string {\r\n    return this.form.get('newPassword').value;\r\n  }\r\n\r\n  validatePassword() {\r\n    this.progressBar = this.passwordComplexityService.validatePassword(this.newPassword);\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [mapErrorsFn]=\"mapErrorsFn\" validateOnSubmit>\r\n  <div class=\"mb-3\">\r\n    <label class=\"form-label\" for=\"current-password\">\r\n      {{ 'AbpIdentity::DisplayName:CurrentPassword' | abpLocalization }}\r\n      <span> * </span>\r\n    </label>\r\n    <div class=\"input-group form-group\" validationTarget>\r\n      <input\r\n        class=\"form-control\"\r\n        id=\"current-password\"\r\n        formControlName=\"currentPassword\"\r\n        [abpShowPassword]=\"showCurrentPassword\"\r\n      />\r\n      <button\r\n        class=\"btn btn-secondary\"\r\n        type=\"button\"\r\n        (click)=\"showCurrentPassword = !showCurrentPassword\"\r\n      >\r\n        <i\r\n          class=\"fa\"\r\n          aria-hidden=\"true\"\r\n          [class]=\"{\r\n            'fa-eye-slash': !showCurrentPassword,\r\n            'fa-eye': showCurrentPassword,\r\n          }\"\r\n        ></i>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <div class=\"mb-3 d-flex flex-column\">\r\n    <label class=\"form-label\" for=\"new-password\">\r\n      {{ 'AbpIdentity::DisplayName:NewPassword' | abpLocalization }}\r\n      <span> * </span>\r\n    </label>\r\n    <div class=\"input-group form-group\" validationTarget>\r\n      <input\r\n        class=\"form-control\"\r\n        id=\"new-password\"\r\n        formControlName=\"newPassword\"\r\n        [abpShowPassword]=\"showNewPassword\"\r\n        (keyup)=\"validatePassword()\"\r\n      />\r\n      <button class=\"btn btn-secondary\" type=\"button\" (click)=\"showNewPassword = !showNewPassword\">\r\n        <i\r\n          class=\"fa\"\r\n          aria-hidden=\"true\"\r\n          [class]=\"{\r\n            'fa-eye-slash': !showNewPassword,\r\n            'fa-eye': showNewPassword,\r\n          }\"\r\n        ></i>\r\n      </button>\r\n    </div>\r\n    <abp-password-complexity-indicator [progressBar]=\"progressBar\" />\r\n    @if (progressBar?.width > 0) {\r\n      <div class=\"d-flex align-items-center order-2 mt-1\" style=\"font-weight: 500\">\r\n        {{ 'AbpAccount::Strength' | abpLocalization }}&nbsp;\r\n        <span [style.color]=\"progressBar?.bgColor\">{{\r\n          'AbpAccount::' + progressBar?.text | abpLocalization\r\n        }}</span>\r\n      </div>\r\n    }\r\n  </div>\r\n\r\n  <div class=\"mb-3\">\r\n    <label class=\"form-label\" for=\"confirm-new-password\">\r\n      {{ 'AbpIdentity::DisplayName:NewPasswordConfirm' | abpLocalization }}\r\n      <span> * </span>\r\n    </label>\r\n    <div class=\"input-group form-group\" validationTarget>\r\n      <input\r\n        class=\"form-control\"\r\n        id=\"confirm-new-password\"\r\n        formControlName=\"repeatNewPassword\"\r\n        [abpShowPassword]=\"showConfirmPassword\"\r\n        (keyup)=\"validatePassword()\"\r\n      />\r\n      <button\r\n        class=\"btn btn-secondary\"\r\n        type=\"button\"\r\n        (click)=\"showConfirmPassword = !showConfirmPassword\"\r\n      >\r\n        <i\r\n          class=\"fa\"\r\n          aria-hidden=\"true\"\r\n          [class]=\"{\r\n            'fa-eye-slash': !showConfirmPassword,\r\n            'fa-eye': showConfirmPassword,\r\n          }\"\r\n        ></i>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <abp-button\r\n    class=\"d-grid\"\r\n    iconClass=\"fa fa-check\"\r\n    buttonClass=\"btn btn-primary color-white\"\r\n    buttonType=\"submit\"\r\n  >\r\n    {{ 'AbpIdentity::Submit' | abpLocalization }}\r\n  </abp-button>\r\n</form>\r\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\r\nimport { QRCodeComponent } from 'angularx-qrcode';\r\nimport { QRCodeErrorCorrectionLevel } from 'qrcode';\r\n\r\n@Component({\r\n  selector: 'abp-qr-code',\r\n  template: `\r\n    @if (qrData(); as data) {\r\n      <qrcode\r\n        [qrdata]=\"data\"\r\n        [width]=\"width() || 256\"\r\n        [errorCorrectionLevel]=\"errorCorrectionLevel() || 'M'\"\r\n      ></qrcode>\r\n    } @else {\r\n      <div class=\"text-center text-muted\">\r\n        <i class=\"fa fa-qrcode fa-5x\"></i>\r\n      </div>\r\n    }\r\n  `,\r\n  imports: [QRCodeComponent],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class QrCodeComponent {\r\n  readonly qrData = input<string | undefined>(undefined);\r\n  readonly width = input<number | undefined>(undefined);\r\n  readonly errorCorrectionLevel = input<QRCodeErrorCorrectionLevel | undefined>(undefined);\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\r\nimport { filter, switchMap } from 'rxjs';\r\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AbpWindowService, LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n  ButtonComponent,\r\n  Confirmation,\r\n  ConfirmationService,\r\n  FormInputComponent,\r\n  ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport { QrCodeComponent } from '../qr-code/qr-code.component';\r\nimport { AuthenticatorAppService } from '../../services/authenticator-app.service';\r\nimport { AuthenticatorSteps } from '../../models';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'abp-authenticator-app',\r\n  templateUrl: './authenticator-app.component.html',\r\n  providers: [AuthenticatorAppService],\r\n  imports: [\r\n    NgbNavModule,\r\n    LocalizationPipe,\r\n    QrCodeComponent,\r\n    FormInputComponent,\r\n    ButtonComponent,\r\n    NgTemplateOutlet,\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AuthenticatorAppComponent {\r\n  protected readonly authenticatorAppService = inject(AuthenticatorAppService);\r\n  protected readonly windowService = inject(AbpWindowService);\r\n  protected readonly toasterService = inject(ToasterService);\r\n  protected readonly confirmationService = inject(ConfirmationService);\r\n\r\n  activeStep: AuthenticatorSteps = 'Authenticator';\r\n  verifyCode = '';\r\n  isVerifiedAuthenticatorCode = signal(false);\r\n  hasAuthenticator = this.authenticatorAppService.hasAuthenticator;\r\n  authenticatorInfo = this.authenticatorAppService.authenticatorInfo;\r\n  recoveryCodeList = signal<string[]>([]);\r\n  hasRecoveryCodes = computed(() => this.recoveryCodeList().length > 0);\r\n\r\n  copyToClipboard(text: string): void {\r\n    this.windowService.copyToClipboard(text);\r\n    this.toasterService.success('AbpUi::CopiedToTheClipboard');\r\n  }\r\n\r\n  verifyQrCode(): void {\r\n    if (!this.verifyCode) {\r\n      return;\r\n    }\r\n\r\n    this.authenticatorAppService\r\n      .verifyAuthenticatorCode(this.verifyCode)\r\n      .subscribe(({ recoveryCodes }) => {\r\n        this.isVerifiedAuthenticatorCode.set(true);\r\n        this.recoveryCodeList.set(recoveryCodes);\r\n      });\r\n  }\r\n\r\n  printRecoverCodes(): void {\r\n    if (this.recoveryCodeList().length < 1) return;\r\n\r\n    const printWindow = this.windowService.open();\r\n    printWindow.document.write('<html><body>');\r\n    printWindow.document.write(...this.recoveryCodeList().join('<br>'));\r\n    printWindow.document.write('</body></html>');\r\n    printWindow.document.close();\r\n    printWindow.print();\r\n  }\r\n\r\n  recoveryCodeOk(): void {\r\n    this.windowService.reloadPage();\r\n  }\r\n\r\n  copySharedKey(): void {\r\n    this.copyToClipboard(this.authenticatorInfo().key);\r\n  }\r\n\r\n  copyRecoveryCodes(): void {\r\n    const codeText = this.recoveryCodeList().join('\\n');\r\n    this.copyToClipboard(codeText);\r\n  }\r\n\r\n  resetAuthenticator(): void {\r\n    this.confirmationService\r\n      .warn('AbpAccount::ResetAuthenticatorWarningMessage', 'AbpUi::AreYouSure')\r\n      .pipe(\r\n        filter(status => status === Confirmation.Status.confirm),\r\n        switchMap(() => this.authenticatorAppService.resetAuthenticator()),\r\n      )\r\n      .subscribe(() => this.windowService.reloadPage());\r\n  }\r\n}\r\n","@if (!hasAuthenticator()) {\r\n  <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"activeStep\" class=\"nav nav-pills nav-fill mb-3\">\r\n    <li [ngbNavItem]=\"'Authenticator'\">\r\n      <button ngbNavLink>\r\n        <small class=\"opacity-75\">{{ 'AbpAccount::Step' | abpLocalization: '1' }}</small>\r\n        <p class=\"m-0\">{{ 'AbpAccount::Authenticator' | abpLocalization }}</p>\r\n      </button>\r\n      <ng-template ngbNavContent>\r\n        <div class=\"authenticator-step-1\">\r\n          <h4 class=\"mb-1\">{{ 'AbpAccount::Authenticator' | abpLocalization }}</h4>\r\n          <p class=\"mb-3\">\r\n            {{ 'AbpAccount::UseTwoFactorAuthenticatorApp_Information' | abpLocalization }}\r\n          </p>\r\n\r\n          <div id=\"setAuthenticator\">\r\n            <div class=\"row g-0\">\r\n              @if (authenticatorInfo(); as authInfo) {\r\n                <div class=\"col\">\r\n                  <div class=\"card border h-100\">\r\n                    <div class=\"card-body\">\r\n                      <h5>{{ 'AbpAccount::UseQrCode' | abpLocalization }}</h5>\r\n                      <div class=\"d-flex justify-content-center p-3 pb-0\">\r\n                        <abp-qr-code [qrData]=\"authInfo.uri\" />\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col-md-1\">\r\n                  <div class=\"d-flex align-items-center justify-content-center h-100\">\r\n                    <span class=\"text-muted py-3\">Or</span>\r\n                  </div>\r\n                </div>\r\n                <div class=\"col\">\r\n                  <div class=\"card border h-100\">\r\n                    <div class=\"card-body\">\r\n                      <h5>{{ 'AbpAccount::ManuallyEnterCode' | abpLocalization }}</h5>\r\n\r\n                      <div id=\"sharedKey\" class=\"bg-light rounded px-3 py-2 mt-4\">\r\n                        <code class=\"fs-4 lh-lg\">{{ authInfo.key }}</code>\r\n                      </div>\r\n                      <button\r\n                        type=\"button\"\r\n                        id=\"copySharedKey\"\r\n                        class=\"btn btn-outline-primary btn-sm mt-3\"\r\n                        (click)=\"copySharedKey()\"\r\n                      >\r\n                        {{ 'AbpAccount::CopyToClipboard' | abpLocalization }}\r\n                      </button>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              }\r\n            </div>\r\n            <div class=\"text-end mt-3\">\r\n              <ng-container\r\n                *ngTemplateOutlet=\"nextStep; context: { $implicit: 'VerifyTheAuthenticator' }\"\r\n              ></ng-container>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ng-template>\r\n    </li>\r\n\r\n    <li [ngbNavItem]=\"'VerifyTheAuthenticator'\">\r\n      <button ngbNavLink>\r\n        <small class=\"opacity-75\">{{ 'AbpAccount::Step' | abpLocalization: '2' }}</small>\r\n        <p class=\"m-0\">{{ 'AbpAccount::VerifyTheAuthenticator' | abpLocalization }}</p>\r\n      </button>\r\n      <ng-template ngbNavContent>\r\n        <div class=\"authenticator-step-2\">\r\n          <h4 class=\"mb-1\">\r\n            {{ 'AbpAccount::VerifyTheAuthenticator' | abpLocalization }}\r\n          </h4>\r\n          <p class=\"mb-3\">\r\n            {{ 'AbpAccount::UseTwoFactorAuthenticatorApp_Code' | abpLocalization }}\r\n          </p>\r\n          <div class=\"row\">\r\n            <div class=\"col\">\r\n              <abp-form-input\r\n                [inputId]=\"'code'\"\r\n                [(ngModel)]=\"verifyCode\"\r\n                [label]=\"'AbpAccount::Code' | abpLocalization\"\r\n              ></abp-form-input>\r\n            </div>\r\n            <div class=\"col\">\r\n              <abp-button\r\n                [id]=\"'verifyQRCode'\"\r\n                [buttonClass]=\"'btn btn-outline-success mt-3'\"\r\n                (click)=\"verifyQrCode()\"\r\n              >\r\n                {{\r\n                  isVerifiedAuthenticatorCode()\r\n                    ? ('AbpAccount::Verified' | abpLocalization)\r\n                    : ('AbpAccount::Verify' | abpLocalization)\r\n                }}\r\n              </abp-button>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"text-end mt-3\">\r\n            <ng-container\r\n              *ngTemplateOutlet=\"\r\n                nextStep;\r\n                context: { $implicit: 'RecoveryCodes', disabled: !isVerifiedAuthenticatorCode() }\r\n              \"\r\n            ></ng-container>\r\n          </div>\r\n        </div>\r\n      </ng-template>\r\n    </li>\r\n    <li\r\n      [ngbNavItem]=\"'RecoveryCodes'\"\r\n      [classList]=\"'recovery-codes-tab'\"\r\n      [disabled]=\"!isVerifiedAuthenticatorCode()\"\r\n    >\r\n      <button ngbNavLink>\r\n        <small class=\"opacity-75\">{{ 'AbpAccount::Step' | abpLocalization: '3' }}</small>\r\n        <p class=\"m-0\">{{ 'AbpAccount::RecoveryCodes' | abpLocalization }}</p>\r\n      </button>\r\n      <ng-template ngbNavContent>\r\n        <div class=\"authenticator-step-3\">\r\n          <h4 class=\"mb-1\">{{ 'AbpAccount::RecoveryCodes' | abpLocalization }}</h4>\r\n          <p class=\"mb-3\">\r\n            {{ 'AbpAccount::RecoveryCodes_Information' | abpLocalization }}\r\n          </p>\r\n\r\n          <ul class=\"list-group w-100\" id=\"recoveryCodes\">\r\n            <li class=\"list-group-item p-3 d-flex justify-content-between align-items-start\">\r\n              <div class=\"w-100\">\r\n                <div class=\"text-end\">\r\n                  <button\r\n                    id=\"printRecoverCodes\"\r\n                    type=\"button\"\r\n                    class=\"btn btn-outline-primary btn-sm\"\r\n                    [class.disabled]=\"!hasRecoveryCodes()\"\r\n                    (click)=\"printRecoverCodes()\"\r\n                  >\r\n                    {{ 'AbpAccount::PrintCodes' | abpLocalization }}\r\n                  </button>\r\n                  <button\r\n                    id=\"copyRecoverCodes\"\r\n                    type=\"button\"\r\n                    class=\"ms-1 btn btn-outline-primary btn-sm\"\r\n                    [class.disabled]=\"!hasRecoveryCodes()\"\r\n                    (click)=\"copyRecoveryCodes()\"\r\n                  >\r\n                    {{ 'AbpAccount::CopyToClipboard' | abpLocalization }}\r\n                  </button>\r\n                </div>\r\n                <div class=\"bg-light rounded px-3 py-3 mt-3 w-100 text-center\">\r\n                  <div id=\"recoveryCodesList\" class=\"fs-4 lh-lg\">\r\n                    @for (code of recoveryCodeList(); track $index) {\r\n                      <code>{{ code }}</code>\r\n                      <br />\r\n                    }\r\n                  </div>\r\n                </div>\r\n                <div class=\"text-end\">\r\n                  <abp-button\r\n                    [id]=\"'recoveryCodeOk'\"\r\n                    [disabled]=\"!hasRecoveryCodes()\"\r\n                    [buttonClass]=\"'btn btn-primary mt-2'\"\r\n                    (click)=\"recoveryCodeOk()\"\r\n                  >\r\n                    {{ 'AbpAccount::Done' | abpLocalization }}\r\n                  </abp-button>\r\n                </div>\r\n              </div>\r\n            </li>\r\n          </ul>\r\n        </div>\r\n      </ng-template>\r\n    </li>\r\n  </ul>\r\n  <div [id]=\"activeStep\" class=\"tab-pane fade show active w-100\" role=\"tabpanel\">\r\n    <div [ngbNavOutlet]=\"nav\"></div>\r\n  </div>\r\n}\r\n\r\n@if (hasAuthenticator()) {\r\n  <div id=\"reset-authenticator\">\r\n    <div class=\"my-3\">\r\n      <h4 class=\"mb-1\">{{ 'AbpAccount::ResetAuthenticator' | abpLocalization }}</h4>\r\n      <p class=\"mb-3\">{{ 'AbpAccount::ResetAuthenticator_Information' | abpLocalization }}</p>\r\n\r\n      <abp-button id=\"resetAuthenticator\" (click)=\"resetAuthenticator()\">\r\n        {{ 'AbpAccount::ResetAuthenticator' | abpLocalization }}\r\n      </abp-button>\r\n    </div>\r\n  </div>\r\n}\r\n\r\n<ng-template #nextStep let-step let-disabled=\"disabled\">\r\n  <button\r\n    id=\"next-btn-{{ step }}\"\r\n    type=\"button\"\r\n    class=\"btn btn-primary px-3\"\r\n    [class.disabled]=\"disabled\"\r\n    (click)=\"activeStep = step\"\r\n  >\r\n    {{ 'AbpAccount::NextStep' | abpLocalization }} <i class=\"bi bi-arrow-right ms-2\"></i>\r\n  </button>\r\n</ng-template>\r\n","import { Component, ChangeDetectionStrategy, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { EMPTY, catchError, finalize, skip, switchMap } from 'rxjs';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { LoadingDirective } from '@abp/ng.theme.shared';\r\nimport { TwoFactorTabService } from '../../services';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\n\r\n@Component({\r\n  selector: 'abp-two-factor-tab',\r\n  templateUrl: './two-factor-tab.component.html',\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    LoadingDirective,\r\n    LocalizationPipe,\r\n  ],\r\n  providers: [TwoFactorTabService],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TwoFactorTabComponent {\r\n  protected readonly fb = inject(FormBuilder);\r\n  protected readonly twoFactorTabService = inject(TwoFactorTabService);\r\n\r\n  readonly form = this.fb.group({ isTwoFactorEnabled: [false] });\r\n  isLoaded = signal(false);\r\n\r\n  protected isTwoFactorEnabled(): void {\r\n    this.isLoaded.set(false);\r\n    this.twoFactorTabService.isTwoFactorEnabled$\r\n      .pipe(finalize(() => this.isLoaded.set(true)))\r\n      .subscribe(value => this.form.controls.isTwoFactorEnabled.setValue(value));\r\n  }\r\n\r\n  protected trackTwoFactorStatus(): void {\r\n    this.form.valueChanges\r\n      .pipe(\r\n        skip(1),\r\n        switchMap(({ isTwoFactorEnabled }) =>\r\n          this.twoFactorTabService.setTwoFactorStatus(isTwoFactorEnabled).pipe(\r\n            catchError(() => {\r\n              this.form.controls.isTwoFactorEnabled.setValue(false, { emitEvent: false });\r\n              return EMPTY;\r\n            }),\r\n          ),\r\n        ),\r\n        takeUntilDestroyed(),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  constructor() {\r\n    this.isTwoFactorEnabled();\r\n    this.trackTwoFactorStatus();\r\n  }\r\n}\r\n","@if (isLoaded()) {\r\n  <form [formGroup]=\"form\">\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"checkbox\"\r\n        id=\"twoFactorEnabled\"\r\n        formControlName=\"isTwoFactorEnabled\"\r\n        class=\"form-check-input\"\r\n      />\r\n      <label class=\"form-check-label\" for=\"twoFactorEnabled\">\r\n        {{ 'AbpAccount::DisplayName:TwoFactorEnabled' | abpLocalization }}\r\n      </label>\r\n      <br />\r\n      <span class=\"text-muted\">{{ 'AbpAccount::TwoFactorEnabledInfo' | abpLocalization }}</span>\r\n    </div>\r\n  </form>\r\n} @else {\r\n  <div [abpLoading]=\"true\"></div>\r\n}\r\n","import { Component, OnInit, inject, input, model, signal } from '@angular/core';\r\nimport { LocalizationPipe, ShortDateTimePipe } from '@abp/ng.core';\r\nimport { ModalCloseDirective, ModalComponent } from '@abp/ng.theme.shared';\r\nimport { AccountSessionService, Volo } from '@volo/abp.ng.account/public/proxy';\r\n\r\n@Component({\r\n  selector: 'abp-account-session-detail',\r\n  templateUrl: './account-session-detail.component.html',\r\n  imports: [ModalCloseDirective, LocalizationPipe, ShortDateTimePipe, ModalComponent],\r\n})\r\nexport class AccountSessionDetailComponent implements OnInit {\r\n  protected readonly service = inject(AccountSessionService);\r\n\r\n  modalOptions = { size: 'lg' };\r\n\r\n  isModalVisible = model(false);\r\n  sessionId = input.required<string>();\r\n  sessionInfo = signal({} as Volo.Abp.Identity.IdentitySessionDto);\r\n\r\n  ngOnInit(): void {\r\n    this.service.get(this.sessionId()).subscribe(this.sessionInfo.set);\r\n  }\r\n}\r\n","<abp-modal [(visible)]=\"isModalVisible\" [options]=\"modalOptions\">\r\n  <ng-template #abpHeader>\r\n    <h3>{{ 'AbpIdentity::Detail' | abpLocalization }}</h3>\r\n  </ng-template>\r\n\r\n  <ng-template #abpBody>\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:Device' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        {{ sessionInfo().device }}\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:DeviceInfo' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        {{ sessionInfo().deviceInfo }}\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:UserInfo' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        {{ sessionInfo().userName }}\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:ClientId' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        {{ sessionInfo().clientId }}\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:IpAddresses' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        <ul class=\"list-group list-group-flush\">\r\n          <li class=\"list-group-item\">\r\n            @for (ipAddress of sessionInfo().ipAddresses; track $index) {\r\n              {{ ipAddress }}\r\n            }\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:SignedIn' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        {{ sessionInfo().signedIn | shortDateTime }}\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n    <div class=\"row\">\r\n      <div class=\"col-form-label col-lg-3\">\r\n        <strong>{{ 'AbpIdentity::Session:LastAccessed' | abpLocalization }}</strong>\r\n      </div>\r\n      <div class=\"col-form-label col-lg-9\">\r\n        {{ sessionInfo().lastAccessed | shortDateTime }}\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-0\" />\r\n  </ng-template>\r\n\r\n  <ng-template #abpFooter>\r\n    <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n      {{ 'AbpUi::Close' | abpLocalization }}\r\n    </button>\r\n  </ng-template>\r\n</abp-modal>\r\n","import { Component, OnInit, inject, signal } from '@angular/core';\r\nimport { NgbNavModule, NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { filter, switchMap, tap } from 'rxjs';\r\nimport {\r\n  AuthService,\r\n  ConfigStateService,\r\n  ListService,\r\n  LocalizationPipe,\r\n  PagedResultDto,\r\n  UtcToLocalPipe,\r\n} from '@abp/ng.core';\r\nimport {\r\n  Confirmation,\r\n  ConfirmationService,\r\n  NgxDatatableDefaultDirective,\r\n  NgxDatatableListDirective,\r\n} from '@abp/ng.theme.shared';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport {\r\n  AccountSessionService,\r\n  GetAccountIdentitySessionListInput,\r\n  Volo,\r\n} from '@volo/abp.ng.account/public/proxy';\r\nimport { AccountSessionDetailComponent } from './account-session-detail-modal/account-session-detail.component';\r\n\r\n@Component({\r\n  selector: 'abp-account-sessions',\r\n  templateUrl: './account-sessions.component.html',\r\n  imports: [\r\n    NgxDatatableModule,\r\n    NgbDropdownModule,\r\n    NgbTooltipModule,\r\n    NgbNavModule,\r\n    NgxDatatableListDirective,\r\n    NgxDatatableDefaultDirective,\r\n    UtcToLocalPipe,\r\n    LocalizationPipe,\r\n    AccountSessionDetailComponent,\r\n    PageComponent,\r\n  ],\r\n  providers: [ListService],\r\n})\r\nexport class AccountSessionsComponent implements OnInit {\r\n  protected readonly list = inject(ListService<GetAccountIdentitySessionListInput>);\r\n  protected readonly service = inject(AccountSessionService);\r\n  protected readonly confirmationService = inject(ConfirmationService);\r\n  protected readonly authService = inject(AuthService);\r\n  protected readonly configStateService = inject(ConfigStateService);\r\n\r\n  data = signal<PagedResultDto<Volo.Abp.Identity.IdentitySessionDto>>({ items: [], totalCount: 0 });\r\n  sessionId = signal('');\r\n  visibleSessionDetailModal = signal(false);\r\n\r\n  protected hookToQuery() {\r\n    this.list.hookToQuery(query => this.service.getList({ ...query })).subscribe(this.data.set);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.hookToQuery();\r\n  }\r\n\r\n  showDetail(row: Volo.Abp.Identity.IdentitySessionDto) {\r\n    this.visibleSessionDetailModal.set(true);\r\n    this.sessionId.set(row.id);\r\n  }\r\n\r\n  revokeSession(row: Volo.Abp.Identity.IdentitySessionDto) {\r\n    this.confirmationService\r\n      .warn('AbpIdentity::SessionLogoutConfirmationMessage', 'AbpUi::AreYouSure')\r\n      .pipe(\r\n        filter(status => status === Confirmation.Status.confirm),\r\n        switchMap(() =>\r\n          this.service.revoke(row.id).pipe(\r\n            tap(() => {\r\n              if (row.isCurrent) {\r\n                return this.authService\r\n                  .logout({ noRedirectToLogoutUrl: true })\r\n                  .pipe(switchMap(() => this.configStateService.refreshAppState()))\r\n                  .subscribe();\r\n              }\r\n              this.hookToQuery();\r\n            }),\r\n          ),\r\n        ),\r\n      )\r\n      .subscribe();\r\n  }\r\n}\r\n","<abp-page [title]=\"'AbpIdentity::Sessions' | abpLocalization\">\r\n  <small class=\"form-text\">\r\n    {{ 'AbpAccount::SessionRevokeDescription' | abpLocalization }}\r\n  </small>\r\n  <div class=\"wrapper\">\r\n    <div class=\"card mt-3\">\r\n      <ngx-datatable [rows]=\"data().items\" [count]=\"data().totalCount\" [list]=\"list\" default>\r\n        <ngx-datatable-column [name]=\"'AbpUi::Actions' | abpLocalization\" [sortable]=\"false\">\r\n          <ng-template let-row=\"row\" ngx-datatable-cell-template>\r\n            <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n              <button\r\n                class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n                data-toggle=\"dropdown\"\r\n                aria-haspopup=\"true\"\r\n                ngbDropdownToggle\r\n              >\r\n                <i class=\"fa fa-cog me-1\" aria-hidden=\"true\"></i\r\n                >{{ 'AbpUi::Actions' | abpLocalization }}\r\n              </button>\r\n              <div ngbDropdownMenu>\r\n                <button ngbDropdownItem (click)=\"showDetail(row)\">\r\n                  {{ 'AbpIdentity::Session:Detail' | abpLocalization }}\r\n                </button>\r\n                <button ngbDropdownItem (click)=\"revokeSession(row)\">\r\n                  {{ 'AbpUi::Logout' | abpLocalization }}\r\n                </button>\r\n              </div>\r\n            </div>\r\n          </ng-template>\r\n        </ngx-datatable-column>\r\n        <ngx-datatable-column\r\n          [name]=\"'AbpIdentity::Session:Device' | abpLocalization\"\r\n          [sortable]=\"true\"\r\n          prop=\"device\"\r\n        >\r\n          <ng-template ngx-datatable-cell-template let-value=\"value\" let-row=\"row\">\r\n            {{ value }}\r\n            @if (row.isCurrent) {\r\n              <i\r\n                class=\"fas fa-dot-circle\"\r\n                [ngbTooltip]=\"'AbpIdentity::Session:Current' | abpLocalization\"\r\n                container=\"body\"\r\n                placement=\"end\"\r\n              ></i>\r\n            }\r\n          </ng-template>\r\n        </ngx-datatable-column>\r\n        <ngx-datatable-column\r\n          [name]=\"'AbpIdentity::Session:DeviceInfo' | abpLocalization\"\r\n          [sortable]=\"true\"\r\n          prop=\"deviceInfo\"\r\n        />\r\n        <ngx-datatable-column\r\n          [name]=\"'AbpIdentity::Session:SignedIn' | abpLocalization\"\r\n          [sortable]=\"true\"\r\n          prop=\"signedIn\"\r\n        >\r\n          <ng-template ngx-datatable-cell-template let-value=\"value\">\r\n            {{ value | abpUtcToLocal:'datetime' }}\r\n          </ng-template>\r\n        </ngx-datatable-column>\r\n        <ngx-datatable-column\r\n          [name]=\"'AbpIdentity::Session:LastAccessed' | abpLocalization\"\r\n          [sortable]=\"true\"\r\n          prop=\"lastAccessed\"\r\n        >\r\n          <ng-template ngx-datatable-cell-template let-value=\"value\">\r\n            {{ value | abpUtcToLocal:'datetime' }}\r\n          </ng-template>\r\n        </ngx-datatable-column>\r\n      </ngx-datatable>\r\n    </div>\r\n  </div>\r\n</abp-page>\r\n\r\n\r\n@if (visibleSessionDetailModal()) {\r\n  <abp-account-session-detail\r\n    [sessionId]=\"sessionId()\"\r\n    [(isModalVisible)]=\"visibleSessionDetailModal\"\r\n  />\r\n}\r\n","import { ChangeDetectionStrategy, Component, effect, inject } from '@angular/core';\r\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ModalCloseDirective, ModalComponent } from '@abp/ng.theme.shared';\r\nimport { ConfirmUserService } from '../../services';\r\nimport { PersonalSettingsVerifyButtonComponent } from '../personal-settings/personal-settings-verify-button/personal-settings-verify-button.component';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\n\r\n@Component({\r\n  selector: 'abp-confirm-user',\r\n  templateUrl: './confirm-user.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    ModalCloseDirective,\r\n    LocalizationPipe,\r\n    PersonalSettingsVerifyButtonComponent,\r\n    ModalComponent,\r\n  ],\r\n})\r\nexport class ConfirmUserComponent {\r\n  protected readonly confirmUserService = inject(ConfirmUserService);\r\n  protected readonly fb = inject(FormBuilder);\r\n\r\n  email = this.confirmUserService.email;\r\n  phone = this.confirmUserService.phone;\r\n\r\n  phoneModalVisible = false;\r\n  form = this.fb.group({ phoneNumber: ['', [Validators.required]] });\r\n  phoneCodeForm = this.fb.group({ verificationCode: ['', [Validators.required]] });\r\n\r\n  protected initialize() {\r\n    this.confirmUserService.initialize();\r\n\r\n    effect(() => {\r\n      if (this.phone()?.number) {\r\n        this.form.controls.phoneNumber.setValue(this.phone().number);\r\n      }\r\n    });\r\n  }\r\n\r\n  constructor() {\r\n    this.initialize();\r\n  }\r\n\r\n  sendEmailConfirmation() {\r\n    this.confirmUserService.sendEmailConfirmation();\r\n  }\r\n\r\n  sendPhoneConfirmation() {\r\n    this.confirmUserService.sendPhoneConfirmation(this.form.controls.phoneNumber.value);\r\n    this.phoneModalVisible = true;\r\n  }\r\n\r\n  verifyPhoneCode() {\r\n    if (this.phoneCodeForm.invalid) {\r\n      return;\r\n    }\r\n\r\n    this.confirmUserService.verifyPhoneCode(this.phoneCodeForm.controls.verificationCode.value);\r\n  }\r\n}\r\n","@if (email(); as vm) {\r\n  @if (vm.requireSetting && !vm.confirmed) {\r\n    <div>\r\n      <label for=\"email\" class=\"form-label\">\r\n        {{ 'AbpIdentity::DisplayName:Email' | abpLocalization }}\r\n      </label>\r\n      <span> * </span>\r\n      <div class=\"input-group\">\r\n        <input readonly type=\"email\" id=\"email\" class=\"form-control\" [value]=\"vm.address\" />\r\n        @if (vm.showButton) {\r\n          <div class=\"input-group-append\">\r\n            <abp-personal-settings-verify-button\r\n              [verified]=\"false\"\r\n              (btnClick)=\"sendEmailConfirmation()\"\r\n            />\r\n          </div>\r\n        }\r\n      </div>\r\n    </div>\r\n  }\r\n}\r\n\r\n@if (phone(); as vm) {\r\n  @if (vm.requireSetting && !vm.confirmed) {\r\n    <div class=\"mt-3\">\r\n      <label for=\"phoneNumber\" class=\"form-label\">\r\n        {{ 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization }}\r\n      </label>\r\n      <span> * </span>\r\n      <form [formGroup]=\"form\">\r\n        <div class=\"input-group\" validationTarget>\r\n          <input\r\n            [readonly]=\"!!vm.number\"\r\n            type=\"text\"\r\n            id=\"phoneNumber\"\r\n            class=\"form-control\"\r\n            formControlName=\"phoneNumber\"\r\n          />\r\n          <div class=\"input-group-append\">\r\n            <abp-personal-settings-verify-button\r\n              [verified]=\"false\"\r\n              (btnClick)=\"sendPhoneConfirmation()\"\r\n            />\r\n          </div>\r\n        </div>\r\n      </form>\r\n      @if (!vm.number) {\r\n        <small class=\"form-text text-muted\">\r\n          {{ 'AbpAccount::PhoneNumberEmptyHelpText' | abpLocalization }}\r\n        </small>\r\n      }\r\n    </div>\r\n\r\n    @if (phoneModalVisible) {\r\n      <abp-modal [visible]=\"true\" (visibleChange)=\"phoneModalVisible = $event\">\r\n        <ng-template #abpHeader>\r\n          <h3>{{ 'AbpAccount::Verify' | abpLocalization }}</h3>\r\n        </ng-template>\r\n\r\n        <ng-template #abpBody>\r\n          <p>{{ 'AbpAccount::ConfirmationTokenSentMessage' | abpLocalization }}</p>\r\n          <p>{{ 'AbpAccount::PhoneConfirmationToken' | abpLocalization }} *</p>\r\n\r\n          <form [formGroup]=\"phoneCodeForm\" (submit)=\"verifyPhoneCode()\">\r\n            <input\r\n              id=\"verificationCode\"\r\n              type=\"text\"\r\n              class=\"form-control\"\r\n              formControlName=\"verificationCode\"\r\n            />\r\n          </form>\r\n        </ng-template>\r\n\r\n        <ng-template #abpFooter>\r\n          <button type=\"button\" class=\"btn btn-outline-primary\" abpClose>\r\n            {{ 'AbpUi::Cancel' | abpLocalization }}\r\n          </button>\r\n          <button type=\"submit\" class=\"btn btn-primary\" (click)=\"verifyPhoneCode()\">\r\n            {{ 'AbpUi::Save' | abpLocalization }}\r\n          </button>\r\n        </ng-template>\r\n      </abp-modal>\r\n    }\r\n  }\r\n}\r\n","import { ePropType, FormProp } from '@abp/ng.components/extensible';\r\nimport { Validators } from '@angular/forms';\r\nimport { ProfileDto } from '@volo/abp.ng.account/public/proxy';\r\nimport { PersonalSettingsHalfRowComponent } from '../components/personal-settings/personal-settings-half-row/personal-settings-half-row.component';\r\nimport { PersonalSettingsEmailComponent } from '../components/personal-settings/personal-settings-email/personal-settings-email.component';\r\nimport { ConfigStateService } from '@abp/ng.core';\r\nimport { PersonalSettingsPhoneNumberComponent } from '../components/personal-settings/personal-settings-phone-number/personal-settings-phone-number.component';\r\nimport { PersonalSettingsTimerZoneComponent } from '../components';\r\n\r\nconst { maxLength, required, email } = Validators;\r\nexport const DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS = FormProp.createMany<ProfileDto>([\r\n  {\r\n    type: ePropType.String,\r\n    name: 'userName',\r\n    displayName: 'AbpIdentity::DisplayName:UserName',\r\n    id: 'username',\r\n    validators: () => [required, maxLength(256)],\r\n    readonly: data => {\r\n      const configState = data.getInjected(ConfigStateService);\r\n      const settings = configState.getSettings();\r\n      return !(\r\n        (settings['Abp.Identity.User.IsUserNameUpdateEnabled'] || '').toLowerCase() !== 'false'\r\n      );\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'name',\r\n    displayName: 'AbpIdentity::DisplayName:Name',\r\n    id: 'name',\r\n    validators: () => [maxLength(64)],\r\n    template: PersonalSettingsHalfRowComponent,\r\n    className: 'd-inline-block w-50',\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'surname',\r\n    displayName: 'AbpIdentity::DisplayName:Surname',\r\n    id: 'surname',\r\n    validators: () => [maxLength(64)],\r\n    className: 'd-inline-block w-50 ps-4',\r\n    template: PersonalSettingsHalfRowComponent,\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'email',\r\n    displayName: 'AbpIdentity::DisplayName:Email',\r\n    id: 'email-address',\r\n    validators: () => [required, email, maxLength(256)],\r\n    template: PersonalSettingsEmailComponent,\r\n    readonly: data => {\r\n      const configState = data.getInjected(ConfigStateService);\r\n      const settings = configState.getSettings();\r\n      return !(\r\n        (settings['Abp.Identity.User.IsEmailUpdateEnabled'] || '').toLowerCase() !== 'false'\r\n      );\r\n    },\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'phoneNumber',\r\n    displayName: 'AbpIdentity::DisplayName:PhoneNumber',\r\n    id: 'phone-number',\r\n    validators: () => [maxLength(16)],\r\n    template: PersonalSettingsPhoneNumberComponent,\r\n  },\r\n  {\r\n    type: ePropType.String,\r\n    name: 'timezone',\r\n    displayName: 'AbpSettingManagement::Menu:TimeZone',\r\n    id: 'timezone',\r\n    template: PersonalSettingsTimerZoneComponent,\r\n    visible: data => {\r\n      const configState = data.getInjected(ConfigStateService);\r\n      const kind = configState.getDeep('clock.kind');\r\n\r\n      return kind === 'Utc';\r\n    },\r\n  },\r\n]);\r\n","import {\r\n  EditFormPropContributorCallback,\r\n  EntityActionContributorCallback,\r\n  EntityPropContributorCallback,\r\n  ToolbarActionContributorCallback,\r\n} from '@abp/ng.components/extensible';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { IdentitySecurityLogDto } from '@volo/abp.commercial.ng.ui/config';\r\nimport { DEFAULT_MY_SECURITY_LOGS_ENTITY_ACTIONS } from '../defaults/default-my-security-logs-entity-actions';\r\nimport { DEFAULT_MY_SECURITY_LOGS_ENTITY_PROPS } from '../defaults/default-my-security-logs-entity-props';\r\nimport { DEFAULT_MY_SECURITY_LOGS_TOOLBAR_ACTIONS } from '../defaults/default-my-security-logs-toolbar-actions';\r\nimport { eAccountComponents } from '../enums/components';\r\nimport { ProfileDto } from '@volo/abp.ng.account/public/proxy';\r\nimport { DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS } from '../defaults/default-personal-settings-form-props';\r\n\r\nexport const DEFAULT_ACCOUNT_ENTITY_ACTIONS = {\r\n  [eAccountComponents.MySecurityLogs]: DEFAULT_MY_SECURITY_LOGS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_ACCOUNT_TOOLBAR_ACTIONS = {\r\n  [eAccountComponents.MySecurityLogs]: DEFAULT_MY_SECURITY_LOGS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_ACCOUNT_ENTITY_PROPS = {\r\n  [eAccountComponents.MySecurityLogs]: DEFAULT_MY_SECURITY_LOGS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_ACCOUNT_FORM_PROPS = {\r\n  [eAccountComponents.PersonalSettings]: DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS,\r\n};\r\n\r\nexport const ACCOUNT_ENTITY_ACTION_CONTRIBUTORS = new InjectionToken<EntityActionContributors>(\r\n  'ACCOUNT_ENTITY_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS = new InjectionToken<ToolbarActionContributors>(\r\n  'ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const ACCOUNT_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\r\n  'ACCOUNT_ENTITY_PROP_CONTRIBUTORS',\r\n);\r\n\r\nexport const ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken<EditFormPropContributors>(\r\n  'ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS',\r\n);\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n  [eAccountComponents.MySecurityLogs]: EntityActionContributorCallback<IdentitySecurityLogDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n  [eAccountComponents.MySecurityLogs]: ToolbarActionContributorCallback<IdentitySecurityLogDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n  [eAccountComponents.MySecurityLogs]: EntityPropContributorCallback<IdentitySecurityLogDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n  [eAccountComponents.PersonalSettings]: EditFormPropContributorCallback<ProfileDto>[];\r\n}>;\r\n","import {\r\n  ExtensionsService,\r\n  getObjectExtensionEntitiesFromStore,\r\n  mapEntitiesToContributors,\r\n  mergeWithDefaultActions,\r\n  mergeWithDefaultProps,\r\n} from '@abp/ng.components/extensible';\r\nimport { inject, Injectable, Injector } from '@angular/core';\r\n\r\nimport { Observable, zip } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { eAccountComponents } from '../enums/components';\r\nimport {\r\n  AccountEditFormPropContributors,\r\n  AccountEntityActionContributors,\r\n  AccountEntityPropContributors,\r\n  AccountToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n  ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n  ACCOUNT_ENTITY_ACTION_CONTRIBUTORS,\r\n  ACCOUNT_ENTITY_PROP_CONTRIBUTORS,\r\n  ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n  DEFAULT_ACCOUNT_ENTITY_ACTIONS,\r\n  DEFAULT_ACCOUNT_ENTITY_PROPS,\r\n  DEFAULT_ACCOUNT_FORM_PROPS,\r\n  DEFAULT_ACCOUNT_TOOLBAR_ACTIONS,\r\n} from '../tokens/extensions.token';\r\n\r\n/**\r\n * @deprecated Use `accountExtensionsResolver` *function* instead.\r\n */\r\n@Injectable()\r\nexport class AccountExtensionsGuard {\r\n  private readonly injector = inject(Injector);\r\n\r\n  canActivate(): Observable<boolean> {\r\n    const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n    const actionContributors: AccountEntityActionContributors =\r\n      this.injector.get(ACCOUNT_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n    const toolbarContributors: AccountToolbarActionContributors =\r\n      this.injector.get(ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n    const propContributors: AccountEntityPropContributors =\r\n      this.injector.get(ACCOUNT_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n    const formContributors: AccountEditFormPropContributors =\r\n      this.injector.get(ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n    const profileSettingsObserve = getObjectExtensionEntitiesFromStore(\r\n      this.injector,\r\n      'Identity',\r\n    ).pipe(\r\n      map(entities => {\r\n        return {\r\n          [eAccountComponents.PersonalSettings]: entities.User,\r\n        };\r\n      }),\r\n      mapEntitiesToContributors(this.injector, 'AbpIdentity'),\r\n      tap(objectExtensionContributors => {\r\n        mergeWithDefaultProps(\r\n          extensions.editFormProps,\r\n          DEFAULT_ACCOUNT_FORM_PROPS,\r\n          objectExtensionContributors.editForm,\r\n          formContributors,\r\n        );\r\n      }),\r\n    );\r\n\r\n    const accountObserve = getObjectExtensionEntitiesFromStore(this.injector, 'Account').pipe(\r\n      map(entities => ({\r\n        [eAccountComponents.MySecurityLogs]: entities.SecurityLogs,\r\n      })),\r\n      mapEntitiesToContributors(this.injector, 'AbpAccount'),\r\n      tap(objectExtensionContributors => {\r\n        mergeWithDefaultActions(\r\n          extensions.entityActions,\r\n          DEFAULT_ACCOUNT_ENTITY_ACTIONS,\r\n          actionContributors,\r\n        );\r\n        mergeWithDefaultActions(\r\n          extensions.toolbarActions,\r\n          DEFAULT_ACCOUNT_TOOLBAR_ACTIONS,\r\n          toolbarContributors,\r\n        );\r\n        mergeWithDefaultProps(\r\n          extensions.entityProps,\r\n          DEFAULT_ACCOUNT_ENTITY_PROPS,\r\n          objectExtensionContributors.prop,\r\n          propContributors,\r\n        );\r\n      }),\r\n    );\r\n\r\n    return zip(accountObserve, profileSettingsObserve).pipe(map(() => true));\r\n  }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { SecurityCodeService } from '../services/security-code.service';\r\n\r\n/**\r\n * @deprecated Use `securityCodeGuard` *function* instead.\r\n */\r\n@Injectable()\r\nexport class SecurityCodeGuard {\r\n  private service = inject(SecurityCodeService);\r\n  private router = inject(Router);\r\n\r\n\r\n  canActivate() {\r\n    const urlTree = this.router.createUrlTree(['/account/login']);\r\n    return !!this.service.data ? true : urlTree;\r\n  }\r\n}\r\n\r\nexport const securityCodeGuard = () => {\r\n  const service = inject(SecurityCodeService);\r\n  const router = inject(Router);\r\n\r\n  const urlTree = router.createUrlTree(['/account/login']);\r\n  return !!service.data ? true : urlTree;\r\n};\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RecoveryCodeService } from '../services';\r\n\r\n/**\r\n * @deprecated Use `recoveryCodeGuard` *function* instead.\r\n */\r\n@Injectable()\r\nexport class RecoveryCodeGuard {\r\n  protected readonly router = inject(Router);\r\n  protected readonly recoveryCodeService = inject(RecoveryCodeService);\r\n\r\n  canActivate() {\r\n    const urlTree = this.router.createUrlTree(['/account/login']);\r\n    return this.recoveryCodeService.hasData() ? true : urlTree;\r\n  }\r\n}\r\n\r\nexport const recoveryCodeGuard = () => {\r\n  const router = inject(Router);\r\n  const recoveryCodeService = inject(RecoveryCodeService);\r\n\r\n  const urlTree = router.createUrlTree(['/account/login']);\r\n  return recoveryCodeService.hasData() ? true : urlTree;\r\n};\r\n","import {\r\n  ExtensionsService,\r\n  getObjectExtensionEntitiesFromStore,\r\n  mapEntitiesToContributors,\r\n  mergeWithDefaultProps,\r\n  mergeWithDefaultActions,\r\n} from '@abp/ng.components/extensible';\r\nimport { inject, Injector } from '@angular/core';\r\nimport { ResolveFn } from '@angular/router';\r\nimport { map, tap, zip } from 'rxjs';\r\nimport { eAccountComponents } from '../enums';\r\nimport {\r\n  ACCOUNT_ENTITY_ACTION_CONTRIBUTORS,\r\n  ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n  ACCOUNT_ENTITY_PROP_CONTRIBUTORS,\r\n  ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n  DEFAULT_ACCOUNT_FORM_PROPS,\r\n  DEFAULT_ACCOUNT_ENTITY_ACTIONS,\r\n  DEFAULT_ACCOUNT_TOOLBAR_ACTIONS,\r\n  DEFAULT_ACCOUNT_ENTITY_PROPS,\r\n} from '../tokens/extensions.token';\r\nimport {\r\n  AccountEditFormPropContributors,\r\n  AccountEntityActionContributors,\r\n  AccountEntityPropContributors,\r\n  AccountToolbarActionContributors,\r\n} from '../models/config-options';\r\n\r\nexport const accountExtensionsResolver: ResolveFn<any> = () => {\r\n  const injector = inject(Injector);\r\n\r\n  const extensions: ExtensionsService = injector.get(ExtensionsService);\r\n  const actionContributors: AccountEntityActionContributors =\r\n    injector.get(ACCOUNT_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n  const toolbarContributors: AccountToolbarActionContributors =\r\n    injector.get(ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n  const propContributors: AccountEntityPropContributors =\r\n    injector.get(ACCOUNT_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n  const formContributors: AccountEditFormPropContributors =\r\n    injector.get(ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n  const profileSettingsObserve = getObjectExtensionEntitiesFromStore(injector, 'Identity').pipe(\r\n    map(entities => {\r\n      return {\r\n        [eAccountComponents.PersonalSettings]: entities.User,\r\n      };\r\n    }),\r\n    mapEntitiesToContributors(injector, 'AbpIdentity'),\r\n    tap(objectExtensionContributors => {\r\n      mergeWithDefaultProps(\r\n        extensions.editFormProps,\r\n        DEFAULT_ACCOUNT_FORM_PROPS,\r\n        objectExtensionContributors.editForm,\r\n        formContributors,\r\n      );\r\n    }),\r\n  );\r\n\r\n  const accountObserve = getObjectExtensionEntitiesFromStore(injector, 'Account').pipe(\r\n    map(entities => ({\r\n      [eAccountComponents.MySecurityLogs]: entities.SecurityLogs,\r\n    })),\r\n    mapEntitiesToContributors(injector, 'AbpAccount'),\r\n    tap(objectExtensionContributors => {\r\n      mergeWithDefaultActions(\r\n        extensions.entityActions,\r\n        DEFAULT_ACCOUNT_ENTITY_ACTIONS,\r\n        actionContributors,\r\n      );\r\n      mergeWithDefaultActions(\r\n        extensions.toolbarActions,\r\n        DEFAULT_ACCOUNT_TOOLBAR_ACTIONS,\r\n        toolbarContributors,\r\n      );\r\n      mergeWithDefaultProps(\r\n        extensions.entityProps,\r\n        DEFAULT_ACCOUNT_ENTITY_PROPS,\r\n        objectExtensionContributors.prop,\r\n        propContributors,\r\n      );\r\n    }),\r\n  );\r\n\r\n  return zip(accountObserve, profileSettingsObserve);\r\n};\r\n","import { ABP, ReplaceableComponentsService, TreeNode } from '@abp/ng.core';\r\nimport { Injectable, Type, inject } from '@angular/core';\r\nimport {\r\n  eAccountManageProfileTabNames,\r\n  ManageProfileTabsService,\r\n} from '@volo/abp.ng.account/public/config';\r\nimport { take, tap } from 'rxjs/operators';\r\nimport { ChangePasswordComponent } from '../components/change-password/change-password.component';\r\nimport { PersonalSettingsComponent } from '../components/personal-settings/personal-settings.component';\r\nimport { ProfilePictureComponent } from '../components/profile-picture/profile-picture.component';\r\nimport { TwoFactorTabComponent } from '../components/two-factor-tab/two-factor-tab.component';\r\nimport { AuthenticatorAppComponent } from '../components';\r\n\r\n@Injectable()\r\nexport class ManageProfileResolver {\r\n  private manageProfileTabs = inject(ManageProfileTabsService);\r\n  private replaceableComponentsService = inject(ReplaceableComponentsService);\r\n\r\n\r\n  resolve() {\r\n    return this.manageProfileTabs.visible$.pipe(tap(this.addComponentsToTabs), take(1));\r\n  }\r\n\r\n  private addComponentsToTabs = (tabs: TreeNode<Omit<ABP.Tab, 'parentName'>>[]) => {\r\n    tabs.forEach(tab => {\r\n      if (tab.component) return;\r\n\r\n      const replaceableComponent = this.replaceableComponentsService.get(tab.name);\r\n      const component: Type<any> = replaceableComponent\r\n        ? replaceableComponent.component\r\n        : ComponentList[tab.name];\r\n      if (!component) {\r\n        return;\r\n      }\r\n      this.manageProfileTabs.patch(tab.name, { component });\r\n    });\r\n  };\r\n}\r\n\r\nconst ComponentList = {\r\n  [eAccountManageProfileTabNames.ProfilePicture]: ProfilePictureComponent,\r\n  [eAccountManageProfileTabNames.ChangePassword]: ChangePasswordComponent,\r\n  [eAccountManageProfileTabNames.PersonalInfo]: PersonalSettingsComponent,\r\n  [eAccountManageProfileTabNames.AuthenticatorApp]: AuthenticatorAppComponent,\r\n  [eAccountManageProfileTabNames.TwoFactor]: TwoFactorTabComponent,\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport {\r\n  authGuard,\r\n  ReplaceableComponents,\r\n  ReplaceableRouteContainerComponent,\r\n  RouterOutletComponent,\r\n} from '@abp/ng.core';\r\nimport { eAccountRouteNames } from '@volo/abp.ng.account/public/config';\r\n\r\nimport { eAccountComponents } from './enums/components';\r\nimport {\r\n  authenticationFlowGuard,\r\n  confirmUserGuard,\r\n  recoveryCodeGuard,\r\n  securityCodeGuard,\r\n} from './guards';\r\n\r\nimport { accountExtensionsResolver } from './resolvers/extensions.resolver';\r\nimport { ManageProfileResolver } from './resolvers/manage-profile.resolver';\r\n\r\nimport { EmailConfirmationComponent } from './components/email-confirmation/email-confirmation.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { LinkLoggedComponent } from './components/link-logged/link-logged.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { ManageProfileComponent } from './components/manage-profile/manage-profile.component';\r\nimport { MySecurityLogsComponent } from './components/my-security-logs/my-security-logs.component';\r\nimport { RegisterComponent } from './components/register/register.component';\r\nimport { ResetPasswordComponent } from './components/reset-password/reset-password.component';\r\nimport { SendSecurityCodeComponent } from './components/send-securiy-code/send-security-code.component';\r\nimport { RefreshPasswordComponent } from './components/refresh-password/refresh-password.component';\r\nimport { LoginWithRecoveryCodeComponent } from './components/login-with-recovery-code/login-with-recovery-code.component';\r\nimport { AccountSessionsComponent } from './components/account-sessions/account-sessions.component';\r\nimport { ConfirmUserComponent } from './components/confirm-user/confirm-user.component';\r\n\r\nconst routes: Routes = [\r\n  { path: '', pathMatch: 'full', redirectTo: 'login' },\r\n  {\r\n    path: '',\r\n    component: RouterOutletComponent,\r\n    resolve: [accountExtensionsResolver],\r\n    children: [\r\n      {\r\n        path: 'login',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authenticationFlowGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.Login,\r\n            defaultComponent: LoginComponent,\r\n          } as ReplaceableComponents.RouteData<LoginComponent>,\r\n        },\r\n        title: 'AbpAccount::Login',\r\n      },\r\n      {\r\n        path: 'register',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authenticationFlowGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.Register,\r\n            defaultComponent: RegisterComponent,\r\n          } as ReplaceableComponents.RouteData<RegisterComponent>,\r\n        },\r\n        title: 'AbpAccount::Register',\r\n      },\r\n      {\r\n        path: 'forgot-password',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authenticationFlowGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.ForgotPassword,\r\n            defaultComponent: ForgotPasswordComponent,\r\n          } as ReplaceableComponents.RouteData<ForgotPasswordComponent>,\r\n        },\r\n        title: 'AbpAccount::ForgotPassword',\r\n      },\r\n      {\r\n        path: 'reset-password',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authenticationFlowGuard],\r\n        data: {\r\n          tenantBoxVisible: false,\r\n          replaceableComponent: {\r\n            key: eAccountComponents.ResetPassword,\r\n            defaultComponent: ResetPasswordComponent,\r\n          } as ReplaceableComponents.RouteData<ResetPasswordComponent>,\r\n        },\r\n        title: 'AbpAccount::ResetPassword',\r\n      },\r\n      {\r\n        path: 'email-confirmation',\r\n        component: ReplaceableRouteContainerComponent,\r\n        data: {\r\n          tenantBoxVisible: false,\r\n          replaceableComponent: {\r\n            key: eAccountComponents.EmailConfirmation,\r\n            defaultComponent: EmailConfirmationComponent,\r\n          } as ReplaceableComponents.RouteData<EmailConfirmationComponent>,\r\n        },\r\n        title: 'AbpAccount::EmailConfirmation',\r\n      },\r\n      {\r\n        path: 'link-logged',\r\n        component: ReplaceableRouteContainerComponent,\r\n        data: {\r\n          tenantBoxVisible: false,\r\n          replaceableComponent: {\r\n            key: eAccountComponents.LinkLogged,\r\n            defaultComponent: LinkLoggedComponent,\r\n          } as ReplaceableComponents.RouteData<LinkLoggedComponent>,\r\n        },\r\n        title: 'AbpAccount::LinkLogged',\r\n      },\r\n      {\r\n        path: 'send-security-code',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [securityCodeGuard],\r\n        data: {\r\n          tenantBoxVisible: false,\r\n          replaceableComponent: {\r\n            key: eAccountComponents.SendSecurityCode,\r\n            defaultComponent: SendSecurityCodeComponent,\r\n          } as ReplaceableComponents.RouteData<SendSecurityCodeComponent>,\r\n        },\r\n        title: 'AbpAccount::TwoFactorVerification',\r\n      },\r\n      {\r\n        path: 'login-with-recovery-code',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [recoveryCodeGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.LoginWithRecoveryCodeComponent,\r\n            defaultComponent: LoginWithRecoveryCodeComponent,\r\n          } as ReplaceableComponents.RouteData<LoginWithRecoveryCodeComponent>,\r\n        },\r\n        title: 'AbpAccount::LoginWithRecoveryCode',\r\n      },\r\n      {\r\n        path: 'manage',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authGuard],\r\n        resolve: {\r\n          manageProfile: ManageProfileResolver,\r\n        },\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.ManageProfile,\r\n            defaultComponent: ManageProfileComponent,\r\n          } as ReplaceableComponents.RouteData<ManageProfileComponent>,\r\n        },\r\n        title: 'AbpAccount::MyAccount',\r\n      },\r\n      {\r\n        path: 'security-logs',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.MySecurityLogs,\r\n            defaultComponent: MySecurityLogsComponent,\r\n          } as ReplaceableComponents.RouteData<MySecurityLogsComponent>,\r\n        },\r\n        title: 'AbpAccount::MySecurityLogs',\r\n      },\r\n      {\r\n        path: 'change-password',\r\n        component: ReplaceableRouteContainerComponent,\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.RefreshPassword,\r\n            defaultComponent: RefreshPasswordComponent,\r\n          } as ReplaceableComponents.RouteData<RefreshPasswordComponent>,\r\n        },\r\n        title: 'AbpAccount::ChangePassword',\r\n      },\r\n      {\r\n        path: 'sessions',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [authGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.Sessions,\r\n            defaultComponent: AccountSessionsComponent,\r\n          } as ReplaceableComponents.RouteData<AccountSessionsComponent>,\r\n        },\r\n        title: eAccountRouteNames.Sessions,\r\n      },\r\n      {\r\n        path: 'confirm-user',\r\n        component: ReplaceableRouteContainerComponent,\r\n        canActivate: [confirmUserGuard],\r\n        data: {\r\n          replaceableComponent: {\r\n            key: eAccountComponents.ConfirmUser,\r\n            defaultComponent: ConfirmUserComponent,\r\n          } as ReplaceableComponents.RouteData<ConfirmUserComponent>,\r\n        },\r\n        title: eAccountRouteNames.ConfirmUser,\r\n      },\r\n    ],\r\n  },\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule],\r\n})\r\nexport class AccountPublicRoutingModule {}\r\n","import { AccountConfigOptions } from '../models/config-options';\r\n\r\nexport function accountOptionsFactory(options: AccountConfigOptions) {\r\n  return {\r\n    redirectUrl: '/',\r\n    ...(options as any), // any was added to avoid type error, please don't remove\r\n  };\r\n}\r\n","import { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport {\r\n  NgbDatepickerModule,\r\n  NgbDropdownModule,\r\n  NgbPopoverModule,\r\n  NgbTooltipModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport {\r\n  CoreModule,\r\n  LazyModuleFactory,\r\n  ShowPasswordDirective,\r\n  TrackCapsLockDirective,\r\n} from '@abp/ng.core';\r\nimport { PasswordComponent, ThemeSharedModule } from '@abp/ng.theme.shared';\r\n\r\nimport { CommercialUiModule, DatetimePickerComponent } from '@volo/abp.commercial.ng.ui';\r\nimport { TimeZoneSettingComponent } from '@volo/abp.ng.account/admin';\r\n\r\nimport { AccountConfigOptions } from './models/config-options';\r\n\r\nimport { RecoveryCodeService } from './services/recovery-code.service';\r\nimport { SecurityCodeService } from './services/security-code.service';\r\n\r\nimport { AccountPublicRoutingModule } from './account-public-routing.module';\r\n\r\nimport { ACCOUNT_CONFIG_OPTIONS } from './tokens/config-options.token';\r\nimport {\r\n  ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n  ACCOUNT_ENTITY_ACTION_CONTRIBUTORS,\r\n  ACCOUNT_ENTITY_PROP_CONTRIBUTORS,\r\n  ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\nimport { ManageProfileResolver } from './resolvers/manage-profile.resolver';\r\n\r\nimport { accountOptionsFactory } from './utils/factory-utils';\r\n\r\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\r\nimport { EmailConfirmationComponent } from './components/email-confirmation/email-confirmation.component';\r\nimport { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';\r\nimport { LinkLoggedComponent } from './components/link-logged/link-logged.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { MySecurityLogsComponent } from './components/my-security-logs/my-security-logs.component';\r\nimport { ManageProfileComponent } from './components/manage-profile/manage-profile.component';\r\nimport { ProfilePictureComponent } from './components/profile-picture/profile-picture.component';\r\nimport { RegisterComponent } from './components/register/register.component';\r\nimport { ResetPasswordComponent } from './components/reset-password/reset-password.component';\r\nimport { SendSecurityCodeComponent } from './components/send-securiy-code/send-security-code.component';\r\nimport { TwoFactorTabComponent } from './components/two-factor-tab/two-factor-tab.component';\r\nimport { PasswordComplexityIndicatorComponent } from './components/password-complexity-indicator/password-complexity-indicator.component';\r\n\r\nimport { PersonalSettingsVerifyButtonComponent } from './components/personal-settings/personal-settings-verify-button/personal-settings-verify-button.component';\r\nimport { PersonalSettingsComponent } from './components/personal-settings/personal-settings.component';\r\nimport { PersonalSettingsHalfRowComponent } from './components/personal-settings/personal-settings-half-row/personal-settings-half-row.component';\r\nimport { PersonalSettingsEmailComponent } from './components/personal-settings/personal-settings-email/personal-settings-email.component';\r\nimport { PersonalSettingsPhoneNumberComponent } from './components/personal-settings/personal-settings-phone-number/personal-settings-phone-number.component';\r\nimport { PersonalSettingsTimerZoneComponent } from './components/personal-settings/personal-settings-timezone/personal-settings-timezone.component';\r\n\r\nimport { RefreshPasswordComponent } from './components/refresh-password/refresh-password.component';\r\nimport { ConfirmUserService } from './services';\r\n\r\nconst declarations = [\r\n  ChangePasswordComponent,\r\n  RefreshPasswordComponent,\r\n  EmailConfirmationComponent,\r\n  ForgotPasswordComponent,\r\n  LinkLoggedComponent,\r\n  LoginComponent,\r\n  ManageProfileComponent,\r\n  MySecurityLogsComponent,\r\n  PersonalSettingsComponent,\r\n  ProfilePictureComponent,\r\n  RegisterComponent,\r\n  ResetPasswordComponent,\r\n  SendSecurityCodeComponent,\r\n  PersonalSettingsHalfRowComponent,\r\n  PersonalSettingsEmailComponent,\r\n  PersonalSettingsPhoneNumberComponent,\r\n  PersonalSettingsTimerZoneComponent,\r\n  PasswordComplexityIndicatorComponent,\r\n];\r\n\r\n@NgModule({\r\n  exports: [...declarations, PersonalSettingsVerifyButtonComponent],\r\n  imports: [\r\n    CoreModule,\r\n    PasswordComponent,\r\n    CommercialUiModule,\r\n    AccountPublicRoutingModule,\r\n    ThemeSharedModule,\r\n    NgbDropdownModule,\r\n    NgxValidateCoreModule,\r\n    NgbPopoverModule,\r\n    NgbDatepickerModule,\r\n    NgbTooltipModule,\r\n    PageModule,\r\n    ShowPasswordDirective,\r\n    TrackCapsLockDirective,\r\n    TwoFactorTabComponent,\r\n    TimeZoneSettingComponent,\r\n    DatetimePickerComponent,\r\n    PersonalSettingsVerifyButtonComponent,\r\n    ...declarations,\r\n  ],\r\n})\r\nexport class AccountPublicModule {\r\n  static forChild(options: AccountConfigOptions): ModuleWithProviders<AccountPublicModule> {\r\n    return {\r\n      ngModule: AccountPublicModule,\r\n      providers: [\r\n        { provide: ACCOUNT_CONFIG_OPTIONS, useValue: options },\r\n        {\r\n          provide: 'ACCOUNT_OPTIONS',\r\n          useFactory: accountOptionsFactory,\r\n          deps: [ACCOUNT_CONFIG_OPTIONS],\r\n        },\r\n        {\r\n          provide: ACCOUNT_ENTITY_ACTION_CONTRIBUTORS,\r\n          useValue: options.entityActionContributors,\r\n        },\r\n        {\r\n          provide: ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n          useValue: options.toolbarActionContributors,\r\n        },\r\n        {\r\n          provide: ACCOUNT_ENTITY_PROP_CONTRIBUTORS,\r\n          useValue: options.entityPropContributors,\r\n        },\r\n        {\r\n          provide: ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n          useValue: options.personelInfoEntityPropContributors,\r\n        },\r\n        ManageProfileResolver,\r\n        SecurityCodeService,\r\n        RecoveryCodeService,\r\n        ConfirmUserService,\r\n      ],\r\n    };\r\n  }\r\n\r\n  /**\r\n   * @deprecated `AccountPublicModule.forLazy()` is deprecated. You can use `createRoutes` **function** instead.\r\n   */\r\n  static forLazy(options: AccountConfigOptions = {}): NgModuleFactory<AccountPublicModule> {\r\n    return new LazyModuleFactory(AccountPublicModule.forChild(options));\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * @deprecated\r\n * Don't need to re-login to application after change personal settings. It'll refresh current user's state.\r\n */\r\nexport const RE_LOGIN_CONFIRMATION_TOKEN = new InjectionToken<boolean>(\r\n  'RE_LOGIN_CONFIRMATION_TOKEN',\r\n);\r\n","import {\r\n  RouterOutletComponent,\r\n  ReplaceableRouteContainerComponent,\r\n  ReplaceableComponents,\r\n  authGuard,\r\n} from '@abp/ng.core';\r\nimport { Provider } from '@angular/core';\r\nimport { Routes } from '@angular/router';\r\nimport {\r\n  LoginComponent,\r\n  RegisterComponent,\r\n  ForgotPasswordComponent,\r\n  ResetPasswordComponent,\r\n  EmailConfirmationComponent,\r\n  LinkLoggedComponent,\r\n  SendSecurityCodeComponent,\r\n  LoginWithRecoveryCodeComponent,\r\n  ManageProfileComponent,\r\n  MySecurityLogsComponent,\r\n  RefreshPasswordComponent,\r\n  AccountSessionsComponent,\r\n  ConfirmUserComponent,\r\n} from './components';\r\nimport { eAccountRouteNames } from '@volo/abp.ng.account/public/config';\r\nimport {\r\n  authenticationFlowGuard,\r\n  securityCodeGuard,\r\n  recoveryCodeGuard,\r\n  confirmUserGuard,\r\n} from './guards';\r\nimport { AccountConfigOptions } from './models';\r\nimport { ManageProfileResolver } from './resolvers';\r\nimport { accountExtensionsResolver } from './resolvers/extensions.resolver';\r\nimport { eAccountComponents } from './enums/components';\r\nimport { ACCOUNT_CONFIG_OPTIONS } from './tokens';\r\nimport {\r\n  ACCOUNT_ENTITY_ACTION_CONTRIBUTORS,\r\n  ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n  ACCOUNT_ENTITY_PROP_CONTRIBUTORS,\r\n  ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\nimport { accountOptionsFactory } from './utils';\r\nimport { SecurityCodeService, RecoveryCodeService, ConfirmUserService } from './services';\r\n\r\nexport function createRoutes(config: AccountConfigOptions = {}): Routes {\r\n  const accountProviders = [\r\n    ManageProfileResolver,\r\n    SecurityCodeService,\r\n    RecoveryCodeService,\r\n    ConfirmUserService,\r\n  ];\r\n  return [\r\n    { path: '', pathMatch: 'full', redirectTo: 'login' },\r\n    {\r\n      path: '',\r\n      component: RouterOutletComponent,\r\n      providers: [...accountProviders, provideAccountContributors(config)],\r\n      resolve: [accountExtensionsResolver],\r\n      children: [\r\n        {\r\n          path: 'login',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authenticationFlowGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.Login,\r\n              defaultComponent: LoginComponent,\r\n            } as ReplaceableComponents.RouteData<LoginComponent>,\r\n          },\r\n          title: 'AbpAccount::Login',\r\n        },\r\n        {\r\n          path: 'register',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authenticationFlowGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.Register,\r\n              defaultComponent: RegisterComponent,\r\n            } as ReplaceableComponents.RouteData<RegisterComponent>,\r\n          },\r\n          title: 'AbpAccount::Register',\r\n        },\r\n        {\r\n          path: 'forgot-password',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authenticationFlowGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.ForgotPassword,\r\n              defaultComponent: ForgotPasswordComponent,\r\n            } as ReplaceableComponents.RouteData<ForgotPasswordComponent>,\r\n          },\r\n          title: 'AbpAccount::ForgotPassword',\r\n        },\r\n        {\r\n          path: 'reset-password',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authenticationFlowGuard],\r\n          data: {\r\n            tenantBoxVisible: false,\r\n            replaceableComponent: {\r\n              key: eAccountComponents.ResetPassword,\r\n              defaultComponent: ResetPasswordComponent,\r\n            } as ReplaceableComponents.RouteData<ResetPasswordComponent>,\r\n          },\r\n          title: 'AbpAccount::ResetPassword',\r\n        },\r\n        {\r\n          path: 'email-confirmation',\r\n          component: ReplaceableRouteContainerComponent,\r\n          data: {\r\n            tenantBoxVisible: false,\r\n            replaceableComponent: {\r\n              key: eAccountComponents.EmailConfirmation,\r\n              defaultComponent: EmailConfirmationComponent,\r\n            } as ReplaceableComponents.RouteData<EmailConfirmationComponent>,\r\n          },\r\n          title: 'AbpAccount::EmailConfirmation',\r\n        },\r\n        {\r\n          path: 'link-logged',\r\n          component: ReplaceableRouteContainerComponent,\r\n          data: {\r\n            tenantBoxVisible: false,\r\n            replaceableComponent: {\r\n              key: eAccountComponents.LinkLogged,\r\n              defaultComponent: LinkLoggedComponent,\r\n            } as ReplaceableComponents.RouteData<LinkLoggedComponent>,\r\n          },\r\n          title: 'AbpAccount::LinkLogged',\r\n        },\r\n        {\r\n          path: 'send-security-code',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [securityCodeGuard],\r\n          data: {\r\n            tenantBoxVisible: false,\r\n            replaceableComponent: {\r\n              key: eAccountComponents.SendSecurityCode,\r\n              defaultComponent: SendSecurityCodeComponent,\r\n            } as ReplaceableComponents.RouteData<SendSecurityCodeComponent>,\r\n          },\r\n          title: 'AbpAccount::TwoFactorVerification',\r\n        },\r\n        {\r\n          path: 'login-with-recovery-code',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [recoveryCodeGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.LoginWithRecoveryCodeComponent,\r\n              defaultComponent: LoginWithRecoveryCodeComponent,\r\n            } as ReplaceableComponents.RouteData<LoginWithRecoveryCodeComponent>,\r\n          },\r\n          title: 'AbpAccount::LoginWithRecoveryCode',\r\n        },\r\n        {\r\n          path: 'manage',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authGuard],\r\n          resolve: {\r\n            manageProfile: ManageProfileResolver,\r\n          },\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.ManageProfile,\r\n              defaultComponent: ManageProfileComponent,\r\n            } as ReplaceableComponents.RouteData<ManageProfileComponent>,\r\n          },\r\n          title: 'AbpAccount::MyAccount',\r\n        },\r\n        {\r\n          path: 'security-logs',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.MySecurityLogs,\r\n              defaultComponent: MySecurityLogsComponent,\r\n            } as ReplaceableComponents.RouteData<MySecurityLogsComponent>,\r\n          },\r\n          title: 'AbpAccount::MySecurityLogs',\r\n        },\r\n        {\r\n          path: 'change-password',\r\n          component: ReplaceableRouteContainerComponent,\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.RefreshPassword,\r\n              defaultComponent: RefreshPasswordComponent,\r\n            } as ReplaceableComponents.RouteData<RefreshPasswordComponent>,\r\n          },\r\n          title: 'AbpAccount::ChangePassword',\r\n        },\r\n        {\r\n          path: 'sessions',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [authGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.Sessions,\r\n              defaultComponent: AccountSessionsComponent,\r\n            } as ReplaceableComponents.RouteData<AccountSessionsComponent>,\r\n          },\r\n          title: eAccountRouteNames.Sessions,\r\n        },\r\n        {\r\n          path: 'confirm-user',\r\n          component: ReplaceableRouteContainerComponent,\r\n          canActivate: [confirmUserGuard],\r\n          data: {\r\n            replaceableComponent: {\r\n              key: eAccountComponents.ConfirmUser,\r\n              defaultComponent: ConfirmUserComponent,\r\n            } as ReplaceableComponents.RouteData<ConfirmUserComponent>,\r\n          },\r\n          title: eAccountRouteNames.ConfirmUser,\r\n        },\r\n      ],\r\n    },\r\n  ];\r\n}\r\n\r\nfunction provideAccountContributors(options: AccountConfigOptions = {}): Provider[] {\r\n  return [\r\n    { provide: ACCOUNT_CONFIG_OPTIONS, useValue: options },\r\n    {\r\n      provide: 'ACCOUNT_OPTIONS',\r\n      useFactory: accountOptionsFactory,\r\n      deps: [ACCOUNT_CONFIG_OPTIONS],\r\n    },\r\n    {\r\n      provide: ACCOUNT_ENTITY_ACTION_CONTRIBUTORS,\r\n      useValue: options.entityActionContributors,\r\n    },\r\n    {\r\n      provide: ACCOUNT_TOOLBAR_ACTION_CONTRIBUTORS,\r\n      useValue: options.toolbarActionContributors,\r\n    },\r\n    {\r\n      provide: ACCOUNT_ENTITY_PROP_CONTRIBUTORS,\r\n      useValue: options.entityPropContributors,\r\n    },\r\n    {\r\n      provide: ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,\r\n      useValue: options.personelInfoEntityPropContributors,\r\n    },\r\n  ];\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["catchError","required","AccountService","switchMap","map","i1","i2","tap","email","finalize","maxLength","filter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,WAAW,GAAI,MAAM,CAAgB,oBAAoB,CAAC;AAExD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAEnD,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAmB,IAAI,gDAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,mDAAC;AA4BxC,IAAA;AA1BC,IAAA,KAAK,CAAC,YAAoB,EAAA;AACxB,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;QAEnE,MAAM,SAAS,GAAG,UAAU;AAC5B,QAAA,MAAM,MAAM,GAAG;YACb,QAAQ;YACR,QAAQ;AACR,YAAA,YAAY,EAAE,YAAY;SAC3B;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC;AAElE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAChF,UAAU,CAAC,GAAG,IAAG;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,GAAG,CAAC,KAAK,EAAE,iBAAiB;AAC1B,gBAAA,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO;gBACxB,iCAAiC,EACnC,IAAI,EACJ,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,CACH;IACH;8GAnCW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCMY,mBAAmB,CAAA;AAQ9B,IAAA,WAAA,GAAA;AAPQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAMvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC5D;AAEA,IAAA,KAAK,CAAC,SAA6C,EAAA;QACjD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI;QAExC,MAAM,SAAS,GAAG,UAAU;AAC5B,QAAA,MAAM,MAAM,GAAG;YACb,QAAQ;YACR,QAAQ;YACR,iBAAiB,EAAE,SAAS,CAAC,QAAQ;YACrC,aAAa,EAAE,SAAS,CAAC,IAAI;SAC9B;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC;QAElE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtB,IAAI,CAAC,WAAW;AACd,YAAA,IAAI,CAAC,WAAW,CACd,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EACxE,IAAI,CAAC,QAAQ,CACd,EACHA,YAAU,CAAC,GAAG,IAAG;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,GAAG,CAAC,KAAK,EAAE,iBAAiB;AAC1B,gBAAA,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO;gBACxB,iCAAiC,EACnC,IAAI,EACJ,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,CACH;IACH;8GA1CW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACRD;;AAEG;MAEU,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAS1C,IAAA;IANC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc;AAAE,YAAA,OAAO,IAAI;AAEhD,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAClC,QAAA,OAAO,KAAK;IACd;8GATW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;AAaM,MAAM,uBAAuB,GAAG,MAAK;AAC1C,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,IAAI,WAAW,CAAC,cAAc;AAAE,QAAA,OAAO,IAAI;IAE3C,WAAW,CAAC,eAAe,EAAE;AAC7B,IAAA,OAAO,KAAK;AACd;;MCxBa,mBAAmB,CAAA;AAC9B,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC;IAChC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;IAClC;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC;IAChC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;IAClC;AACD;;MCQY,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,IAAA,CAAA,OAAO,GAAG,kBAAkB;QAE5B,IAAA,CAAA,YAAY,GAAG,CAAC,KAAwB,KACtC,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,0BAAA,CAA4B;AACjC,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAA8B,KAClD,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,iCAAA,CAAmC;AACxC,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,iBAAiB,GAAG,CAAC,EAAU,KAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAA,6BAAA,EAAgC,EAAE,CAAA,CAAE;SAC1C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,qBAAqB,GAAG,CAAC,EAAU,KACjC,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAA,kCAAA,EAAqC,EAAE,CAAA,CAAE;SAC/C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAkB,KAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,qBAAA,CAAuB;AAC5B,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,aAAa,GAAG,CAAC,KAAuB,KACtC,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,2BAAA,CAA6B;AAClC,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,0BAA0B,GAAG,CAAC,KAAoC,KAChE,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,0CAAA,CAA4C;AACjD,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,qBAAqB,GAAG,CAAC,KAA+B,KACtD,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,qCAAA,CAAuC;AAC5C,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,gCAAgC,GAAG,CAAC,KAA0C,KAC5E,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,iDAAA,CAAmD;AACxD,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAA0B,KAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,4BAAA,CAA8B;AACnC,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAEH,IAAA,CAAA,wBAAwB,GAAG,CAAC,KAAgB,KAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,CAAA,iCAAA,CAAmC;SACzC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;QAWH,IAAA,CAAA,0BAA0B,GAAG,CAAC,eAAuB,KACnD,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,iCAAiC;YACtC,MAAM,EAAE,EAAE,eAAe,EAAE;SAC5B,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;AAEH,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,KAAiC,KAAI;;AAE5D,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAC7B;AACE,gBAAA,GAAG,EAAE,mCAAmC;AACxC,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,MAAM,EAAE,KAAK;AACd,aAAA,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,mBAAmB,EAAE,EAAE,CACvE;AACH,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAA6B,KAAI;AACpD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAC7B;AACE,gBAAA,GAAG,EAAE,mCAAmC;AACxC,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,IAAI,EAAE,KAAK;aACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;AACH,QAAA,CAAC;AACF,IAAA;IAzCC,wBAAwB,CACtB,SAAS,EAA8C,EAAA;QAEvD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAC7B,EAAE,GAAG,EAAE,gCAAgC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAChE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B;IACH;8GAvHW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCdY,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,aAAa,CAAC,EAAwB,CAAC;AAqBrE,IAAA;AAnBC,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU;IAC9B;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IACtD;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;IACjC;AAEA,IAAA,UAAU,CAAC,OAAmB,EAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAC/B;AAEA,IAAA,2BAA2B,CAAC,wBAAiC,EAAA;QAC3D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAChD;8GArBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCFZ,qBAAqB,CAAA;IAOzC,WAAA,CAAY,WAA+B,EAAE,aAA0B,EAAA;AACrE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;IACpC;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,MAAM;IAChG;AACD;AAEK,MAAO,sBAAuB,SAAQ,qBAAqB,CAAA;IAI/D,WAAA,CAAY,WAA+B,EAAE,aAA0B,EAAA;AACrE,QAAA,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC;QAJnC,IAAA,CAAA,MAAM,GAAG,OAAO;QAChB,IAAA,CAAA,UAAU,GAAG,uCAAuC;QAIlD,IAAI,CAAC,YAAY,EAAE;IACrB;AACD;AAEK,MAAO,yBAA0B,SAAQ,qBAAqB,CAAA;IAIlE,WAAA,CAAY,WAA+B,EAAE,aAA0B,EAAA;AACrE,QAAA,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC;QAJnC,IAAA,CAAA,MAAM,GAAG,UAAU;QACnB,IAAA,CAAA,UAAU,GAAG,8CAA8C;QAIzD,IAAI,CAAC,YAAY,EAAE;IACrB;AACD;AAEM,MAAM,kBAAkB,GAAG;IAChC,KAAK,CAAC,WAA+B,EAAE,aAA0B,EAAA;AAC/D,QAAA,OAAO,IAAI,sBAAsB,CAAC,WAAW,EAAE,aAAa,CAAC;IAC/D,CAAC;IACD,QAAQ,CAAC,WAA+B,EAAE,aAA0B,EAAA;AAClE,QAAA,OAAO,IAAI,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC;IAClE,CAAC;;MAGmB,iBAAiB,CAAA;AAQrC,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW;IAC1E;AAEA,IAAA,IAAc,OAAO,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,6BAA6B,CAAC;IACnE;AAEA,IAAA,IAAc,aAAa,GAAA;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,mCAAmC,CAAC;IACzE;AAEA,IAAA,WAAA,CAAY,QAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE;IAC7F;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QACtB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9C;AAEA,IAAA,KAAK,KAAI;AACV;AAEK,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;IAOxD,WAAA,CAAY,QAAkB,EAAE,aAA0B,EAAA;QACxD,KAAK,CAAC,QAAQ,CAAC;QANjB,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAEtB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC;AACnD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAIzB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;IACpC;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAA2C;QACxE,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,iBAAiB,GAAG,MAAK;AAC9B,gBAAA,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;oBACpC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,kBAAkB,EAAE,MAAK;AACvB,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC5C,CAAC;AACD,oBAAA,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,iBAAA,CAAC;AACJ,YAAA,CAAC;QACH;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,oCAAA,EAAuC,IAAI,CAAC,WAAW,CAAA,yBAAA,CAA2B;QAEzH,KAAK,CAAC,YAAY,EAAE;IACtB;IAEA,KAAK,GAAA;QACH,UAAU,CAAC,KAAK,EAAE;IACpB;IAEA,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;IAClC;AACD;AAEK,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;IAKxD,WAAA,CAAY,QAAkB,EAAE,MAAc,EAAA;QAC5C,KAAK,CAAC,QAAQ,CAAC;QAHjB,IAAA,CAAA,QAAQ,GAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAI9C,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,oBAAA,EAAuB,IAAI,CAAC,WAAW,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,EAAE;QAEvG,KAAK,CAAC,YAAY,EAAE;IACtB;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI;;AAEF,YAAA,UAAU;QACZ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AAC/B,YAAA,UAAU,CAAC,KAAK,CAAC,MAAK;gBACpB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAG;AACrE,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,GAAA;QACL,KAAK,CAAC,OAAO,EAAE;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC;AAChE,QAAA,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC;IAC5C;AACD;;MC/JY,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAiDlD,IAAA;AA5CC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS;IACpC;AAEA,IAAA,IAAc,gBAAgB,GAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,6BAA6B,CAAC;IACnE;AAEA,IAAA,WAAW,CAAC,QAA+B,EAAA;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS;YAAE;QAClC,IAAI,CAAC,IAAI,EAAE;IACb;IAEU,IAAI,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,GAAG;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACpF,aAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,GAAG,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAClF;IACF;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC;AACT,aAAA,oBAAoB;aACpB,IAAI,CACH,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5F;IACL;IAEA,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;IAC7C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS;YAAE;AAElC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzB;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;8GAnDW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACFD,MAAM,YAAEC,UAAQ,EAAE,GAAG,UAAU;MAKlB,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,QAAA,IAAA,CAAA,oBAAoB,GAAG;AACxC,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACxB;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzB,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC;QAOtD,IAAA,CAAA,kBAAkB,GAChC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,KAAI;AACrC,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,MAAM;YACzE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,kBAAkB,CAAC,CAAC;AACnF,QAAA,CAAC;AAmEJ,IAAA;IA5ES,cAAc,GAAA;AACpB,QAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;AACpE,QAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC5B;AAQA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,EAAE,WAAW;IAC5D;AAEA,IAAA,IAAY,SAAS,GAAA;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS;IAC3D;IAEA,SAAS,CAAC,sBAA+B,KAAK,EAAA;QAC5C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC;AAEtE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CACxB;AACE,YAAA,eAAe,EAAE,CAAC,EAAE,EAAEA,UAAQ,CAAC;AAC/B,YAAA,WAAW,EAAE;gBACX,EAAE;AACF,gBAAA;AACE,oBAAA,UAAU,EAAE,CAACA,UAAQ,EAAE,GAAG,mBAAmB,CAAC;AAC/C,iBAAA;AACF,aAAA;AACD,YAAA,iBAAiB,EAAE;gBACjB,EAAE;AACF,gBAAA;AACE,oBAAA,UAAU,EAAE,CAACA,UAAQ,EAAE,GAAG,mBAAmB,CAAC;AAC/C,iBAAA;AACF,aAAA;SACF,EACD;YACE,UAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACrD,SAAA,CACF;QACD,IAAI,mBAAmB,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;QACvC;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,cAAc,CAAC,SAA8B,EAAA;QAC3C,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC;IACtD;AAEA,IAAA,sBAAsB,CAAC,SAA8B,EAAA;AACnD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AAEzC,QAAA,MAAM,CAAC,GAAG;YACR,QAAQ,EAAE,SAAS,CAAC,eAAe;YACnC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,mBAAmB,EAAE,WAAW,CAAC,KAAK;SACvC;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC9D;IACA,mBAAmB,GAAA;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7C;IACO,kBAAkB,GAAA;QACvB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB;QAC7D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;IACtD;AAEO,IAAA,gBAAgB,CAAC,GAAgD,EAAA;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,iCAAiC,CAAC;IAC3F;8GA7FW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCTY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAACC,gBAAc,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAS3D,IAAA;AAPC,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;IAClD;AAEA,IAAA,kBAAkB,CAAC,MAAe,EAAA;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACxD;8GAVW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCOY,kCAAkC,CAAA;AAD/C,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,MAAM,GAAa,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAE1E,QAAA,IAAA,CAAA,KAAK,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE9D,QAAA,IAAA,CAAA,YAAY,GAA2B;YACrC,cAAc,EAAE,WAAW;YAC3B,WAAW,EAAE,aAAa;YAC1B,cAAc,EAAE,cAAc;YAC9B,cAAc,EAAE,aAAa;YAC7B,qBAAqB,EAAE,gBAAgB;SACxC;AAcF,IAAA;AAZC,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAC/B,IAAI,aAAa,GAAG,CAAC;AAErB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAU,KAAG;YACrD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAElC,IAAG,OAAO,EAAC;AACT,gBAAA,aAAa,EAAE;YACjB;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,EAAE,OAAO,EAAC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,EAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,EAAE;IAC1I;8GAxBW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,cADtB,MAAM,EAAA,CAAA,CAAA;;2FAClB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCJnB,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAACA,gBAAc,CAAC;QAE1D,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACnE,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;AASzE,IAAA;IAPC,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;IACjD;AAEA,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9D;8GAZW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;ACKM,MAAM,yBAAyB,GAAG;AAClC,MAAM,yBAAyB,GAAG;MAG5B,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAACA,gBAAc,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAEjD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA6B,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,iDAAC;AAEpF,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,kDAAC;AAC7C,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,iDAAC;AAC3C,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,iDAAC;AAqI5C,IAAA;AAzIU,IAAA,KAAK;IAMJ,gBAAgB,GAAA;QACxB,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC;IACnC;IAEA,yBAAyB,GAAA;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChE;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC;aACxB,WAAW,CAAC,yBAAyB;AACrC,aAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEhC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC;aACxB,WAAW,CAAC,yBAAyB;AACrC,aAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEhC,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,EAAE;QAE3D,aAAa,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,SAAS,CACzE,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC,KAAI;YACzE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK;AACzB,gBAAA,GAAG,IAAI;AACP,gBAAA,KAAK,EAAE;oBACL,GAAG,IAAI,CAAC,KAAK;AACb,oBAAA,cAAc,EAAE,YAAY;AAC5B,oBAAA,UAAU,EAAE,YAAY,IAAI,CAAC,cAAc;AAC3C,oBAAA,SAAS,EAAE,cAAc;AAC1B,iBAAA;AACD,gBAAA,KAAK,EAAE;oBACL,GAAG,IAAI,CAAC,KAAK;AACb,oBAAA,cAAc,EAAE,YAAY;AAC5B,oBAAA,UAAU,EAAE,YAAY,IAAI,CAAC,oBAAoB;AACjD,oBAAA,SAAS,EAAE,oBAAoB;AAChC,iBAAA;AACF,aAAA,CAAC,CAAC;AACL,QAAA,CAAC,CACF;IACH;AAEA,IAAA,MAAM,CAAC,QAA8C,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC7B;IAEA,oBAAoB,CAAC,cAAuB,EAAE,oBAA6B,EAAA;QACzE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK;AACzB,YAAA,GAAG,IAAI;AACP,YAAA,KAAK,EAAE;gBACL,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,SAAS,EAAE,cAAc;AAC1B,aAAA;AACD,YAAA,KAAK,EAAE;gBACL,GAAG,IAAI,CAAC,KAAK;AACb,gBAAA,SAAS,EAAE,oBAAoB;AAChC,aAAA;AACF,SAAA,CAAC,CAAC;IACL;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACxC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,qBAAqB,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACtB;QAED,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAK;YACnE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,EAAE;gBAC1E,yBAAyB,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACxD,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACvF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CACnCC,WAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,EACjD,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAI;AAC/C,YAAA,IAAI,oBAAoB,IAAI,cAAc,EAAE;gBAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC1C;iBAAO;AACL,gBAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,CAAC;YACjE;YAEA,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrB;QACF,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CACxB;QAED,SAAS,CAAC,SAAS,EAAE;IACvB;AAEA,IAAA,qBAAqB,CAAC,WAAmB,EAAA;QACvC,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,WAAW;SACZ;QAED,IAAI,CAAC,cAAc,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;IACzE;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC;AACF,aAAA,kBAAkB,CAAC;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,KAAK;SACN;AACA,aAAA,IAAI,CACHA,WAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,EACjD,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAC3C,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAChE;AAEF,aAAA,SAAS,CAAC,CAAC,EAAE,cAAc,EAAE,KAAI;YAChC,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;IACN;8GA/IW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACVM,MAAM,gBAAgB,GAAG,MAAK;AACnC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,cAAc,EAAE;AACpD;;ACFO,MAAM,uCAAuC,GAClD,YAAY,CAAC,UAAU,CAAyB,EAAE,CAAC;;MC4BxC,uBAAuB,CAAA;AApBpC,IAAA,WAAA,GAAA;AAqBqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAACD,gBAAc,CAAC;AACnC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;QAE1C,IAAA,CAAA,IAAI,GAA6D,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;QAE7F,IAAA,CAAA,MAAM,GAAG,EAAgE;AAgB1E,IAAA;IAdC,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC;aACF,WAAW,CAAC,KAAK,IAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC9B,YAAA,GAAG,KAAK;YACR,GAAG,IAAI,CAAC,MAAM;AACf,SAAA,CAAC;AAEH,aAAA,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IACxC;8GArBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EAjBvB;YACT,WAAW;AACX,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAA,wBAAA;AACT,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;YAClD,QAAQ;SACT,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBH,itEAsDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7BI,WAAW,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,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,WAAA,EAAA,IAAA,EAEX,uBAAuB,gEACvB,wBAAwB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHb,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBApBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,SAAA,EAErB;wBACT,WAAW;AACX,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAA,wBAAA;AACT,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;wBAClD,QAAQ;qBACT,EAAA,OAAA,EACQ;wBACP,WAAW;wBACX,gBAAgB;wBAChB,uBAAuB;wBACvB,wBAAwB;wBACxB,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,itEAAA,EAAA;;;AEvBI,MAAM,qCAAqC,GAAG,UAAU,CAAC,UAAU,CAAyB;AACjG,IAAA;AACE,QAAA,IAAI,EAAA,UAAA;AACJ,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,WAAW,EAAE,iCAAiC;AAC9C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAE3C,YAAA,OAAO,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9F,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,mCAAmC;AAChD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;AACpB,YAAA,OAAO,EAAE,CACP,CAAA,kEAAA,EACE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EACxB,CAAA,MAAA,CAAQ,CACT;QACH,CAAC;QACD,MAAM,EAAE,IAAI,IAAG;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;YAC3D,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAC5C,YAAA,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;QACtB,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,WAAW,EAAE,sCAAsC;AACnD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;AACpB,YAAA,OAAO,EAAE,CACP,CAAA,0DAAA,EACE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EACjC,CAAA,MAAA,CAAQ,CACT;QACH,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,WAAW,EAAE,oCAAoC;AACjD,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;AACpB,YAAA,OAAO,EAAE,CACP,CAAA,0DAAA,EACE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAC7B,CAAA,MAAA,CAAQ,CACT;QACH,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,WAAW,EAAE,wCAAwC;AACrD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;AACpB,YAAA,OAAO,EAAE,CACP,CAAA,0DAAA,EACE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EACjC,CAAA,MAAA,CAAQ,CACT;QACH,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;AACpB,YAAA,OAAO,EAAE,CACP,CAAA,0DAAA,EACE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAC1B,CAAA,MAAA,CAAQ,CACT;QACH,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,WAAW,EAAE,mCAAmC;AAChD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI,IAAG;AACpB,YAAA,OAAO,EAAE,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA,MAAA,CAAQ,CAAC;QACvD,CAAC;AACF,KAAA;AACF,CAAA,CAAC;;ACvGK,MAAM,wCAAwC,GAAG,aAAa,CAAC,UAAU,CAE9E,EAAE,CAAC;;MCuBQ,gCAAgC,CAAA;AAO3C,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,oBAAoB,CAAC;QAOvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC5B;8GAXW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBjC,CAAA;;;;;;;;;;;SAWH,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGG,WAAW,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,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,UAAA,EAAA,IAAA,EAAE,qBAAqB,+JAAE,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EADpE,CAAC,6BAA6B,CAAC,EAAA,CAAA,CAAA;;2FAGnC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAlB5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,EAAA,QAAA,EAChC,CAAA;;;;;;;;;;;AAWH,QAAA,CAAA,EAAA,aAAA,EAEQ,CAAC,6BAA6B,CAAC,EAAA,OAAA,EACrC,CAAC,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,EAAA;;;MChBzE,qCAAqC,CAAA;AANlD,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,SAAS,uDAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,SAAS,yDAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,SAAS,oDAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,SAAS,kDAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,SAAS,uDAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,SAAS,yDAAC;QAExC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAE;AAK7B,IAAA;IAHC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;8GAZW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,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,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlD,4jCA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBY,gBAAgB,oWAAE,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEjC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;+BACE,qCAAqC,EAAA,eAAA,EAE9B,uBAAuB,CAAC,MAAM,WACtC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,4jCAAA,EAAA;;;MEkClC,8BAA8B,CAAA;AAuBzC,IAAA,WAAA,GAAA;AAtBQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAa,yBAAyB,CAAC;AACxD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAelE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;QAEvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CACvDE,KAAG,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAC1C;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACrB,WAAW,CAAC,wCAAwC;AACpD,aAAA,IAAI,CAACA,KAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc;AAE9C,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CACxE,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,CACvC;IACH;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnD;IAEA,0BAA0B,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAE1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,IAAI,CAC7DA,KAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM;YACpE,OAAO,EAAE,YAAY,KAAK,MAAM,GAAG,KAAK,GAAG,SAAS;YACpD,SAAS,EAAE,CAAA,EAAG,OAAO,CAAA,cAAA,CAAgB;AACtC,SAAA,CAAC,CAAC,EACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAC/B,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC;YAC7C,OAAO;YACP,KAAK;YACL,MAAM;YACN,SAAS;SACV,CAAC,CACH,CACF;QAED,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAK;YAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,EAAE;gBAC1E,yBAAyB,EAAE,CAAC,KAAK,CAAC;AACnC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC3D,QAAA,CAAC,CAAC;IACJ;8GA9EW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,uFC1C3C,4wBAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYI,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAGnB,qCAAqC,kMAFrC,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EANH,CAAC,6BAA6B,CAAC,EAAA,CAAA,CAAA;;2FAUnC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAb1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,aAAA,EAExB,CAAC,6BAA6B,CAAC,EAAA,OAAA,EACrC;wBACP,qBAAqB;wBACrB,WAAW;wBACX,mBAAmB;wBACnB,SAAS;wBACT,gBAAgB;wBAChB,qCAAqC;AACtC,qBAAA,EAAA,QAAA,EAAA,4wBAAA,EAAA;;;MEMU,oCAAoC,CAAA;AAuB/C,IAAA,WAAA,GAAA;AAtBQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAa,yBAAyB,CAAC;AACxD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAwCvC,IAAA,CAAA,2BAA2B,GAAG,MAAK;AACjC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC5B;YACF;AACA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AAC1C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,YAAA,IAAI,CAAC;AACF,iBAAA,gCAAgC,CAAC;gBAChC,WAAW;gBACX,MAAM;aACP;AACA,iBAAA,IAAI,CAACC,KAAG,CAAC,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACjC,iBAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,QAAA,CAAC;QAED,IAAA,CAAA,SAAS,GAAG,MAAK;AACf,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,QAAA,CAAC;QAED,IAAA,CAAA,WAAW,GAAG,MAAK;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC3B,QAAA,CAAC;QAED,IAAA,CAAA,yBAAyB,GAAG,MAAK;AAC/B,YAAA,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;AACvF,YAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC;AAC7C,QAAA,CAAC;QAnDC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB;QAEpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,kCAAkC,EAAE;QAChF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CACvDH,KAAG,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAC1C;IACH;IAEA,kCAAkC,GAAA;AAChC,QAAA,QACE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,mDAAmD,CAAC,KAAK,MAAM;IAE/F;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnD;IA+BA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC;AACF,aAAA,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AAC7D,aAAA,IAAI,CAACG,KAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAEA,KAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aAC/D,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,CAAC,CAAC;IACN;8GApFW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CjD,q/DAmDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBI,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EACnB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,mBAAmB,uDAGnB,qCAAqC,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrC,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAJf,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EARH,CAAC,6BAA6B,CAAC,EAAA,CAAA,CAAA;;2FAcnC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAjBhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAAA,aAAA,EAE/B,CAAC,6BAA6B,CAAC,EAAA,OAAA,EACrC;wBACP,qBAAqB;wBACrB,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,SAAS;wBACT,gBAAgB;wBAChB,qCAAqC;wBACrC,cAAc;wBACd,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,q/DAAA,EAAA;;;MEPU,oCAAoC,CAAA;AAlCjD,IAAA,WAAA,GAAA;AAmCW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAoB;AAC1D,IAAA;8GAFY,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCrC,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sMAAA,CAAA,EAAA,CAAA,CAAA;;2FAoBU,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAlChD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAAA,QAAA,EACnC,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sMAAA,CAAA,EAAA;;;MCWU,uBAAuB,CAAA;AAfpC,IAAA,WAAA,GAAA;AAgBmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAExB,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,kCAAkC,CAAC;AACtE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAKtD,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAElC,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AA+BhD,IAAA;AA9CU,IAAA,WAAW;AACX,IAAA,MAAM;IAgBf,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC9D;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACjC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC5D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC7B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AAC7B,QAAA,IAAI,CAAC;AACF,aAAA,cAAc,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;AACzF,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;IAChD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;IACpC;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;IACtF;8GA/CW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,uEAXvB,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBlC,0jHAuGA,2CDpFI,WAAW,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,iaACrB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAErB,oCAAoC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,eAAe,2OAFf,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,YAE1B,uBAAuB,EAAA,SAAA,EACtB,CAAC,mBAAmB,CAAC,EAAA,OAAA,EACvB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,gBAAgB;wBAChB,oCAAoC;wBACpC;AACH,qBAAA,EAAA,QAAA,EAAA,0jHAAA,EAAA;;;MEKY,0BAA0B,CAAA;AArBvC,IAAA,WAAA,GAAA;AAsBU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAM9B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAK,EAAE,CAAC;AA2BlC,IAAA;IAzBC,QAAQ,GAAA;AACN,QAAA,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;;AAGvF,QAAA,UAAU,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AACrD,aAAA,WAAqC;AAExC,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB;QACF;QAEA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC9F;8GAnCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnB3B,CAAA;;;;;;;;;;;;;;;;GAgBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,UAAU,+NAAE,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE3B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;AACxC,iBAAA;;;ACfD,MAAM,YAAEL,UAAQ,SAAEO,OAAK,EAAE,GAAG,UAAU;MAezB,uBAAuB,CAAA;AAUlC,IAAA,WAAA,GAAA;AATQ,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAM/C,IAAA,CAAA,WAAW,GAAG,KAAK;QAGjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,KAAK,EAAE,CAAC,EAAE,EAAE,CAACP,UAAQ,EAAEO,OAAK,CAAC,CAAC;AAC/B,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;AACjF,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;aAC9C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,QAAA,CAAC,CAAC;IACN;8GA3BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BpC,ulDA2CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBI,WAAW,uqBACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAElB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,UAAU,+NAFV,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EAEtB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,kBAAkB;wBAClB,gBAAgB;wBAChB,eAAe;wBACf,UAAU;AACX,qBAAA,EAAA,QAAA,EAAA,ulDAAA,EAAA;;;MEzBU,sBAAsB,GAAG,IAAI,cAAc,CACtD,wBAAwB;;ACApB,SAAU,cAAc,CAAC,QAAkB,EAAA;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACpD,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,IAAI,OAAO,CAAC,WAAW;AACpE;;MCgBa,mBAAmB,CAAA;AAlBhC,IAAA,WAAA,GAAA;AAmBU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAEjE,IAAA,CAAA,iBAAiB,GAAG,EAAE;AA4CvB,IAAA;AA1CC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW;QAEjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE;IACnE;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;IACb;IAEU,IAAI,GAAA;AACZ,QAAA,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,QAAQ;QAEhF,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,eAAe,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE;aACvD,SAAS,CAAC,GAAG,IAAG;YACf,IAAI,CAAC,GAAG,EAAE;gBACR,IAAI,CAAC,eAAe,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY,GAAG,CAAA,EAAG,cAAc,CAAA,EAAA,EAAK,YAAY,CAAA,CAAE,GAAG,YAAY;IAC7F;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;IAC7C;AAEA,IAAA,kBAAkB,CAAC,WAAoB,EAAA;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;IAC/E;IAEA,8BAA8B,GAAA;QAC5B,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,QAAQ;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IAC7E;8GAjDW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBpB,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACS,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;AChBD,MAAM,YAAEP,UAAQ,EAAE,GAAG,UAAU;MAalB,8BAA8B,CAAA;AAX3C,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAE1D,IAAA,CAAA,OAAO,GAAG,KAAK;AACN,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACtC,YAAA,YAAY,EAAE,CAAC,IAAI,EAAEA,UAAQ,CAAC;AAC/B,SAAA,CAAC;AAWH,IAAA;IATC,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC;aACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;AAClC,aAAA,IAAI,CAACQ,UAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC3C,aAAA,SAAS,EAAE;IAChB;8GAjBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB3C,krBAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDRI,WAAW,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,EACnB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAElB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADf,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,OAAA,EAE/B;wBACP,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,gBAAgB;wBAChB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,krBAAA,EAAA;;;AElBI,MAAM,mBAAmB,GAAG;AAC5B,MAAM,oCAAoC,GAAG;AAC7C,MAAM,4BAA4B,GAAG;AACrC,MAAM,qBAAqB,GAAG;;ACqCrC,MAAM,aAAEC,WAAS,YAAET,UAAQ,EAAE,GAAG,UAAU;MAmB7B,cAAc,CAAA;AAjB3B,IAAA,WAAA,GAAA;AAkBqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEzD,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAA6B,WAAW,wDAAC;AAE1E,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;QAIvB,IAAA,CAAA,yBAAyB,GAAG,IAAI;AAEhC,QAAA,IAAA,CAAA,cAAc,GAAA,qBAAA;QAId,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,QAAQ,GAAG,KAAK;AA0IjB,IAAA;IAxIW,IAAI,GAAA;AACZ,QAAA,IAAI,CAAC,yBAAyB;AAC5B,YAAA,CACG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,uCAAuC,CAAY,IAAI,EAAE,EACtF,WAAW,EAAE,KAAK,OAAO;IAC/B;IAEU,SAAS,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnB,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAACA,UAAQ,EAAES,WAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAACT,UAAQ,EAAES,WAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,UAAU,EAAE,CAAC,KAAK,CAAC;AACpB,SAAA,CAAC;IACJ;IAEU,iBAAiB,GAAA;QACzB,MAAM,EACJ,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,KAAK,EAChB,YAAY,EAAE,QAAQ,GACvB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW;AAEnC,QAAA,IAAI,MAAM,IAAI,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;gBACxF,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC7C;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAC/B,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CAC9E;IACH;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;QAC1D,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC;QACjF,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE;QAEnE,IAAI,CAAC,cAAc;AAChB,aAAA,IAAI,CACH,SAAS,CAAC,OAAO,IAAG;YAClB,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;YAEA,OAAO,IAAI,CAAC;iBACT,KAAK,CAAC,WAAW;AACjB,iBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;AACvC,iBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAGH,KAAG,EAAE,CAAC;AAC1D,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;AAE1C,aAAA,SAAS,EAAE;IAChB;IAEQ,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;IACtF;IAEQ,gBAAgB,GAAA;QACtB,OAAO,IAAI,CACT,SAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EACjEA,KAAG,CAAC,MAAK;YACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE;AAC7C,gBAAA,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW;AAC7C,aAAA,CAAC;QACJ,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,gBAAgB,CAAC,WAAyB,EAAA;AAChD,QAAA,OAAOP,YAAU,CAAC,GAAG,IAAG;AACtB,YAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,EAAE,iBAAiB;YAErD,QAAQ,gBAAgB;AACtB,gBAAA,KAAK,mBAAmB;AACtB,oBAAA,MAAM,IAAI,GAAG;AACX,wBAAA,GAAG,WAAW;AACd,wBAAA,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;qBACzB;AACD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE;AACrF,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AAC9C,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;AACpE,gBAAA,KAAK,4BAA4B;gBACjC,KAAK,oCAAoC,EAAE;AACzC,oBAAA,MAAM,WAAW,GAAG;AAClB,wBAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,mBAAmB;wBACpC,WAAW,EAAE,WAAW,CAAC,WAAW;wBACpC,QAAQ,EAAE,WAAW,CAAC,QAAQ;qBAC/B;oBACD,OAAO,IAAI,CACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EAAE;wBACjD,WAAW;AACZ,qBAAA,CAAC,CACH;gBACH;gBACA,KAAK,qBAAqB,EAAE;AAC1B,oBAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,EAAE;oBACvD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AACtB,wBAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAA,CAAE,CAAC;oBAC9D;oBAEA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,KAAK;wBACtC,MAAM;wBACN,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;wBACxC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;AAC9C,qBAAA,CAAC,CAAC;AACH,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAC9D;;AAGF,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,CACvB,GAAG,CAAC,KAAK,EAAE,iBAAiB;AAC1B,gBAAA,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO;gBACzB,iCAAiC,EACnC,IAAI,EACJ,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AAED,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;AAC9B,QAAA,CAAC,CAAC;IACJ;8GApKW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAdd,CAAC,gBAAgB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7C/B,qjGAiGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDI,WAAW,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,4BAAA,EAAA,QAAA,EAAA,uGAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,sSACrB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,UAAU,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,EACV,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEtB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADf,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,SAAA,EAEV,CAAC,gBAAgB,CAAC,EAAA,OAAA,EACpB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,UAAU;wBACV,UAAU;wBACV,kBAAkB;wBAClB,qBAAqB;wBACrB,sBAAsB;wBACtB,gBAAgB;wBAChB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,qjGAAA,EAAA;0EAgB6D,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME1B9D,sBAAsB,CAAA;AAqBjC,IAAA,IAAI,kBAAkB,GAAA;QACpB,MAAM,EAAE,GAAG,EAAE,GAAG,yBAAyB,CAAC,CAAC,CAAC;QAC5C,QACE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,GAAG;YACzD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,kCAAkC,CAAC,KAAK,GAAG;AACvE,YAAA,CACG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,uCAAuC,CAAY,IAAI,EAAE,EACtF,WAAW,EAAE,KAAK,MAAM;IAE9B;AAEU,IAAA,UAAU,CAAC,OAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAqB,CAAC;AACzD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA,iCAAA,qDAA+C;AACnE,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC/B;IACF;AAEU,IAAA,iBAAiB,CAAC,kBAA2B,EAAA;QACrD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB;QACjE,IAAI,CAAC,WAAW,CAAC,KAAK,mFAA0C,EAAE,SAAS,EAAE,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,KAAK,iGAAiD,EAAE,SAAS,EAAE,CAAC;IACvF;IAEU,IAAI,GAAA;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAC7C,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EACxCG,WAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,EACzD,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CACpD;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC3C;AAEA,IAAA,WAAA,GAAA;AA1DQ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAE7C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAMpE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CACpC,GAAG,CAAC,IAAI,IAAG;AACT,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;YACzB;QACF,CAAC,CAAC,CACH;QAyCC,IAAI,CAAC,IAAI,EAAE;IACb;8GA7DW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CnC,kzCAmCM,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKF,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,yBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGhB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFjB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA5BlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,eAAA,EAkBb,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,mBAAmB;wBACnB,gBAAgB;wBAChB,SAAS;wBACT,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EAAA,kzCAAA,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA;;;MEJU,yBAAyB,CAAA;AAC3B,IAAA,SAAS;AA4BlB,IAAA,WAAA,GAAA;AA5BS,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAClB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAIpD,QAAA,IAAA,CAAA,QAAQ,GAA2B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;QAExE,IAAA,CAAA,SAAS,GAAG,KAAK;QAKjB,IAAA,CAAA,KAAK,GAAG,EAAE;QAEV,IAAA,CAAA,oBAAoB,GAAG,IAAI;QAE3B,IAAA,CAAA,uBAAuB,GAAG,IAAI;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,OAAmB,KAAI;YAClC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AACtD,YAAA,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACzC,QAAA,CAAC;AAGC,QAAA,IAAI,CAAC;aACF,IAAI,CACH,MAAM,CAAa,OAAO,CAAC,EAC3BI,KAAG,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC;AAE/C,aAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;IAC9B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QAEvB,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAC/D,QAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AAE5D,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAClD,YAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,mCAAmC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAEpF,IAAI,oBAAoB,EAAE;AACxB,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;8GArDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,SAAA,EAhBzB;YACT,mBAAmB;AACnB,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAA,mCAAA;AACT,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BH,mbAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDoBI,WAAW,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAErB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFf,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,SAAA,EAE3B;wBACT,mBAAmB;AACnB,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAA,mCAAA;AACT,yBAAA;qBACF,EAAA,OAAA,EACQ;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,mbAAA,EAAA;;;MECU,uBAAuB,CAAA;AATpC,IAAA,WAAA,GAAA;AAUqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE1B,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,YAAY,0DAAI,IAAI,EAAE,UAAU,EAAA,CAAG;QAC7D,IAAA,CAAA,cAAc,GAAG,SAAS,CAAC,gBAAgB,2DAAI,IAAI,EAAE,UAAU,EAAA,CAAG;QAClE,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,SAAS,kEAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AAI9E,QAAA,IAAA,CAAA,kBAAkB,GAAG,mBAAmB,CAAC,IAAI;AAsI9C,IAAA;AAlIC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnD;AAEQ,IAAA,QAAQ,CAAC,IAAI,EAAA;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC5C,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AACzC,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB,CAAC,IAAI,CAAC,aAAa;AACpC,aAAA,IAAI,CACH,QAAQ,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,GAAG,IAAG;AACV,gBAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,IAAI;gBAClC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,CAAA,sBAAA,EAAyB,GAAG,CAAC,WAAW,CAAA,CAAE;gBAEnE,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AAC5C,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAC1D;YACF,CAAC;YACD,KAAK,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7D,SAAA,CAAC;IACN;IAEA,MAAM,GAAA;QACJ,IAAI,YAAY,GAAG,EAAE;AACrB,QAAA,QAAQ,IAAI,CAAC,kBAAkB;YAC7B,KAAK,mBAAmB,CAAC,QAAQ;gBAC/B,YAAY,GAAG,oBAAoB;gBACnC;YACF,KAAK,mBAAmB,CAAC,KAAK;gBAC5B,YAAY,GAAG,iBAAiB;gBAChC;AACF,YAAA;gBACE,YAAY,GAAG,yBAAyB;gBACxC;;AAGJ,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,CAAA,YAAA,EAAe,YAAY,CAAA,CAAE,EAAE,wBAAwB;AAC5D,aAAA,IAAI,CACH,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAClDA,KAAG,CAAC,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,EACnC,SAAS,CAAC,MAAK;YACb,IAAI,IAAI,CAAC,kBAAkB,KAAK,mBAAmB,CAAC,KAAK,EAAE;AACzD,gBAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;gBAE7B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,IAAG;AAC5C,oBAAA,IAAI,CAAC;AACF,yBAAA,iBAAiB,CAAC;wBACjB,IAAI,EAAE,IAAI,CAAC,kBAAkB;AAC7B,wBAAA,YAAY,EAAE,IAAI;qBACnB;AACA,yBAAA,IAAI,CACH,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,EAClCP,YAAU,CAAC,KAAK,IAAG;AACjB,wBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACpB,wBAAA,OAAO,KAAK;AACd,oBAAA,CAAC,CAAC;AAEH,yBAAA,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,gBAAA,CAAC,CAAC;AAEF,gBAAA,OAAO,OAAO,CAAC,YAAY,EAAE;YAC/B;AAEA,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;gBAClD,IAAI,EAAE,IAAI,CAAC,kBAAkB;AAC9B,aAAA,CAAC;QACJ,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,eAAe,EAAE;AACnB,gBAAA,eAAe,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YAC3D;AACF,QAAA,CAAC,CAAC;aAEH,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,0BAA0B,CAAC;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAEzB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1C,IAAI,aAAa,EAAE;AACjB,gBAAA,aAAa,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;YAC1C;AACF,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,aAAa,CAAC,IAAU,EAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACxB;QAEA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,MAAK;YACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AAC7C,gBAAA,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;gBAC7B,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE;AAC5F,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,EAAE;AAC9D,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,OAAO,EAAE,MAAM,UAAU,EAAE;AAC3B,YAAA,KAAK,EAAE,MAAM,UAAU,EAAE;AAC1B,SAAA,CAAC;IACJ;8GApJW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EASuB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACL,UAAU,8GACP,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnD7E,gtHAoHA,EAAA,MAAA,EAAA,CAAA,sdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9EY,WAAW,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,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,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,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,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,yBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,yCAAE,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEzD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAIhB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,gtHAAA,EAAA,MAAA,EAAA,CAAA,sdAAA,CAAA,EAAA;2EAWlC,YAAY,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACjC,gBAAgB,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAC5B,SAAS,OAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEV/E,MAAM,aAAEU,WAAS,YAAET,UAAQ,SAAEO,OAAK,EAAE,GAAG,UAAU;MAoBpC,iBAAiB,CAAA;AAlB9B,IAAA,WAAA,GAAA;AAmBY,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,kCAAkC,CAAC;AAEvE,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAA6B,WAAW,wDAAC;QAM1E,IAAA,CAAA,yBAAyB,GAAG,IAAI;QAEhC,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,QAAQ,GAAG,KAAK;AAsFjB,IAAA;IAhFC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,yBAAyB;AAC5B,YAAA,CACG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,uCAAuC,CAAY,IAAI,EAAE,EACtF,WAAW,EAAE,KAAK,OAAO;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB;AACE,gBAAA,GAAG,EAAE,6CAA6C;AAClD,gBAAA,YAAY,EAAE,gCAAgC;aAC/C,EACD,IAAI,EACJ,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB;YACD;QACF;QAEA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAACP,UAAQ,EAAES,WAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAACT,UAAQ,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnE,KAAK,EAAE,CAAC,EAAE,EAAE,CAACA,UAAQ,EAAEO,OAAK,CAAC,CAAC;AAC/B,SAAA,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAC/B,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CACjF;IACH;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;YACzC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;YACzC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK;AAC1C,YAAA,OAAO,EAAE,SAAS;SACnB;QAED,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;AAC5F,aAAA,IAAI,CACH,SAAS,CAAC,eAAe,IACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAChE,SAAS,CAAC,MACR,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG;AAClD,SAAA,CAAC,CACH,EACDR,YAAU,CAAC,KAAK,IAAG;AACjB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,CACvB,KAAK,CAAC,KAAK,EAAE,iBAAiB;AAC5B,gBAAA,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO;gBAC3B,iCAAiC,EACnC,IAAI,EACJ,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;AAChC,QAAA,CAAC,CAAC,CACH,CACF,EAED,QAAQ,CAAC,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;AAG1C,aAAA,SAAS,EAAE;IAChB;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;IACjC;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnF;8GAxGW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAfjB,CAAC,gBAAgB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C/B,uoGA+FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/CI,WAAW,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEtB,oCAAoC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,UAAU,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,MAAA,EAAA,IAAA,EAJV,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAOP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,SAAA,EAEb,CAAC,gBAAgB,CAAC,EAAA,OAAA,EACpB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,kBAAkB;wBAClB,qBAAqB;wBACrB,sBAAsB;wBACtB,gBAAgB;wBAChB,oCAAoC;wBACpC,eAAe;wBACf,UAAU;wBACV,UAAU;AACX,qBAAA,EAAA,QAAA,EAAA,uoGAAA,EAAA;0EAY6D,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AErD3E,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC;MAe1C,sBAAsB,CAAA;AAbnC,IAAA,WAAA,GAAA;QAcE,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,eAAe,GAAG,KAAK;AAIN,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,kCAAkC,CAAC;AAC/E,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnC,IAAA,CAAA,WAAW,GAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,KAAI;AACrE,YAAA,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,MAAM;YAEpE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,kBAAkB,CAAC,CAAC;AACnF,QAAA,CAAC;AA4CF,IAAA;IA1CC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAI;AAC1D,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAEvE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CACvB;gBACE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/C,gBAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,gBAAA,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aACtF,EACD;AACE,gBAAA,UAAU,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAChD,aAAA,CACF;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU;YAAE;AAE1C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,IAAI,CAAC;AACF,aAAA,aAAa,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK;YACrC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK;YAC7C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;SAC1C;AACA,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;aAC9C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC7B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;IACxC;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnF;8GA5DW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCnC,ylEAuDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BI,WAAW,uqBACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAErB,oCAAoC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,UAAU,+NAHV,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAErB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,oCAAoC;wBACpC,eAAe;wBACf,UAAU;AACX,qBAAA,EAAA,QAAA,EAAA,ylEAAA,EAAA;;;MERU,yBAAyB,CAAA;AAbtC,IAAA,WAAA,GAAA;AAcY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAEzC,IAAA,CAAA,SAAS,GAAa,EAAE;AAKxB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACvB,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA,CAAC;AA2CH,IAAA;IAzCC,QAAQ,GAAA;AACN,QAAA,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAE3D,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC3E,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG;AACpB,YAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC;AAChC,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;IAC1B;IAEA,iBAAiB,GAAA;QACf,IAAI,IAAI,CAAC,OAAO;YAAE;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAEnB,QAAA,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAC3D,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB,CAAC;YACjB,KAAK;YACL,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,gBAAgB;SAChC;AACA,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;aAC3C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAC1B,QAAA,CAAC,CAAC;IACN;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE;QAE3B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;AAEpC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC;aACF,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC/C,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC3C,aAAA,SAAS,EAAE;IAChB;8GAtDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBtC,grDAqDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCI,WAAW,+9CACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAErB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,UAAU,+NAHV,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAEzB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,kBAAkB;wBAClB,eAAe;wBACf,UAAU;AACX,qBAAA,EAAA,QAAA,EAAA,grDAAA,EAAA;;;MEHU,kCAAkC,CAAA;AAN/C,IAAA,WAAA,GAAA;AAOqB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC1D,QAAA,IAAA,CAAA,UAAU,GAAqC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAKlF,IAAA;AAHC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC3B;8GAPW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB/C,oiBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAY,WAAW,iiBAAE,mBAAmB,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,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EAD/E,CAAC,6BAA6B,CAAC,EAAA,CAAA,CAAA;;2FAGnC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,aAAA,EAE5B,CAAC,6BAA6B,CAAC,WACrC,CAAC,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,oiBAAA,EAAA;;;MEWpF,wBAAwB,CAAA;AAfrC,IAAA,WAAA,GAAA;AAgBmB,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,kCAAkC,CAAC;AACtE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAG7D,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAgChD,IAAA;IA9BC,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IACtC;IAEA,SAAS,GAAA;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAC9C,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC9C,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,WAAW,EAAE,KAAK,CAAC,WAAW;AAC/B,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,GAAG,EACH,MAAM,IAAI,CAAC,SAAS,EAAE,EACtB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACtC;IACH;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK;IAC3C;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;IACtF;8GAxCW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,wEAXxB,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,g9GAsGA,2CDpFI,WAAW,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,iaACrB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAErB,oCAAoC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,eAAe,2OAFf,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,YAE3B,wBAAwB,EAAA,SAAA,EACvB,CAAC,mBAAmB,CAAC,EAAA,OAAA,EACvB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,gBAAgB;wBAChB,oCAAoC;wBACpC;AACH,qBAAA,EAAA,QAAA,EAAA,g9GAAA,EAAA;;;MEHY,eAAe,CAAA;AAlB5B,IAAA,WAAA,GAAA;AAmBW,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;AAC7C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAyC,SAAS,gEAAC;AACzF,IAAA;8GAJY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,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,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBhB,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,eAAe,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGd,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCSY,yBAAyB,CAAA;AAdtC,IAAA,WAAA,GAAA;AAeqB,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAEpE,IAAA,CAAA,UAAU,GAAuB,eAAe;QAChD,IAAA,CAAA,UAAU,GAAG,EAAE;AACf,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAC,KAAK,uEAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,gBAAgB;AAChE,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB;AAClE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAW,EAAE,4DAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,4DAAC;AAqDtE,IAAA;AAnDC,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,6BAA6B,CAAC;IAC5D;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC;AACF,aAAA,uBAAuB,CAAC,IAAI,CAAC,UAAU;AACvC,aAAA,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,KAAI;AAC/B,YAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC;AAC1C,QAAA,CAAC,CAAC;IACN;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC7C,QAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;AAC1C,QAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnE,QAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAC5C,QAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE;QAC5B,WAAW,CAAC,KAAK,EAAE;IACrB;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;IACjC;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC;IACpD;IAEA,iBAAiB,GAAA;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;IAChC;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,8CAA8C,EAAE,mBAAmB;AACxE,aAAA,IAAI,CACHW,QAAM,CAAC,MAAM,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EACxDR,WAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,CAAC;aAEnE,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACrD;8GAhEW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,oEAXzB,CAAC,uBAAuB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBtC,k4QA2MA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtLI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,gCAAA,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,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEZ,eAAe,6GACf,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,+IAJhB,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAQP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,SAAA,EAEtB,CAAC,uBAAuB,CAAC,EAAA,OAAA,EAC3B;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,kBAAkB;wBAClB,eAAe;wBACf,gBAAgB;qBACjB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k4QAAA,EAAA;;;MENpC,qBAAqB,CAAA;IAOtB,kBAAkB,GAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,mBAAmB,CAAC;AACtB,aAAA,IAAI,CAACI,UAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,aAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9E;IAEU,oBAAoB,GAAA;QAC5B,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACPN,WAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAC/B,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAClE,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC3E,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,CAAC,CACH,CACF,EACD,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;AAEA,IAAA,WAAA,GAAA;AA9BmB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAE3D,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;QA2BtB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;8GAlCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EAHrB,CAAC,mBAAmB,CAAC,0BCnBlC,moBAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNI,WAAW,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,4BAAA,EAAA,QAAA,EAAA,uGAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,gBAAgB,0HAChB,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAErB;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,gBAAgB;AACjB,qBAAA,EAAA,SAAA,EACU,CAAC,mBAAmB,CAAC,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,moBAAA,EAAA;;;MEVpC,6BAA6B,CAAA;AAL1C,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE1D,QAAA,IAAA,CAAA,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAE7B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,KAAK,0DAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAU;AACpC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,EAA0C,uDAAC;AAKjE,IAAA;IAHC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACpE;8GAXW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV1C,+5FAmFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3EY,mBAAmB,uDAAuC,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAnD,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,4BAA4B,EAAA,OAAA,EAE7B,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,+5FAAA,EAAA;;;MEmCxE,wBAAwB,CAAA;AAjBrC,IAAA,WAAA,GAAA;AAkBqB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,EAAC,WAA+C,EAAC;AAC9D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAElE,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAuD,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,gDAAC;AACjG,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,EAAE,qDAAC;AACtB,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,KAAK,qEAAC;AAoC1C,IAAA;IAlCW,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7F;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,UAAU,CAAC,GAAyC,EAAA;AAClD,QAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B;AAEA,IAAA,aAAa,CAAC,GAAyC,EAAA;AACrD,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,+CAA+C,EAAE,mBAAmB;AACzE,aAAA,IAAI,CACHQ,QAAM,CAAC,MAAM,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EACxDR,WAAS,CAAC,MACR,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAC9B,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,OAAO,IAAI,CAAC;AACT,qBAAA,MAAM,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE;AACtC,qBAAA,IAAI,CAACA,WAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC/D,qBAAA,SAAS,EAAE;YAChB;YACA,IAAI,CAAC,WAAW,EAAE;QACpB,CAAC,CAAC,CACH,CACF;AAEF,aAAA,SAAS,EAAE;IAChB;8GA5CW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EAFxB,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzC1B,sxGAkFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpDI,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,MAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,wWAChB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAG5B,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHb,cAAc,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAjBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAEvB;wBACP,kBAAkB;wBAClB,iBAAiB;wBACjB,gBAAgB;wBAChB,YAAY;wBACZ,yBAAyB;wBACzB,4BAA4B;wBAC5B,cAAc;wBACd,gBAAgB;wBAChB,6BAA6B;wBAC7B,aAAa;qBACd,EAAA,SAAA,EACU,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,sxGAAA,EAAA;;;MEpBb,oBAAoB,CAAA;IAWrB,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;QAEpC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE;AACxB,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;YAC9D;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAA,GAAA;AApBmB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AAE3C,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;QAErC,IAAA,CAAA,iBAAiB,GAAG,KAAK;QACzB,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClE,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAa9E,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;IACjD;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;AACnF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAC/B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC7F;8GAxCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBjC,08FAqFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxEI,mBAAmB,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,sGAAA,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,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,mBAAmB,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEnB,qCAAqC,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrC,cAAc,qLAFd,gBAAgB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,mBAAmB;wBACnB,qBAAqB;wBACrB,mBAAmB;wBACnB,gBAAgB;wBAChB,qCAAqC;wBACrC,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,08FAAA,EAAA;;;AEVH,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU;AAC1C,MAAM,2CAA2C,GAAG,QAAQ,CAAC,UAAU,CAAa;AACzF,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,WAAW,EAAE,mCAAmC;AAChD,QAAA,EAAE,EAAE,UAAU;QACd,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5C,QAAQ,EAAE,IAAI,IAAG;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;AACxD,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE;AAC1C,YAAA,OAAO,EACL,CAAC,QAAQ,CAAC,2CAA2C,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CACxF;QACH,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,WAAW,EAAE,+BAA+B;AAC5C,QAAA,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,QAAQ,EAAE,gCAAgC;AAC1C,QAAA,SAAS,EAAE,qBAAqB;AACjC,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,kCAAkC;AAC/C,QAAA,EAAE,EAAE,SAAS;QACb,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,SAAS,EAAE,0BAA0B;AACrC,QAAA,QAAQ,EAAE,gCAAgC;AAC3C,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,WAAW,EAAE,gCAAgC;AAC7C,QAAA,EAAE,EAAE,eAAe;AACnB,QAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;AACnD,QAAA,QAAQ,EAAE,8BAA8B;QACxC,QAAQ,EAAE,IAAI,IAAG;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;AACxD,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE;AAC1C,YAAA,OAAO,EACL,CAAC,QAAQ,CAAC,wCAAwC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CACrF;QACH,CAAC;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,WAAW,EAAE,sCAAsC;AACnD,QAAA,EAAE,EAAE,cAAc;QAClB,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,QAAQ,EAAE,oCAAoC;AAC/C,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAA,QAAA;AACJ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,QAAQ,EAAE,kCAAkC;QAC5C,OAAO,EAAE,IAAI,IAAG;YACd,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACxD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;YAE9C,OAAO,IAAI,KAAK,KAAK;QACvB,CAAC;AACF,KAAA;AACF,CAAA,CAAC;;AChEK,MAAM,8BAA8B,GAAG;AAC5C,IAAA,CAAA,wBAAA,2CAAqC,uCAAuC;CAC7E;AAEM,MAAM,+BAA+B,GAAG;AAC7C,IAAA,CAAA,wBAAA,2CAAqC,wCAAwC;CAC9E;AAEM,MAAM,4BAA4B,GAAG;AAC1C,IAAA,CAAA,wBAAA,2CAAqC,qCAAqC;CAC3E;AAEM,MAAM,0BAA0B,GAAG;AACxC,IAAA,CAAA,mCAAA,6CAAuC,2CAA2C;CACnF;AAEM,MAAM,kCAAkC,GAAG,IAAI,cAAc,CAClE,oCAAoC,CACrC;AAEM,MAAM,mCAAmC,GAAG,IAAI,cAAc,CACnE,qCAAqC,CACtC;AAEM,MAAM,gCAAgC,GAAG,IAAI,cAAc,CAChE,kCAAkC,CACnC;AAEM,MAAM,mCAAmC,GAAG,IAAI,cAAc,CACnE,qCAAqC,CACtC;;AChBD;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AA4D7C,IAAA;IA1DC,WAAW,GAAA;QACT,MAAM,UAAU,GAAsB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC1E,QAAA,MAAM,kBAAkB,GACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,EAAE;AACnE,QAAA,MAAM,mBAAmB,GACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,EAAE;AACpE,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,IAAI,EAAE;AACjE,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,EAAE;AAEpE,QAAA,MAAM,sBAAsB,GAAG,mCAAmC,CAChE,IAAI,CAAC,QAAQ,EACb,UAAU,CACX,CAAC,IAAI,CACJF,KAAG,CAAC,QAAQ,IAAG;YACb,OAAO;gBACL,CAAA,mCAAA,6CAAuC,QAAQ,CAAC,IAAI;aACrD;AACH,QAAA,CAAC,CAAC,EACF,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EACvDG,KAAG,CAAC,2BAA2B,IAAG;AAChC,YAAA,qBAAqB,CACnB,UAAU,CAAC,aAAa,EACxB,0BAA0B,EAC1B,2BAA2B,CAAC,QAAQ,EACpC,gBAAgB,CACjB;QACH,CAAC,CAAC,CACH;AAED,QAAA,MAAM,cAAc,GAAG,mCAAmC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CACvFH,KAAG,CAAC,QAAQ,KAAK;YACf,CAAA,wBAAA,2CAAqC,QAAQ,CAAC,YAAY;AAC3D,SAAA,CAAC,CAAC,EACH,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EACtDG,KAAG,CAAC,2BAA2B,IAAG;YAChC,uBAAuB,CACrB,UAAU,CAAC,aAAa,EACxB,8BAA8B,EAC9B,kBAAkB,CACnB;YACD,uBAAuB,CACrB,UAAU,CAAC,cAAc,EACzB,+BAA+B,EAC/B,mBAAmB,CACpB;AACD,YAAA,qBAAqB,CACnB,UAAU,CAAC,WAAW,EACtB,4BAA4B,EAC5B,2BAA2B,CAAC,IAAI,EAChC,gBAAgB,CACjB;QACH,CAAC,CAAC,CACH;AAED,QAAA,OAAO,GAAG,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAACH,KAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1E;8GA5DW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;AC5BD;;AAEG;MAEU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAOhC,IAAA;IAJC,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC7D,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO;IAC7C;8GARW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;AAYM,MAAM,iBAAiB,GAAG,MAAK;AACpC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACxD,IAAA,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO;AACxC;;ACrBA;;AAEG;MAEU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAMrE,IAAA;IAJC,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC7D,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,OAAO;IAC5D;8GAPW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;AAWM,MAAM,iBAAiB,GAAG,MAAK;AACpC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAEvD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACxD,IAAA,OAAO,mBAAmB,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,OAAO;AACvD;;ACIO,MAAM,yBAAyB,GAAmB,MAAK;AAC5D,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,MAAM,UAAU,GAAsB,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACrE,IAAA,MAAM,kBAAkB,GACtB,QAAQ,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,EAAE;AAC9D,IAAA,MAAM,mBAAmB,GACvB,QAAQ,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,EAAE;AAC/D,IAAA,MAAM,gBAAgB,GACpB,QAAQ,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,IAAI,EAAE;AAC5D,IAAA,MAAM,gBAAgB,GACpB,QAAQ,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,EAAE;AAE/D,IAAA,MAAM,sBAAsB,GAAG,mCAAmC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAC3F,GAAG,CAAC,QAAQ,IAAG;QACb,OAAO;YACL,CAAA,mCAAA,6CAAuC,QAAQ,CAAC,IAAI;SACrD;AACH,IAAA,CAAC,CAAC,EACF,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC,EAClD,GAAG,CAAC,2BAA2B,IAAG;AAChC,QAAA,qBAAqB,CACnB,UAAU,CAAC,aAAa,EACxB,0BAA0B,EAC1B,2BAA2B,CAAC,QAAQ,EACpC,gBAAgB,CACjB;IACH,CAAC,CAAC,CACH;AAED,IAAA,MAAM,cAAc,GAAG,mCAAmC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,QAAQ,KAAK;QACf,CAAA,wBAAA,2CAAqC,QAAQ,CAAC,YAAY;AAC3D,KAAA,CAAC,CAAC,EACH,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,EACjD,GAAG,CAAC,2BAA2B,IAAG;QAChC,uBAAuB,CACrB,UAAU,CAAC,aAAa,EACxB,8BAA8B,EAC9B,kBAAkB,CACnB;QACD,uBAAuB,CACrB,UAAU,CAAC,cAAc,EACzB,+BAA+B,EAC/B,mBAAmB,CACpB;AACD,QAAA,qBAAqB,CACnB,UAAU,CAAC,WAAW,EACtB,4BAA4B,EAC5B,2BAA2B,CAAC,IAAI,EAChC,gBAAgB,CACjB;IACH,CAAC,CAAC,CACH;AAED,IAAA,OAAO,GAAG,CAAC,cAAc,EAAE,sBAAsB,CAAC;AACpD,CAAC;;MCtEY,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACpD,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAOnE,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,IAA6C,KAAI;AAC9E,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;gBACjB,IAAI,GAAG,CAAC,SAAS;oBAAE;AAEnB,gBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC5E,MAAM,SAAS,GAAc;sBACzB,oBAAoB,CAAC;AACvB,sBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B,IAAI,CAAC,SAAS,EAAE;oBACd;gBACF;AACA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;AACvD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACF,IAAA;IAlBC,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAACG,KAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrF;8GAPW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;AA0BD,MAAM,aAAa,GAAG;AACpB,IAAA,CAAA,gCAAA,sDAAgD,uBAAuB;AACvE,IAAA,CAAA,iCAAA,sDAAgD,uBAAuB;AACvE,IAAA,CAAA,qCAAA,oDAA8C,yBAAyB;AACvE,IAAA,CAAA,yCAAA,wDAAkD,yBAAyB;AAC3E,IAAA,CAAA,kCAAA,iDAA2C,qBAAqB;CACjE;;ACTD,MAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AACpD,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACpC,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,wBAAA;AACH,wBAAA,gBAAgB,EAAE,cAAc;AACkB,qBAAA;AACrD,iBAAA;AACD,gBAAA,KAAK,EAAE,mBAAmB;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,2BAAA;AACH,wBAAA,gBAAgB,EAAE,iBAAiB;AACkB,qBAAA;AACxD,iBAAA;AACD,gBAAA,KAAK,EAAE,sBAAsB;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,iCAAA;AACH,wBAAA,gBAAgB,EAAE,uBAAuB;AACkB,qBAAA;AAC9D,iBAAA;AACD,gBAAA,KAAK,EAAE,4BAA4B;AACpC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,gBAAA,IAAI,EAAE;AACJ,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,gCAAA;AACH,wBAAA,gBAAgB,EAAE,sBAAsB;AACkB,qBAAA;AAC7D,iBAAA;AACD,gBAAA,KAAK,EAAE,2BAA2B;AACnC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,SAAS,EAAE,kCAAkC;AAC7C,gBAAA,IAAI,EAAE;AACJ,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,oCAAA;AACH,wBAAA,gBAAgB,EAAE,0BAA0B;AACkB,qBAAA;AACjE,iBAAA;AACD,gBAAA,KAAK,EAAE,+BAA+B;AACvC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,SAAS,EAAE,kCAAkC;AAC7C,gBAAA,IAAI,EAAE;AACJ,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,oBAAA;AACH,wBAAA,gBAAgB,EAAE,mBAAmB;AACkB,qBAAA;AAC1D,iBAAA;AACD,gBAAA,KAAK,EAAE,wBAAwB;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,iBAAiB,CAAC;AAChC,gBAAA,IAAI,EAAE;AACJ,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,0BAAA;AACH,wBAAA,gBAAgB,EAAE,yBAAyB;AACkB,qBAAA;AAChE,iBAAA;AACD,gBAAA,KAAK,EAAE,mCAAmC;AAC3C,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,iBAAiB,CAAC;AAChC,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,wCAAA;AACH,wBAAA,gBAAgB,EAAE,8BAA8B;AACkB,qBAAA;AACrE,iBAAA;AACD,gBAAA,KAAK,EAAE,mCAAmC;AAC3C,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,SAAS,CAAC;AACxB,gBAAA,OAAO,EAAE;AACP,oBAAA,aAAa,EAAE,qBAAqB;AACrC,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,gCAAA;AACH,wBAAA,gBAAgB,EAAE,sBAAsB;AACkB,qBAAA;AAC7D,iBAAA;AACD,gBAAA,KAAK,EAAE,uBAAuB;AAC/B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,SAAS,CAAC;AACxB,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,wBAAA;AACH,wBAAA,gBAAgB,EAAE,uBAAuB;AACkB,qBAAA;AAC9D,iBAAA;AACD,gBAAA,KAAK,EAAE,4BAA4B;AACpC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,SAAS,EAAE,kCAAkC;AAC7C,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,kCAAA;AACH,wBAAA,gBAAgB,EAAE,wBAAwB;AACkB,qBAAA;AAC/D,iBAAA;AACD,gBAAA,KAAK,EAAE,4BAA4B;AACpC,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,SAAS,CAAC;AACxB,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,kBAAA;AACH,wBAAA,gBAAgB,EAAE,wBAAwB;AACkB,qBAAA;AAC/D,iBAAA;AACD,gBAAA,KAAK,EAAA,uBAAA;AACN,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,SAAS,EAAE,kCAAkC;gBAC7C,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,gBAAA,IAAI,EAAE;AACJ,oBAAA,oBAAoB,EAAE;AACpB,wBAAA,GAAG,EAAA,qBAAA;AACH,wBAAA,gBAAgB,EAAE,oBAAoB;AACkB,qBAAA;AAC3D,iBAAA;AACD,gBAAA,KAAK,EAAA,yBAAA;AACN,aAAA;AACF,SAAA;AACF,KAAA;CACF;MAMY,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,0CAF3B,YAAY,CAAA,EAAA,CAAA,CAAA;+GAEX,0BAA0B,EAAA,OAAA,EAAA,CAH3B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAEX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AChNK,SAAU,qBAAqB,CAAC,OAA6B,EAAA;IACjE,OAAO;AACL,QAAA,WAAW,EAAE,GAAG;QAChB,GAAI,OAAe;KACpB;AACH;;ACwDA,MAAM,YAAY,GAAG;IACnB,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,uBAAuB;IACvB,mBAAmB;IACnB,cAAc;IACd,sBAAsB;IACtB,uBAAuB;IACvB,yBAAyB;IACzB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,yBAAyB;IACzB,gCAAgC;IAChC,8BAA8B;IAC9B,oCAAoC;IACpC,kCAAkC;IAClC,oCAAoC;CACrC;MAyBY,mBAAmB,CAAA;IAC9B,OAAO,QAAQ,CAAC,OAA6B,EAAA;QAC3C,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACtD,gBAAA;AACE,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,UAAU,EAAE,qBAAqB;oBACjC,IAAI,EAAE,CAAC,sBAAsB,CAAC;AAC/B,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,kCAAkC;oBAC3C,QAAQ,EAAE,OAAO,CAAC,wBAAwB;AAC3C,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,mCAAmC;oBAC5C,QAAQ,EAAE,OAAO,CAAC,yBAAyB;AAC5C,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,gCAAgC;oBACzC,QAAQ,EAAE,OAAO,CAAC,sBAAsB;AACzC,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,mCAAmC;oBAC5C,QAAQ,EAAE,OAAO,CAAC,kCAAkC;AACrD,iBAAA;gBACD,qBAAqB;gBACrB,mBAAmB;gBACnB,mBAAmB;gBACnB,kBAAkB;AACnB,aAAA;SACF;IACH;AAEA;;AAEG;AACH,IAAA,OAAO,OAAO,CAAC,OAAA,GAAgC,EAAE,EAAA;QAC/C,OAAO,IAAI,iBAAiB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrE;8GAxCW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YApB5B,UAAU;YACV,iBAAiB;YACjB,kBAAkB;YAClB,0BAA0B;YAC1B,iBAAiB;YACjB,iBAAiB;YACjB,qBAAqB;YACrB,gBAAgB;YAChB,mBAAmB;YACnB,gBAAgB;YAChB,UAAU;YACV,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,uBAAuB;AACvB,YAAA,qCAAqC,EAvCvC,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,uBAAuB;YACvB,mBAAmB;YACnB,cAAc;YACd,sBAAsB;YACtB,uBAAuB;YACvB,yBAAyB;YACzB,uBAAuB;YACvB,iBAAiB;YACjB,sBAAsB;YACtB,yBAAyB;YACzB,gCAAgC;YAChC,8BAA8B;YAC9B,oCAAoC;YACpC,kCAAkC;AAClC,YAAA,oCAAoC,aAjBpC,uBAAuB;YACvB,wBAAwB;YACxB,0BAA0B;YAC1B,uBAAuB;YACvB,mBAAmB;YACnB,cAAc;YACd,sBAAsB;YACtB,uBAAuB;YACvB,yBAAyB;YACzB,uBAAuB;YACvB,iBAAiB;YACjB,sBAAsB;YACtB,yBAAyB;YACzB,gCAAgC;YAChC,8BAA8B;YAC9B,oCAAoC;YACpC,kCAAkC;AAClC,YAAA,oCAAoC,EAIT,qCAAqC,CAAA,EAAA,CAAA,CAAA;AAsBrD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YApB5B,UAAU;YACV,iBAAiB;YACjB,kBAAkB;YAClB,0BAA0B;YAC1B,iBAAiB;YACjB,iBAAiB;YACjB,qBAAqB;YACrB,gBAAgB;YAChB,mBAAmB;YACnB,gBAAgB;YAChB,UAAU;YAGV,qBAAqB;YACrB,wBAAwB;YACxB,uBAAuB;AACvB,YAAA,qCAAqC,EAvCvC,uBAAuB;YACvB,wBAAwB;YAExB,uBAAuB;YAEvB,cAAc;YAEd,uBAAuB;YACvB,yBAAyB;YACzB,uBAAuB;YACvB,iBAAiB;YACjB,sBAAsB;YACtB,yBAAyB;YACzB,gCAAgC;YAChC,8BAA8B;YAC9B,oCAAoC;YACpC,kCAAkC,CAAA,EAAA,CAAA,CAAA;;2FA2BvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,qCAAqC,CAAC;AACjE,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,iBAAiB;wBACjB,kBAAkB;wBAClB,0BAA0B;wBAC1B,iBAAiB;wBACjB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,mBAAmB;wBACnB,gBAAgB;wBAChB,UAAU;wBACV,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB,wBAAwB;wBACxB,uBAAuB;wBACvB,qCAAqC;AACrC,wBAAA,GAAG,YAAY;AAChB,qBAAA;AACF,iBAAA;;;ACxGD;;;AAGG;MACU,2BAA2B,GAAG,IAAI,cAAc,CAC3D,6BAA6B;;ACqCzB,SAAU,YAAY,CAAC,MAAA,GAA+B,EAAE,EAAA;AAC5D,IAAA,MAAM,gBAAgB,GAAG;QACvB,qBAAqB;QACrB,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB;KACnB;IACD,OAAO;QACL,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;AACpD,QAAA;AACE,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,qBAAqB;YAChC,SAAS,EAAE,CAAC,GAAG,gBAAgB,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACpC,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,wBAAA;AACH,4BAAA,gBAAgB,EAAE,cAAc;AACkB,yBAAA;AACrD,qBAAA;AACD,oBAAA,KAAK,EAAE,mBAAmB;AAC3B,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,2BAAA;AACH,4BAAA,gBAAgB,EAAE,iBAAiB;AACkB,yBAAA;AACxD,qBAAA;AACD,oBAAA,KAAK,EAAE,sBAAsB;AAC9B,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,iCAAA;AACH,4BAAA,gBAAgB,EAAE,uBAAuB;AACkB,yBAAA;AAC9D,qBAAA;AACD,oBAAA,KAAK,EAAE,4BAA4B;AACpC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,uBAAuB,CAAC;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,gCAAA;AACH,4BAAA,gBAAgB,EAAE,sBAAsB;AACkB,yBAAA;AAC7D,qBAAA;AACD,oBAAA,KAAK,EAAE,2BAA2B;AACnC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,SAAS,EAAE,kCAAkC;AAC7C,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,oCAAA;AACH,4BAAA,gBAAgB,EAAE,0BAA0B;AACkB,yBAAA;AACjE,qBAAA;AACD,oBAAA,KAAK,EAAE,+BAA+B;AACvC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,SAAS,EAAE,kCAAkC;AAC7C,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,oBAAA;AACH,4BAAA,gBAAgB,EAAE,mBAAmB;AACkB,yBAAA;AAC1D,qBAAA;AACD,oBAAA,KAAK,EAAE,wBAAwB;AAChC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,iBAAiB,CAAC;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,0BAAA;AACH,4BAAA,gBAAgB,EAAE,yBAAyB;AACkB,yBAAA;AAChE,qBAAA;AACD,oBAAA,KAAK,EAAE,mCAAmC;AAC3C,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,iBAAiB,CAAC;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,wCAAA;AACH,4BAAA,gBAAgB,EAAE,8BAA8B;AACkB,yBAAA;AACrE,qBAAA;AACD,oBAAA,KAAK,EAAE,mCAAmC;AAC3C,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,SAAS,CAAC;AACxB,oBAAA,OAAO,EAAE;AACP,wBAAA,aAAa,EAAE,qBAAqB;AACrC,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,gCAAA;AACH,4BAAA,gBAAgB,EAAE,sBAAsB;AACkB,yBAAA;AAC7D,qBAAA;AACD,oBAAA,KAAK,EAAE,uBAAuB;AAC/B,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,SAAS,CAAC;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,wBAAA;AACH,4BAAA,gBAAgB,EAAE,uBAAuB;AACkB,yBAAA;AAC9D,qBAAA;AACD,oBAAA,KAAK,EAAE,4BAA4B;AACpC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,SAAS,EAAE,kCAAkC;AAC7C,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,kCAAA;AACH,4BAAA,gBAAgB,EAAE,wBAAwB;AACkB,yBAAA;AAC/D,qBAAA;AACD,oBAAA,KAAK,EAAE,4BAA4B;AACpC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,SAAS,CAAC;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,kBAAA;AACH,4BAAA,gBAAgB,EAAE,wBAAwB;AACkB,yBAAA;AAC/D,qBAAA;AACD,oBAAA,KAAK,EAAA,uBAAA;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,SAAS,EAAE,kCAAkC;oBAC7C,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACpB,4BAAA,GAAG,EAAA,qBAAA;AACH,4BAAA,gBAAgB,EAAE,oBAAoB;AACkB,yBAAA;AAC3D,qBAAA;AACD,oBAAA,KAAK,EAAA,yBAAA;AACN,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACH;AAEA,SAAS,0BAA0B,CAAC,OAAA,GAAgC,EAAE,EAAA;IACpE,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACtD,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,UAAU,EAAE,qBAAqB;YACjC,IAAI,EAAE,CAAC,sBAAsB,CAAC;AAC/B,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,kCAAkC;YAC3C,QAAQ,EAAE,OAAO,CAAC,wBAAwB;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,mCAAmC;YAC5C,QAAQ,EAAE,OAAO,CAAC,yBAAyB;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,gCAAgC;YACzC,QAAQ,EAAE,OAAO,CAAC,sBAAsB;AACzC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,mCAAmC;YAC5C,QAAQ,EAAE,OAAO,CAAC,kCAAkC;AACrD,SAAA;KACF;AACH;;ACzPA;;AAEG;;;;"}