{"version":3,"file":"ngx-indasuite-artifacts.mjs","sources":["../../../projects/ngx-indasuite-artifacts/src/lib/api/helpers/color.helper.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/helpers/date.helper.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/helpers/dictionnary.helper.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/helpers/swapStatusCodeHelpers.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/admin.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/alerting-response.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/explorer-axe.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/report.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/explorer-graph.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/explorer-scale.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/explorer-threshold.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/formula.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/formulas-result-codes.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/pagination.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/tag.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/indaba-measurements.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/indaba-metric.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/indaba-param.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/indaba-response.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/time-series-range.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indaba-models/type-metric.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indametav2-models/format.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indametav2-models/indaba-label-type.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indametav2-models/indameta-item-options.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indametav2-models/indameta-item.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indametav2-models/indameta-status-codes.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/indametav2-models/indametav2-response.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/recoveryTask.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/referentials.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/user-script-response.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/utils.models.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/time/calendar-time.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/models/time/relative-time.model.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/api-url.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/ngx-indasuite-api-services.module.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/access-zones.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/api-info.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/database.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/explorer.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/formulas.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/group.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/indaba.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/indametav2.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/preferences.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/profile.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/api/services/report.service.ts","../../../projects/ngx-indasuite-artifacts/src/assets/i18n/en.ts","../../../projects/ngx-indasuite-artifacts/src/assets/i18n/fr.ts","../../../projects/ngx-indasuite-artifacts/src/lib/translations/services/mat-pagination-intl.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/translations/services/indasuite-translation.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/translations/ngx-indasuite-translation.module.ts","../../../projects/ngx-indasuite-artifacts/src/lib/translations/services/indasuite-translation-http-interceptor.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/models/tree-display.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/models/tree-item.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/indasuite-dialog-title/indasuite-dialog-title.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/indasuite-dialog-title/indasuite-dialog-title.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/dialogs/add-data-structure-dialog/add-data-structure-dialog.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/dialogs/add-data-structure-dialog/add-data-structure-dialog.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/dialogs/add-item-dialog/add-item-dialog.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/dialogs/add-item-dialog/add-item-dialog.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/dialogs/delete-item-dialog/delete-item-dialog.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/dialogs/delete-item-dialog/delete-item-dialog.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/loading-spinner/loading-spinner.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/loading-spinner/loading-spinner.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/empty-state/empty-state.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/empty-state/empty-state.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/pipes/metric-in-array.pipe.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/indameta-tree/tree-display/tree-display.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/indameta-tree/tree-display/tree-display.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/indameta-tree/indameta-tree.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indametav2/components/indameta-tree/indameta-tree.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/application-card-frame/application-card-frame.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/application-card-frame/application-card-frame.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/services/environment.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/application-loading/application-loading.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/application-loading/application-loading.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/block-paste/block-paste.directive.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/aggregation-interval-input/aggregation-interval-input.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/aggregation-interval-input/aggregation-interval-input.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/aggregation-select/aggregation-select.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/aggregation-select/aggregation-select.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/chart-type-select/indasuite-chart-type-select.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/chart-type-select/indasuite-chart-type-select.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/services/formatter.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/chart-array/chart-array.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/chart-array/chart-array.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/chart-graph/chart-graph.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/chart-graph/chart-graph.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/line-chart/line-chart.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/line-chart/line-chart.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/period-select/period-select.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/chart/period-select/period-select.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/gauge/gauge.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/gauge/gauge.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/indasuite-gauge/indasuite-gauge.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/indasuite-gauge/indasuite-gauge.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/refresh-interval/refresh-interval.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/refresh-interval/refresh-interval.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/live-data-show/live-data-show.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/live-data-show/live-data-show.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/tag/tag.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/tag/tag.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/download-to-img/download-to-img.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/download-to-img/download-to-img.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/tag-show/tag-show.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/data-show/tag-show/tag-show.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/database-select-list/database-select-list.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/database-select-list/database-select-list.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/directive/has-scope.directive.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/animations/animations.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/drawer-item/drawer-item.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/drawer-item/drawer-item.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/services/sidenav.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/toastr/toastr.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/toastr/toastr.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/table/data-table/data-table.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/table/data-table/data-table.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/indaboard-fullscreen/indaboard-fullscreen.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/indaboard-fullscreen/indaboard-fullscreen.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/services/indasuite-modal.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/drawer/drawer.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/drawer/drawer.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/hashed-pagination/hashed-pagination.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/hashed-pagination/hashed-pagination.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/header/header.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/header/header.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indasuite-versions/indasuite-versions.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/indasuite-versions/indasuite-versions.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/intercom-helper/intercom-helper.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/intercom-helper/intercom-helper.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/loading-snackbar/indasuite-loading-snackbar.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/loading-snackbar/indasuite-loading-snackbar.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/logout-button/logout-button.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/logout-button/logout-button.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/modal-frame-confirmation/modal-frame-confirmation.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/modal-frame-confirmation/modal-frame-confirmation.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/simple-modal/simple-modal.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/simple-modal/simple-modal.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/modal-frame/modal-frame.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/modal-frame/modal-frame.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/services/title.service.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/not-found/not-found.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/not-found/not-found.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/select-lang/select-lang.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/select-lang/select-lang.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/sidenav-container/indasuite-sidenav-container.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/sidenav-container/indasuite-sidenav-container.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/table/indasuite-data-table/indasuite-data-table.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/table/indasuite-data-table/indasuite-data-table.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/user-menu/user-menu.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/user-menu/user-menu.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/user/user.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/user/user.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/directive/declare.directive.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-input/search-metric-input.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-input/search-metric-input.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-properties/search-properties.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-properties/search-properties.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/indameta-search/indameta-search.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/indameta-search/indameta-search.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-menu/search-metric-menu.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-menu/search-metric-menu.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-list/search-metric-list.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-list/search-metric-list.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/subtitle/subtitle.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/subtitle/subtitle.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-modal/search-metric-modal.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/search/search-metric-modal/search-metric-modal.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/menu-card/menu-card.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/menu-card/menu-card.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/menu-button/menu-button.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/menu-button/menu-button.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/header/header.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/app-header/header/header.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/pipes/technical-display-name.pipe.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/formula-operators/formula-operators.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/formula-operators/formula-operators.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/pipes/datetime.pipe.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/pipes/duration.pipe.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/confirm-modal/confirm-modal.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/modals/confirm-modal/confirm-modal.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/paginator/paginator.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/paginator/paginator.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/date-range-picker/date-range-picker.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/date-range-picker/date-range-picker.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/switch/switch.component.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/switch/switch.component.html","../../../projects/ngx-indasuite-artifacts/src/lib/ui/ngx-indasuite-ui.module.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/interceptors/ErrorCatchingInterceptor/ErrorCatchingInterceptor.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/resolvers/preferences.resolver.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/resolvers/profile.resolver.ts","../../../projects/ngx-indasuite-artifacts/src/lib/ui/services/indasuite-loading-snackbar.service.ts","../../../projects/ngx-indasuite-artifacts/src/public-api.ts","../../../projects/ngx-indasuite-artifacts/src/ngx-indasuite-artifacts.ts"],"sourcesContent":["import { ExplorerGraph } from \"../models\";\r\n\r\nexport class ColorHelper {\r\n  static colors = new Array<string>(\r\n    ColorHelper.getCssColor('--primary-color'),\r\n    ColorHelper.getCssColor('--accent-color'),\r\n    ColorHelper.getCssColor('--warn-color'),\r\n    ColorHelper.getCssColor('--iobase-terre-color'),\r\n    ColorHelper.getCssColor('--blue-sky'),\r\n    ColorHelper.getCssColor('--yellow-sun'),\r\n    ColorHelper.getCssColor('--green-apple-light'),\r\n    ColorHelper.getCssColor('--black'),\r\n    ColorHelper.getCssColor('--primary-lighter-color')\r\n  );\r\n\r\n  static getAvailaibleColorFromExplorerGraph(\r\n    used: Array<ExplorerGraph>\r\n  ): string {\r\n    if (!used) return ColorHelper.getRandomColor();\r\n    return ColorHelper.getAvailableColor(used.map((graph) => graph.color));\r\n  }\r\n\r\n  static getAvailableColor(used: Array<string>) {\r\n    for (let color of this.colors) {\r\n      if (used.every((usedColor) => usedColor !== color)) return color;\r\n    }\r\n    return ColorHelper.getRandomColor();\r\n  }\r\n\r\n  private static getRandomColor() {\r\n    const letters = '0123456789ABCDEF';\r\n    let color = '#';\r\n    for (let i = 0; i < 6; i++) {\r\n      color += letters[Math.floor(Math.random() * 16)];\r\n    }\r\n    return color;\r\n  }\r\n\r\n  public static getCssColor(name: string) {\r\n    return getComputedStyle(\r\n      document.getElementsByTagName('body')[0]\r\n    ).getPropertyValue(name);\r\n  }\r\n}\r\n","import moment from 'moment';\n\nexport class DateHelper {\n  static getInterval(minDate: Date, maxDate: Date, nbrPoints: number): string {\n    const min = moment(minDate);\n    const max = moment(maxDate);\n\n    let rangeSec = Math.ceil(max.diff(min, 'seconds') / nbrPoints);\n\n    let interval = '';\n\n    while (rangeSec > 0) {\n      let closestInterval = 0;\n      if (rangeSec >= 3600 * 24) {\n        closestInterval = Math.floor(rangeSec / (3600 * 24));\n        interval += `${closestInterval}d`;\n        rangeSec -= closestInterval * 3600 * 24;\n      } else if (rangeSec >= 3600) {\n        closestInterval = Math.floor(rangeSec / 3600);\n        interval += `${closestInterval}h`;\n        rangeSec -= closestInterval * 3600;\n      } else if (rangeSec >= 60) {\n        closestInterval = Math.floor(rangeSec / 60);\n        interval += `${closestInterval}m`;\n        rangeSec -= closestInterval * 60;\n      } else if (rangeSec >= 1) {\n        closestInterval = Math.ceil(rangeSec);\n        interval += `${closestInterval}s`;\n        rangeSec -= closestInterval;\n      } else {\n        rangeSec = 0;\n        interval = '1s';\n      }\n    }\n\n    return interval;\n  }\n}\n","export const generateDictionnary = function (enumList, prefix: string) {\n  const res = {};\n\n  Object.keys(enumList)\n    .filter((x) => !(parseInt(x) >= 0))\n    .forEach((key) => {\n      res[enumList[key]] = `${prefix}${key}`;\n    });\n\n  return res;\n};\n","export const swapFn = <T extends Record<string, string>>(obj: T) => {\n  const res = {} as any; // I'm not worried about impl safety\n  Object.entries(obj).forEach(([key, value]) => {\n    res[value] = Number(key);\n  });\n  return res as { [K in keyof T as T[K]]: K };\n}\n","import { swapFn } from \"../helpers/swapStatusCodeHelpers\";\nimport { PaginationModel } from \"./pagination.model\";\n\nexport type AdminBaseResponse<T = void> = {\n  resultCode: keyof typeof AdminStatusCodeToString;\n  message: string;\n  data: T;\n}\n\nexport type AdminListResponse<T> = {\n  resultCode: keyof typeof AdminStatusCodeToString;\n  message: string;\n  data: T[];\n  paginationInfo: PaginationModel;\n}\n\nexport type AdminError = {\n  error: string;\n  message: string;\n}\n\nexport type AdminErrorResponse = AdminBaseResponse & {\n  errors: AdminError[]\n}\n\nexport const AdminStatusCodeToString = {\n  4_011: 'NoPhoneNumber', // No Phone Number\n  4_020: 'InvalidVerificationCode', // Invalid verification code\n  4_021: 'ExpiredVerificationCode', // Expired verification code\n  4_022: 'AlreadyVerified', // Already verified\n  4_023: 'WaitBeforeResend', // Wait 10 minutes between verification code resends\n  4_025: 'FailSend', // Fail sending verification code\n\n  4_030: 'MandatoryApplicationDelete', // Mandatory application, can't delete\n  4_031: 'MandatoryApplicationUpdate', // Mandatory application, can't update\n\n  4_050: 'ModelInvalid', // Invalid model\n\n  4_051: 'InvalidUserNoPhoneNumber', // User has no phone number\n  4_052: 'InvalidImage', // Invalid image\n  4_053: 'InvalidLayout', // Layout must be null\n  4_054: 'InvalidFile', // Invalid file\n\n  4_060: 'ReportDuplicateName', // Duplicated report name\n\n  4_070: 'InputAccessZoneInvalid', // Access zone invalid\n  4_071: 'InputAccessZoneTypeInvalid', // Type Access zone invalid\n\n  4_090: 'UserModelInvalid', // User model invalid\n  4_091: 'UserNoPhoneNumber', // User has no phone number\n  4_092: 'UserPreferenceModelInvalid', // User preference model invalid\n  4_093: 'UserPhoneNumberModelInvalid', // Invalid user phone number\n\n  4_101: 'UserEmailExist', // User email exist\n  4_102: 'UserRoleInvalid', // Invalid user role\n  4_103: 'UserRoleError', // Warning: user not added to role\n  4_104: 'UserProvider', // Invalid user provider\n  4_105: 'UserRoleLock', // User cannot be assigned a role\n  4_106: 'UserCreationWithoutRole', // User creation without role is not possible\n\n  4_110: 'UserGroupDefaultAddError', // Warning: user not added to default group\n  4_111: 'IndabaUserGroupsAddError', // Warning: user not added to Indaba group\n  4_112: 'IndabaUserGroupsRemoveError', // Warning: user not removed from Indaba groups\n  4_113: 'IndabaGroupUsersPatchError', // Warning: error patching Indaba group users\n  4_114: 'IndabaDeleteGroupError', // Warning: Indaba group not deleted\n\n  4_120: 'UserDontExist', // User don't exist\n\n  4_200: 'GroupModelInvalid', // Invalid group model\n  4_201: 'GroupNameExists', // Group name already exists\n  4_202: 'GroupDefaultForbidden', // Updating default group is forbidden\n  4_203: 'GroupNotFound', // Group not found\n  4_204: 'UserNotOnGroup', // User is not a group member\n\n  4_210: 'ImportFileBad', // Bad file format\n  4_211: 'ImportFileInvalid', // Invalid file content\n  4_212: 'ImportRenameForbidden', // Rename a Group on the import file is forbidden\n\n  4_400: 'Unknown', // Unknown\n  4_500: 'InternalServerError', // Internal Server Error\n  4_600: 'Warning', // Warning\n  4_700: 'CustomerSSO' // Operations on SSO users are not permitted\n} as const;\n\nexport const AdminStringToStatusCode = swapFn(AdminStatusCodeToString);\n","import { PaginationModel } from './pagination.model';\nimport { swapFn } from '../helpers/swapStatusCodeHelpers';\n\nexport type AlertingBaseResponse<T = void> = {\n  resultCode: keyof typeof AlertingStatusCodeToString;\n  message: string;\n  data: T;\n}\n\nexport type AlertingListResponse<T> = {\n  resultCode: keyof typeof AlertingStatusCodeToString;\n  message: string;\n  data: T[];\n  paginationInfo: PaginationModel;\n}\n\nexport type AlertingError = {\n  error: string;\n  message: string;\n  additionalInformations: string[]\n}\n\nexport type AlertingErrorResponse = AlertingBaseResponse & {\n  errors: AlertingError[]\n}\n\nexport const AlertingStatusCodeToString = {\n  9_010: 'OK',\n  9_050: 'ModelInvalid',\n  9_060: 'AlertNotFound',\n  9_100: 'GroupNotFound',\n  9_101: 'UmsError',\n  9_110: 'HistoryNotFound',\n  9_200: 'EquationEmpty',\n  9_201: 'EquationFormat',\n  9_202: 'CompileFail',\n  9_203: 'EvaluateFail',\n  9_204: 'EquationMetricNotFound',\n  9_205: 'EquationResultTypeMismatch',\n  9_206: 'EquationResultTypeUnsupported',\n  9_207: 'EquationIndabaFuncForbidden',\n  9_208: 'EquationDivideByZero',\n  9_209: 'EquationSyntaxError',\n  9_210: 'EquationTooManyIndabaFunctions',\n  9_211: 'EquationInvalid',\n  9_212: 'EquationInvalidDateFormat',\n  9_300: 'FileFormatInvalid',\n  9_301: 'FileInvalid',\n  9_400: 'Unknown',\n  9_500: 'InternalServerError',\n  9_501: 'Warning'\n} as const;\n\nexport const AlertingStringToStatusCode = swapFn(AlertingStatusCodeToString);\n","import { ExplorerScale } from './explorer-scale.model';\nimport { ExplorerThreshold } from './explorer-threshold.model';\n\nexport class ExplorerAxe {\n  public axeId: string;\n  public thresholds?: Array<ExplorerThreshold>;\n  public scale?: ExplorerScale;\n  public color?: string;\n  public hidden?: boolean;\n\n  constructor(\n    axeId: string,\n    color?: string,\n    scale?: ExplorerScale,\n    thresholds?: Array<ExplorerThreshold>\n  ) {\n    this.axeId = axeId;\n    this.color = color;\n    this.scale = scale;\n    this.thresholds = thresholds;\n    this.hidden = false;\n  }\n}\n","import { RequestAggregation } from './indaba-models';\nimport { CalendarTimeRange } from './time/calendar-time.model';\n\nexport enum ComponentType {\n  chart = 'chart',\n  show = 'show',\n  table = 'table',\n  gauge = 'gauge',\n  integral = 'integral',\n  stackArea = 'stackarea',\n  stackBar = 'stackbar',\n  pie = 'pie',\n  xyLatest = \"xylatest\",\n  xyScatter = \"xyscatter\",\n  text = \"text\"\n}\n\nexport enum ChartPointType {\n  scatter = 'scatter',\n  line = 'line',\n  bar = 'bar',\n}\n\nexport type TagComponentDescription = {\n  name: string;\n  displayName: string;\n  datasource: string;\n  type: ChartPointType;\n  unit?: string;\n  color?: string;\n  interpoled?: boolean;\n  aggregation: RequestAggregation;\n  hidden?: boolean;\n  filter?: string;\n}\n\nexport interface Scale {\n  min: number;\n  max: number;\n  stepSize: number;\n  userMin?: number;\n  userMax?: number;\n  userStep?: number;\n  defaultMin?: number;\n  defaultMax?: number;\n  defaultStep?: number;\n  marginPercent: number;\n}\n\nexport interface Threshold {\n  axe: string;\n  value: number;\n  color?: string;\n  label?: string | Array<string>;\n  dashed?: boolean;\n  orientation?: string;\n  position?: string;\n  yOffset?: number;\n}\n\nexport interface Axe {\n  axeId: string;\n  thresholds?: Array<Threshold>;\n  scale?: Scale;\n  color?: string;\n  hidden?: boolean;\n}\n\nexport interface Report {\n  id: string;\n  title: string;\n  description: string;\n  defaultTimeRange: CalendarTimeRange;\n  access: boolean;\n  layout: Array<LayoutItem>;\n  isAuthor: boolean;\n  lastUpdate: string;\n  favorite?: boolean;\n  username?: string;\n}\n\nexport interface LayoutItem {\n  columnspan: number;\n  rowspan: number;\n\n  column: number;\n  row: number;\n\n  component: ReportComponent;\n  componentId?: string;\n}\n\nexport interface ReportComponent {\n  id: string;\n  title: string;\n  description?: string;\n  type: ComponentType;\n  metrics: Array<TagComponentDescription>;\n  timeRange: CalendarTimeRange;\n  timeRangeLocked: boolean;\n  limit: number;\n  parameters?: any;\n  value?: any;\n  timeRangeOffset?: number;\n}\n\nexport interface ReportGaugeComponent extends ReportComponent {\n  parameters: { min: number; max: number; digits?: number; };\n}\n\nexport interface ReportChartComponent extends ReportComponent {\n  parameters: { axes: Array<Axe>; displayLegends: boolean; };\n}\n\nexport interface ReportShowComponent extends ReportComponent {\n  parameters: { digits?: number };\n}\n\nexport interface ReportTableComponent extends ReportComponent {\n  parameters: { digits?: number; pageSize?: number; };\n}\n\n// aggregated component corresponds to stacked and pie\nexport interface ReportAggregatedComponent extends ReportComponent {\n  parameters: { axes: Array<Axe>; aggregation: RequestAggregation; displayLegends: boolean; };\n}\n\nexport interface ReportXYComponent extends ReportComponent {\n  parameters: { axes: Array<Axe>; aggregation: RequestAggregation; xAxeId: string; yAxeId: string; size: number; abacuses: Array<Abacus> };\n}\n\nexport interface ReportIntegralComponent extends ReportComponent {\n  parameters: {\n    axes: Array<Axe>;\n    aggregation: RequestAggregation;\n    displayLegends: boolean;\n  };\n}\n\nexport interface ReportFilters {\n  title: string;\n}\n\nexport interface PublicReportFilters extends ReportFilters {\n  getFavorites?: boolean;\n}\n\nexport interface GaugeSizes {\n  axe: number;\n  value: number;\n  label: {\n    font: number;\n    distance: number\n  };\n  anchor: number;\n  splitLine: {\n    length: number;\n    width: number;\n  }\n}\n\nexport const DEFAULT_SIZES: GaugeSizes = {\n  axe: 10,\n  value: 25,\n  label: {\n    font: 20,\n    distance: 15\n  },\n  anchor: 25,\n  splitLine: {\n    length: 5,\n    width: 2\n  }\n};\n\nexport const MINIMAL_SIZES: GaugeSizes = {\n  axe: 5,\n  value: 10,\n  label: {\n    font: 8,\n    distance: 0\n  },\n  anchor: 5,\n  splitLine: {\n    length: 0,\n    width: 0\n  }\n};\n\nexport type Abacus = {\n  // display\n  label?: string;\n  color: string;\n  size: number;\n  area?: 'start' | 'end';\n  dashed: boolean;\n\n  // draw\n  equation: string;\n  xMin: number;\n  xMax: number;\n  step: number;\n}","import { RequestAggregation } from './indaba-models';\nimport { ChartPointType, TagComponentDescription } from './report.model';\nimport { RelativeTimeRange } from './time/relative-time.model';\n\nexport class ExplorerMetric {\n  timestamp: string;\n  value: number;\n  constructor(timestamp: string, value: number) {\n    this.timestamp = timestamp;\n    this.value = value;\n  }\n}\n\nexport interface ExplorerChart {\n  id: string;\n  title: string;\n  description?: string;\n  type: 'chart';\n  metrics: Array<TagComponentDescription>;\n  timeRange: RelativeTimeRange;\n  timeRangeLocked: boolean;\n  limit: number;\n  parameters?: any;\n  value?: any;\n}\n\nexport class ExplorerGraph {\n  tag: string;\n  source: string; // to keep same URL\n  color?: string;\n  unit?: string;\n  metrics?: Array<ExplorerMetric>;\n  interpoled: boolean;\n  aggregation: RequestAggregation;\n  displayName: string;\n  type: ChartPointType;\n  hidden: boolean;\n  filter: string | null;\n\n  constructor(\n    tag: string,\n    datasource: string,\n    unit?: string,\n    color?: string,\n    aggregation: RequestAggregation = 'auto',\n    displayName?: string,\n    interpoled = true,\n    type?: ChartPointType,\n    hidden?: boolean,\n    filter?: string\n  ) {\n    this.tag = tag;\n    this.source = datasource;\n    this.color = color;\n    this.unit = unit;\n    this.aggregation = aggregation;\n    this.type = type ?? ChartPointType.line;\n    if (displayName) this.displayName = displayName;\n    else {\n      const buffer = [`${this.tag}`];\n      if (\n        this.aggregation &&\n        this.aggregation !== 'none' &&\n        this.aggregation !== 'auto'\n      )\n        buffer.push(`(${this.aggregation.functions[0]?.function})`);\n      this.displayName = buffer.join(' ');\n    }\n    this.interpoled = interpoled;\n    this.hidden = hidden ?? false;\n    this.filter = filter ?? null;\n  }\n}\n","export class ExplorerScale {\n  min: number;\n  max: number;\n  stepSize: number;\n  userMin?: number;\n  userMax?: number;\n  userStep?: number;\n  defaultMin?: number;\n  defaultMax?: number;\n  defaultStep?: number;\n  marginPercent = 10;\n\n  constructor(min?: number, max?: number, stepSize?: number) {\n    this.min = min;\n    this.max = max;\n    this.stepSize = stepSize;\n  }\n}\n","export class ExplorerThreshold {\n  public axe: string;\n  public value: number;\n  public color?: string;\n  public label?: string | Array<string>;\n  public dashed?: boolean;\n  public orientation?: string;\n  public position?: string;\n  public yOffset?: number;\n\n  constructor(\n    axe: string,\n    value: number,\n    label?: string | Array<string>,\n    color?: string,\n    dashed?: boolean,\n    orientation?: string,\n    position?: string,\n    yOffset?: number\n  ) {\n    this.axe = axe;\n    this.value = value;\n    this.label = label ? label : '';\n    this.color = color ? color : 'black';\n    this.dashed = dashed ? dashed : false;\n    this.orientation = orientation ? orientation : 'horizontal';\n    this.position = position ? position : 'insideEnd';\n    this.yOffset = yOffset ? yOffset : 0;\n  }\n}\n","import { PaginationModel } from './pagination.model';\n\nexport const TagTypes = ['Raw', 'Calculated'] as const;\nexport type TagType = typeof TagTypes[number];\n\nexport const ResultTypes = ['BOOL', 'INT', 'REAL'] as const;\nexport type ResultType = typeof ResultTypes[number];\n\nexport type Formula = {\n  tag: string;\n  datasource: string;\n  description: string;\n  unit: string;\n  id: string;\n  formula: string;\n  schedule: string;\n  dateOffset: string;\n  sourceValidityInSecond: number;\n  timezone: string;\n  enabled: boolean;\n  resultType: ResultType;\n  accessZones?: string[];\n  storageRule?: string;\n  templateId?: string;\n  error?: FormulaError;\n};\n\nexport type FormulaError = {\n  error: string;\n  message: string;\n  additionalInformations: string[];\n};\n\nexport type FormulasResponse = {\n  data: Formula[];\n  paginationInfo: PaginationModel;\n};\n","export enum FormulasResultCodes {\n  OK = 3_010,\n  InvalidModel = 3_050,\n  EquationEmpty = 3_100,\n  EquationFormat = 3_101,\n  CompileFail = 3_102,\n  EvaluateFail = 3_103,\n  EquationMetricNotFound = 3_104,\n  EquationResultTypeMismatch = 3_105,\n  EquationResultTypeUnsupported = 3_106,\n  FormulaNotFound = 3_110,\n  FormulaUpdateForbidden = 3_111,\n  FormulaDisableFail = 3_112,\n  FormulaEnableFail = 3_113,\n  FormulaAddFail = 3_114,\n  MetricFailAdd = 3_300,\n  MetricsFailGet = 3_301,\n  MetricFailDelete = 3_302,\n  MetricNotFound = 3_303,\n  Unknown = 3_400,\n  Forbidden = 3_403,\n  InternalServerError = 3_500\n}\n\nexport const FormulaCodeToString = {\n  1_050: 'ModelInvalidIndaba', // Invalid request\n  1_300: 'MetricExisting', // Metric already exists\n  1_301: 'MetricFailUpdate', // Metric update failed\n  1_302: 'MetricFailFormula', // Formula metric type mismatch\n  1_303: 'MetricFailUpdateType', // Changing metric type is not allowed\n\n  3_050: 'DatabaseError', // Error from database engine\n\n  3_110: 'FormulaNotFound', // Formula not found\n  3_111: 'FormulaUpdateForbidden', // Updating formula name or datasource is forbidden\n  3_112: 'FormulaDisableFail', // Failed to disable formula\n  3_113: 'FormulaEnableFail', // Failed to enable formula\n  3_114: 'FormulaAddFail', // Failed to add formula\n\n  3_120: 'FileFormatInvalid', // Invalid file format\n  3_121: 'FileInvalid', // File with error \n  3_122: 'IndabaImportFail', //Import failed on Indaba\n\n  3_200: 'EquationEmpty', // Equation is empty\n  3_201: 'EquationFormat', // Equation format isn't correct (format exemple: 'datasource@tag')\n  3_202: 'CompileFail', // Equation compilation has failed\n  3_203: 'EvaluateFail', // Equation evaluation has failed\n  3_204: 'EquationMetricNotFound', // Equation metric was not found\n  3_205: 'EquationResultTypeMismatch', // Mismatch between equation result type and expected result type\n  3_206: 'EquationResultTypeUnsupported', // Unsupported equation result type\n  3_207: 'EquationIndabaFuncInCountinuousForbidden', // Indaba function used in continuous formula\n  3_208: 'EquationDivideByZero', // Division by zero\n  3_209: 'EquationSyntaxError', // Equation syntax error, grammar fail\n  3_210: 'EquationTooManyIndabaFunctions', // Too many indaba functions in equation\n  3_211: 'EquationInvalidDateFormat', // Equation DateFromString invalid string format\n\n  3_300: 'MetricFailAdd', // Failed to add metric to Indaba\n  3_301: 'MetricsFailGet', // Failed to get metrics from Indaba\n  3_302: 'MetricFailDelete', // Failed to delete metric from Indaba\n  3_303: 'MetricNotFound', // Metric not found in Indaba\n\n  3_400: 'Unknown', // Unknown\n  3_403: 'Forbidden', // Forbidden\n  3_500: 'InternalServerError' // Internal server error\n} as const;\n","export class PaginationModel {\n  isComplete: boolean;\n  count: number;\n  paginationKey: string;\n\n  constructor(pagination: any) {\n    this.isComplete = pagination.isComplete;\n    this.count = pagination.count;\n    this.paginationKey = pagination.paginationKey;\n  }\n}\n","export class Tag {\n  public tag_indaba: string;\n  public categorie: string;\n  public sous_categorie: string;\n  public api: string;\n  public libelle: string;\n  public description: string;\n  public unit: string;\n  public equipement: string;\n  public ligne_comptage: string;\n  public code_ouvrage: string;\n  public color: string;\n\n  public territoire_libelle: string;\n\n  constructor(tagName?: string, api?: string, unit?: string) {\n    this.tag_indaba = tagName;\n    this.api = api;\n    this.unit = unit;\n  }\n\n  setData(group: string, tag: any) {\n    this.tag_indaba = tag['tag'];\n    this.api = tag['datasource'];\n    this.categorie = group;\n\n    if (tag['unit'] != null)\n      this.unit =\n        tag['unit']?.charAt(0)?.toUpperCase() + tag['unit']?.slice(1);\n\n    if (tag['description'] !== null && tag['description'] !== undefined)\n      this.libelle =\n        tag['description']?.charAt(0)?.toUpperCase() +\n        tag['description']?.slice(1);\n  }\n}\n","import { PaginationModel } from '../pagination.model';\nimport { Tag } from './tag.model';\n\nexport class IndabaMeasurementsResponseModel {\n  tags: Tag[];\n  pagination: PaginationModel;\n\n  constructor(response: any) {\n    this.tags = response.data.map((x) => new Tag(x.name, x.datasource, x.unit));\n    this.pagination = new PaginationModel(response.paginationInfo);\n  }\n}\n","import { Annotation } from '../annotation.model';\n\nexport class Metric {\n  timestamp: string;\n  value:\n    | number\n    | {\n      avg?: number;\n      max?: number;\n      min?: number;\n      sum?: number;\n      count?: number;\n    };\n  name?: string;\n  annotations?: Array<Annotation>;\n  constructor(\n    timestamp: string,\n    value: number,\n    annotations: Array<Annotation> = []\n  ) {\n    this.value = value;\n    this.timestamp = timestamp;\n    this.annotations = annotations;\n  }\n}\n","import { TagComponentDescription } from \"../report.model\";\n\nexport type IndabaAggregationType = 'min' | 'max' | 'avg' | 'count' | 'sum' | 'median' | 'stdDev' | 'first' | 'last' | 'holtWinters';\nexport type IndabaAggregationFunctions = Array<{\n  function: IndabaAggregationType;\n}>;\nexport type RequestAggregation =\n  | 'none'\n  | 'auto'\n  | {\n    functions: IndabaAggregationFunctions;\n    interval: string;\n    precision?: string;\n    offset?: string;\n    holtWinters?: HoltWinters;\n    timeUnit?: string;\n    unit?: string;\n    multiplierNumber?: number;\n    multiplierMetric?: { datasource: string, name: string };\n  };\n\nexport type IndabaParam = {\n  start: string;\n  end: string;\n  metric: { name: string };\n  timezone: string;\n  aggregation: RequestAggregation;\n  limit: number;\n  showAnnotation: boolean;\n  filter?: string;\n};\n\nexport type IndabaParamIntegral = {\n  start: string;\n  end: string;\n  metric: { name: string };\n  timezone: string;\n  aggregation: {\n    timeUnit?: string;\n    interval: string;\n    multiplierNumber?: number;\n    multiplierMetric?: { datasource: string, name: string };\n    unit?: string;\n  };\n  filter?: string;\n}\n\nexport type IndabaParamHoltWinters = {\n  start: string;\n  end: string;\n  metric: { name: string };\n  timezone: string;\n  aggregation: {\n    function: 'first';\n    holtWinters: HoltWinters;\n    interval: string;\n    offset?: string;\n  };\n  filter?: string;\n}\n\nexport type HoltWinters = {\n  seasonalPattern: number;\n  withFit: boolean;\n  predictedValuesNumber: number;\n};\n\nexport enum InstantQueryDirection {\n  before = 'Before_moment',\n  after = 'After_moment',\n}\n","import { generateDictionnary } from '../../helpers/dictionnary.helper';\nimport { Metric } from './indaba-metric.model';\nimport { PaginationModel } from '../pagination.model';\n\nexport class IndabaResponse {\n  public name: string;\n  public isResponseComplete: boolean;\n  public values: Array<Metric>;\n}\n\nexport interface IndabaResponsePaginated<T> {\n  data: Array<T>;\n  paginationInfo: PaginationModel;\n}\n\nexport interface IndabaResponseWithErrors<T = void> {\n  data: T;\n  statusCode: IndabaStatusCode;\n  message: string;\n  errors?: IndabaError[];\n}\n\nexport interface IndabaError {\n  error: string;\n  message: string;\n}\n\nexport enum IndabaStatusCode {\n  OK = 1_010,\n  DatabaseError = 1_020,\n  DatabaseInvalid = 1_021,\n  DatabaseTimestamp = 1_022,\n  ModelInvalid = 1_050,\n  MetricExisting = 1_300,\n  MetricFailUpdate = 1_301,\n  MetricFailFormula = 1_302,\n  MetricFailUpdateType = 1_303,\n  DataNameExisting = 1_305,\n  MetricFailFormulaEnabled = 1_306,\n  MetricFailFormulaTemplate = 1_307,\n  AccessZoneDefault = 1_310,\n  UserExisting = 1_350,\n  FileFormatInvalid = 1_360,\n  Unknown = 1_400,\n  AuthorizationInvalid = 1_403,\n  AuthorizationInvalidAccessZone = 1_404,\n  InternalServerError = 1_500,\n  Warning = 1_501,\n}\n\nconst errorPrefix = 'Error.Indaba.';\n\nexport const IndabaErrorDictionnary = generateDictionnary(\n  IndabaStatusCode,\n  errorPrefix\n);\n\nexport const IndabaCodeToString = {\n  1020: 'DatabaseError', // Error from database engine\n  1021: 'DatabaseInvalid', // Invalid datasource name\n  1022: 'DatabaseTimestamp', // Out of range timestamp\n  1050: 'ModelInvalid', // Invalid request\n  1300: 'MetricExisting', // Metric already exist\n  1301: 'MetricFailUpdate', // Metric update failed\n  1302: 'MetricFailFormula', // Formula metric type mismatch\n  1303: 'MetricFailUpdateType', // Changing metric type is not allowed\n  1305: 'DataNameExisting', // Name already exists\n  1306: 'MetricFailFormulaEnabled', // Formula metric is activated\n  1307: 'MetricFailFormulaTemplate', // Formula metric is a template\n  1310: 'AccessZoneDefault', // Default access zone cannot be created/updated/deleted\n  1350: 'UserExisting', // User already exist in access zone\n  1360: 'FileFormatInvalid', // Invalid file format\n  1400: 'Unknown', // Unidentified error\n  1403: 'AuthorizationInvalid', // Invalid Authorization,\n  1404: 'AuthorizationInvalidAccessZone', // Invalid Authorization, partial write not allowed\n  1500: 'InternalServerError', // Internal server error\n  1501: 'Warning', // Warning\n  1502: 'ContentEncodingDecompress', // Unable to decompress payload\n  1503: 'ContentEncodingInvalid' // Invalid header content encoding\n} as const;\n","import moment from 'moment';\nimport { Metric } from './indaba-metric.model';\n\nexport class TimeSeriesRange {\n  database: string;\n  stream: string;\n  data: Array<Metric>;\n  complete: boolean;\n\n  constructor(\n    database: string,\n    stream: string,\n    data: Array<any>,\n    complete?: boolean\n  ) {\n    this.database = database;\n    this.stream = stream;\n    // this.data = this.formatMetrics(data);\n    this.data = data;\n    this.complete = complete;\n  }\n\n  private formatMetrics(data: Array<any>): Array<Metric> {\n    let currentValidValue = null;\n    const firstValidPoint = data?.filter((d) => d.value.avg)[0];\n    return data?.map((d: any) => {\n      if (d.value.avg || d.value.avg === 0) {\n        currentValidValue = d;\n        return new Metric(d.timestamp, d.value.avg);\n      } else if (\n        !currentValidValue &&\n        firstValidPoint &&\n        moment(firstValidPoint.timestamp).add(20, 'minutes') >\n        moment(d.timestamp)\n      ) {\n        return new Metric(d.timestamp, firstValidPoint.value.avg);\n      } else if (\n        currentValidValue &&\n        moment(currentValidValue.timestamp).add(20, 'minutes') >\n        moment(d.timestamp)\n      ) {\n        return new Metric(d.timestamp, currentValidValue.value.avg);\n      } else {\n        return new Metric(d.timestamp, null);\n      }\n    });\n  }\n}\n","import { Metric } from './indaba-metric.model';\n\n\nexport class TypeMetric {\n  name: string;\n  values: Array<Metric>;\n}\n","export type Format = 'Text' | 'Number' | 'Boolean';\nexport const FormatAsArray: readonly Format[] = [\n  'Text',\n  'Number',\n  'Boolean'\n];\n\nexport type FormatTyped = string | number | boolean;\n","export type IndabaLabelType = 'Name' | 'Description' | 'Custom';\n\nexport const IndabaLabelTypeAsArray: readonly IndabaLabelType[] = [\n  'Name',\n  'Description',\n  'Custom'\n];\n","import { IndabaLabelType } from './indaba-label-type';\n\nexport class IndametaItemOptions {\n  indabaId: string;\n  indabaLabel: IndabaLabelType;\n}\n","import { FormatTyped } from './format';\nimport { IndametaItemMetric } from './indameta-item-metric';\nimport { IndametaItemOptions } from './indameta-item-options';\nimport { IndametaItemProperties } from './indameta-item-properties';\n\nexport interface IndametaItem {\n  id: string;\n  label: string;\n  dataStructureId: string;\n  typeId: string;\n  parentId: string | null;\n  hasError: boolean;\n  properties: IndametaItemProperties;\n  options: IndametaItemOptions;\n  metric: IndametaItemMetric;\n  parents: Record<string, Record<string, FormatTyped>[]>;\n  metricTemplateId?: string;\n  metricTemplateVersion?: number;\n  metricTemplateName?: string;\n  metricTemplate?: string;\n  formula?: string;\n  formulaTemplateName?: string;\n  formulaTemplateVersion?: string;\n  formulaTemplateId?: string;\n  hasTemplateCreated?: boolean;\n  isLockedToTemplate?: boolean;\n}\n\nexport function UpdateIndaMetaItem(actual: IndametaItem, updated: IndametaItem): void {\n  actual.label = updated.label;\n  actual.hasError = updated.hasError;\n  actual.properties = updated.properties;\n  actual.metric = updated.metric;\n  actual.options = updated.options;\n  actual.isLockedToTemplate = updated.isLockedToTemplate;\n  actual.metricTemplateVersion = updated.metricTemplateVersion;\n}\n","import { generateDictionnary } from '../../helpers/dictionnary.helper';\n\nexport enum IndametaV2StatusCodes {\n  OK = 2_010,\n  ModelInvalid = 2_050,\n  DataStructureInvalid = 2_100,\n  DataStructureNameExist = 2_101,\n  TypeInvalid = 2_120,\n  TypeNameExist = 2_121,\n  TypeUsed = 2_122,\n  ItemInvalid = 2_140,\n  ItemIdExist = 2_141,\n  ItemMetricNotFound = 2_143,\n  ItemIdNotFound = 2_144,\n  ItemLabelInvalid = 2_145,\n  SearchableInvalid = 2_200,\n  SearchablePropertyInvalid = 2_201,\n  ExpressionInvalid = 2_300,\n  Unknown = 2_400,\n  InternalServerError = 2_500,\n  Warning = 2_501,\n}\n\nconst errorPrefix = 'Error.IndametaV2.';\nexport const IndametaV2ErrorDictionnary = generateDictionnary(\n  IndametaV2StatusCodes,\n  errorPrefix\n);\n\nexport const IndametaV2CodeToString = {\n  2050: 'ModelInvalid', // Invalid Model\n  2100: 'DataStructureInvalid', // Invalid data structure\n  2101: 'DataStructureNameExist', // Existing data structure name\n  2102: 'DataStructureNotFound', // Data structure not found\n\n  2120: 'TypeInvalid', // Invalid type\n  2121: 'TypeNameExist', // Existing type name\n  2122: 'TypeUsed', // Type is used\n  2123: 'TypeNotFound', // Type not found\n\n  2140: 'ItemInvalid', // Invalid\n  2141: 'ItemIdExist', // Existing item id\n\n  2143: 'ItemMetricNotFound', // Metric not found\n  2144: 'ItemIdNotFound', // Item id not found\n  2145: 'ItemLabelInvalid', // Invalid item label\n\n  2200: 'SearchableInvalid', // Invalid Searchable\n  2201: 'SearchablePropertyInvalid', // Invalid searchable property\n\n  2250: 'TemplateNameAlreadyExists ', // Invalid template name : already in use\n  2251: 'TemplatePropertyNotFound', // Property not found\n  2252: 'TemplateInvalid', // Invalid template\n  2253: 'TemplateNoProperty', // No property in template\n\n  2260: 'TemplateFormulasValidationFailed', // Formulas validation failed\n  2263: 'TemplateMetricNotFound', // Template metric not found\n\n  2300: 'ExpressionInvalid', // Invalid expression\n  2400: 'Unknown', // Unknown\n  2500: 'InternalServerError', // Internal server error\n  2501: 'Warning' // Warning\n} as const;\n","import { PaginationModel } from '../pagination.model';\n\nexport class IndametaDefaultResponse {\n  statusCode: number;\n  message: string;\n  errors: any;\n}\n\nexport class IndametaBaseResponse<T> {\n  resultCode: number;\n  message: string;\n  data: T;\n}\n\nexport class IndametaResponse {\n  resultCode: number;\n  message: string;\n  data: Array<string>;\n}\n\nexport class IndametaListResponse<T> {\n  resultCode: number;\n  message: string;\n  data: Array<T>;\n  info: any;\n}\n\nexport interface IndametaPaginatedResponse<T> extends IndametaListResponse<T> {\n  paginationInfo: PaginationModelWithTotal;\n}\n\nexport interface IndametaImportResponse extends IndametaBaseResponse<void> {\n  errors: IndametaError[];\n}\n\nexport interface IndametaError {\n  error: string;\n  message: string;\n}\n\nexport interface PaginationModelWithTotal extends PaginationModel {\n  total: number\n}\n","export enum RecoveryTaskStatusType {\n  WaitingStart = \"WaitingStart\",\n  InProgress = \"InProgress\",\n  Pending = \"Pending\",\n  Finished = \"Finished\",\n  Fail = \"Fail\"\n}\n\nexport class RecoveryTask {\n  id?: string;\n  formulaId: string;\n  dateCreate?: Date;\n  dateStart: Date;\n  dateEnd: Date;\n  dateRecovery?: Date;\n  status?: RecoveryTaskStatusType;\n}\n","export interface StoragePrecision {\n  id: string;\n  name: string;\n  validityInSecond: number;\n  deadband: number;\n  decimalPrecision: number;\n  isDefault: boolean;\n}\n\nexport enum AccessType {\n  Read = 'Read',\n  Write = 'Write',\n  ReadWrite = 'ReadWrite',\n}\n\nconst baseKey = 'AccessType.';\nexport const AccessTypeDictionnary = {\n  [AccessType.Read]: `${baseKey}read`,\n  [AccessType.Write]: `${baseKey}write`,\n  [AccessType.ReadWrite]: `${baseKey}read_write`,\n};\n\nexport interface AccessZone {\n  id: string;\n  name: string;\n  groups: Array<string>;\n  accessType: AccessType;\n  isDefault: boolean;\n}\nexport interface ReferentialTagManage {\n  id: string;\n  name: string;\n  destination: string;\n  description: string;\n  unit: string;\n  datasource: string;\n  type: string;\n  storageRule: StoragePrecision;\n  accessZones: Array<AccessZone>;\n}\n\nexport interface PaginationResponse {\n  count: number;\n  canNextPagination: boolean;\n  nextPaginationSort: string;\n}\n\nexport interface TagManagementListFilters {\n  tag: string;\n  datasource: string;\n  accessZone?: AccessZone;\n}\n","import { PaginationModel } from \"./pagination.model\";\nimport { swapFn } from \"../helpers/swapStatusCodeHelpers\";\n\nexport type UserScriptBaseResponse<T = void> = {\n  resultCode: keyof typeof UserScriptStatusCodeToString;\n  message: string;\n  data: T;\n}\n\nexport type UserScriptListResponse<T> = {\n  resultCode: keyof typeof UserScriptStatusCodeToString;\n  message: string;\n  data: T[];\n  paginationInfo: PaginationModel;\n}\n\nexport type UserScriptError = {\n  error: string;\n  message: string;\n}\n\nexport type UserScriptErrorResponse = UserScriptBaseResponse & {\n  errors: UserScriptError[]\n}\n\nexport const UserScriptStatusCodeToString = {\n  4_010: 'OK',\n  4_050: 'ModelInvalid',\n  4_060: 'UserScriptNotFound',\n  4_061: 'UserScriptNameExists',\n  4_100: 'ScriptFileInvalid',\n  4_101: 'ScriptFileFormat',\n  4_102: 'ScriptFileSize',\n  4_103: 'ScriptFileCompilation',\n  4_400: 'Unknown',\n  4_403: 'Forbidden',\n  4_500: 'InternalServerError',\n  4_501: 'Warning'\n} as const;\n\nexport const UserScriptStringToStatusCode = swapFn(UserScriptStatusCodeToString);\n","import { HttpContext, HttpContextToken } from '@angular/common/http';\n\nexport class APIUtils {\n  static isByPassed = new HttpContextToken(() => false);\n  static setByPassed = (isByPassed: boolean) => ({\n    context: new HttpContext().set(APIUtils.isByPassed, isByPassed),\n  });\n}\n","import { DateTime } from 'luxon';\n\nexport const CalendarTimeRangeTypes = ['CurrentHour', 'CurrentDay', 'CurrentWeek', 'CurrentMonth', 'CurrentYear', 'Custom'] as const;\nexport type CalendarTimeRangeType = typeof CalendarTimeRangeTypes[number];\n\nexport const CalendarTimeRangeTypesTranslation: Record<CalendarTimeRangeType, string> = {\n  CurrentHour: `TimeRangeSelectorComponent.lastHour`,\n  CurrentDay: `TimeRangeSelectorComponent.lastDay`,\n  CurrentWeek: `TimeRangeSelectorComponent.lastWeek`,\n  CurrentMonth: `TimeRangeSelectorComponent.lastMonth`,\n  CurrentYear: `TimeRangeSelectorComponent.lastYear`,\n  Custom: `TimeRangeSelectorComponent.interval`\n} as const;\n\nexport const getCalendarBeginningDate = (type: CalendarTimeRangeType, date?: DateTime): Date => {\n  const d = date ? date : DateTime.now();\n  switch (type) {\n    case 'CurrentHour':\n      return d.startOf('hour').toJSDate();\n    case 'CurrentDay':\n      return d.startOf('day').toJSDate();\n    case 'CurrentWeek':\n      return d.startOf('week').toJSDate();\n    case 'CurrentMonth':\n      return d.startOf('month').toJSDate();\n    case 'CurrentYear':\n      return d.startOf('year').toJSDate();\n    default:\n      return d.startOf('day').toJSDate();\n  }\n};\n\nexport const getCalendarEndingDate = (type: CalendarTimeRangeType, date?: DateTime): Date => {\n  const d = date ? date : DateTime.now();\n  switch (type) {\n    case 'CurrentHour':\n      return d.endOf('hour').toJSDate();\n    case 'CurrentDay':\n      return d.endOf('day').toJSDate();\n    case 'CurrentWeek':\n      return d.endOf('week').toJSDate();\n    case 'CurrentMonth':\n      return d.endOf('month').toJSDate();\n    case 'CurrentYear':\n      return d.endOf('year').toJSDate();\n    default:\n      return d.endOf('day').toJSDate();\n  }\n};\n\nexport interface CalendarTimeRange {\n  presets: CalendarTimeRangeType;\n  startDate: Date;\n  endDate: Date;\n}\n","import { DateTime } from 'luxon';\n\nexport const RelativeTimeRangeTypes = ['lastHour', 'lastDay', 'lastWeek', 'lastMonth', 'lastYear', 'interval'] as const;\nexport type RelativeTimeRangeType = typeof RelativeTimeRangeTypes[number];\n\nconst keyBase = 'ChartTimeWindowType.';\n\nexport const RelativeTimeTypesTranslate: Record<RelativeTimeRangeType, string> = {\n  'lastHour': `${keyBase}lastHour`,\n  'lastDay': `${keyBase}lastDay`,\n  'lastWeek': `${keyBase}lastWeek`,\n  'lastMonth': `${keyBase}lastMonth`,\n  'lastYear': `${keyBase}lastYear`,\n  'interval': `${keyBase}interval`\n} as const;\n\nexport const getRelativeBeginningDate = (type: RelativeTimeRangeType) => {\n  switch (type) {\n    case 'lastHour':\n      return DateTime.now().minus({ hours: 1 }).toJSDate();\n    case 'lastDay':\n      return DateTime.now().minus({ days: 1 }).toJSDate();\n    case 'lastWeek':\n      return DateTime.now().minus({ weeks: 1 }).toJSDate();\n    case 'lastMonth':\n      return DateTime.now().minus({ months: 1 }).toJSDate();\n    case 'lastYear':\n      return DateTime.now().minus({ years: 1 }).toJSDate();\n    default:\n      return DateTime.now().minus({ hours: 1 }).toJSDate();\n  }\n};\n\nexport interface RelativeTimeRange {\n  presets: RelativeTimeRangeType;\n  startDate?: Date;\n  endDate?: Date;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ApiUrlService {\n  static IndabaBaseUrl = '';\n  static IndametaBaseUrl = '';\n  static IndametaV2BaseUrl = '';\n  static IndaPortalBaseUrl = '';\n  static IndaFormulaBaseUrl = '';\n  static IndaAlertingBaseUrl = '';\n  static IndaUserScriptsUrl = '';\n}\n","import { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ApiUrlService } from './services/api-url.service';\n\ninterface APIConfig {\n  IndabaBaseUrl: string;\n  IndametaBaseUrl: string;\n  IndametaV2BaseUrl: string;\n  IndaPortalBaseUrl: string;\n  IndaFormulaBaseUrl: string;\n  IndaAlertingBaseUrl: string;\n  IndaUserScriptsBaseUrl: string;\n}\n\n@NgModule({\n  declarations: [],\n  imports: [\n    TranslateModule,\n    MatButtonModule,\n    CdkScrollableModule,\n    MatSelectModule,\n    MatTooltipModule,\n  ],\n  exports: [],\n})\nexport class NgxIndasuiteApiServicesModule {\n\n  static forRoot(\n    config: APIConfig\n  ): ModuleWithProviders<NgxIndasuiteApiServicesModule> {\n    ApiUrlService.IndabaBaseUrl = config.IndabaBaseUrl;\n    ApiUrlService.IndametaBaseUrl = config.IndametaBaseUrl;\n    ApiUrlService.IndametaV2BaseUrl = config.IndametaV2BaseUrl;\n    ApiUrlService.IndaPortalBaseUrl = config.IndaPortalBaseUrl;\n    ApiUrlService.IndaFormulaBaseUrl = config.IndaFormulaBaseUrl;\n    ApiUrlService.IndaAlertingBaseUrl = config.IndaAlertingBaseUrl;\n    ApiUrlService.IndaUserScriptsUrl = config.IndaUserScriptsBaseUrl;\n\n    return {\n      ngModule: NgxIndasuiteApiServicesModule,\n      providers: [],\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ApiUrlService } from './api-url.service';\nimport { HttpClient } from '@angular/common/http';\nimport { PaginationModel } from '../models/pagination.model';\nimport { AccessType, AccessZone } from '../models/referentials.model';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { IndabaResponsePaginated, IndabaResponseWithErrors } from '../models/indaba-models';\nimport { APIUtils } from '../models/utils.models';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AccessZonesService {\n\n  private readonly baseUrl = `${ApiUrlService.IndabaBaseUrl}access-zones/`;\n\n  constructor(private http: HttpClient) { }\n\n  public getAccessZones(\n    limit: number,\n    paginationInfo?: PaginationModel,\n    name: string = '',\n    onlyDefault: AccessType = null,\n    includeUsers = true\n  ): Observable<AccessZone[]> {\n    return this.http.get<IndabaResponsePaginated<AccessZone>>(\n      `${this.baseUrl}`,\n      {\n        params: {\n          limit,\n          onlyDefault,\n          includeUsers,\n          name,\n          paginationKey: paginationInfo?.paginationKey\n        }\n      }\n    ).pipe(map(resp => resp.data));\n  }\n\n  public addAccessZone(accessZone: AccessZone): Observable<AccessZone> {\n    return this.http.post<IndabaResponseWithErrors<AccessZone>>(this.baseUrl, accessZone)\n      .pipe(map(resp => resp.data));\n  }\n\n  public isUserInAccessZone(id: string): Observable<boolean> {\n    return this.http.head(\n      `${this.baseUrl}${id}/users`,\n      APIUtils.setByPassed(true)\n    )\n      .pipe(\n        switchMap(() => of(true)),\n        catchError(() => of(false))\n      );\n  }\n\n  public patchMetricAccessZones(metricId: string, accessZones: string[], addAccessZones: boolean = false): Observable<void> {\n    return this.http.patch(`${ApiUrlService.IndabaBaseUrl}metrics/${metricId}`, {\n      accessZonesId: accessZones,\n      addAccessZones\n    })\n      .pipe(map(() => null));\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiInfo } from '../models/api-info.model';\nimport { APIUtils } from '../models/utils.models';\nimport { ApiUrlService } from './api-url.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ApiInfoService {\n  constructor(private httpClient: HttpClient) { }\n\n  private readonly infoEndpoint = 'informations';\n\n  getIndabaInfo(errorModal: boolean = false): Observable<ApiInfo> {\n    return this.httpClient.get<ApiInfo>(\n      `${ApiUrlService.IndabaBaseUrl}${this.infoEndpoint}`,\n      APIUtils.setByPassed(errorModal)\n    );\n  }\n\n  getFormulaInfo(errorModal: boolean = false): Observable<ApiInfo> {\n    return this.httpClient.get<ApiInfo>(\n      `${ApiUrlService.IndaFormulaBaseUrl}${this.infoEndpoint}`,\n      APIUtils.setByPassed(errorModal)\n    );\n  }\n\n  getIndametaInfo(errorModal: boolean = false): Observable<ApiInfo> {\n    return this.httpClient.get<ApiInfo>(\n      `${ApiUrlService.IndametaBaseUrl}${this.infoEndpoint}`,\n      APIUtils.setByPassed(errorModal)\n    );\n  }\n\n  getAdminInfo(errorModal: boolean = false): Observable<ApiInfo> {\n    return this.httpClient.get<ApiInfo>(\n      `${ApiUrlService.IndaPortalBaseUrl}${this.infoEndpoint}`,\n      APIUtils.setByPassed(errorModal)\n    );\n  }\n\n  getAlertingInfo(errorModal: boolean = false): Observable<ApiInfo> {\n    return this.httpClient.get<ApiInfo>(\n      `${ApiUrlService.IndaAlertingBaseUrl}${this.infoEndpoint}`,\n      APIUtils.setByPassed(errorModal)\n    );\n  }\n}\n","import {\n  HttpClient,\n  HttpErrorResponse,\n  HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { Formula } from '../models/formula.model';\nimport { PaginationModel } from '../models/pagination.model';\nimport {\n  AccessZone,\n  ReferentialTagManage,\n  StoragePrecision,\n} from '../models/referentials.model';\nimport { APIUtils } from '../models/utils.models';\nimport { ApiUrlService } from './api-url.service';\nimport { IndabaMeasurementsResponseModel, IndabaResponsePaginated, IndabaResponseWithErrors } from '../models/indaba-models';\n\ninterface DatabaseListResponse {\n  data: Array<string>;\n}\n\nexport interface MeasurmentsFilterParmeters {\n  timezone?: string;\n  tag?: string;\n  paginationHash?: string;\n  limit?: number;\n  paginationSort?: string;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DatabaseService {\n  constructor(private httpClient: HttpClient) { }\n\n  private readonly baseUrl = ApiUrlService.IndabaBaseUrl;\n\n  private refreshMetrics$ = new BehaviorSubject<void>(null);\n\n  getDatabaseList$(): Observable<Array<string>> {\n    return this.httpClient\n      .get<any>(`${this.baseUrl}databases`)\n      .pipe(map((response: DatabaseListResponse) => response.data));\n  }\n\n  private getRawMeasurements(\n    database: string,\n    searchTag: string,\n    pageSize: number,\n    accessZone?: AccessZone,\n    nextPage?: PaginationModel\n  ): Observable<any> {\n    let params = new HttpParams()\n      .append('name', searchTag)\n      .append('datasource', database)\n      .append('limit', pageSize.toString(10));\n    if (nextPage) {\n      params = params.append('paginationKey', nextPage.paginationKey);\n    }\n    if (accessZone) {\n      params = params.append('accessZoneId', accessZone.id);\n    }\n    return this.httpClient.get<any>(`${this.baseUrl}metrics`, { params });\n  }\n\n  public getMeasurements(\n    database: string,\n    searchTag: string,\n    pageSize: number,\n    nextPage?: PaginationModel\n  ): Observable<IndabaMeasurementsResponseModel> {\n    return this.getRawMeasurements(\n      database,\n      searchTag,\n      pageSize,\n      null,\n      nextPage\n    ).pipe(map((value: any) => new IndabaMeasurementsResponseModel(value)));\n  }\n\n  public getReferentialTagManages(\n    database: string,\n    searchTag: string,\n    pageSize: number,\n    accessZone?: AccessZone,\n    nextPage?: PaginationModel\n  ): Observable<IndabaResponsePaginated<ReferentialTagManage>> {\n    return this.getRawMeasurements(\n      database,\n      searchTag,\n      pageSize,\n      accessZone,\n      nextPage\n    );\n  }\n\n  public getFormulaById(metricId: string): Observable<Formula> {\n    return this.httpClient\n      .get<any>(`${this.baseUrl}metrics/${metricId}`)\n      .pipe(map((value: any) => {\n        const data = value.data;\n        const form = value.data.formula;\n        const formula: Formula = {\n          tag: data.name,\n          datasource: data.datasource,\n          description: data.description,\n          unit: data.unit,\n          id: data.id,\n          timezone: form.timezone,\n          formula: form.formula,\n          schedule: form.schedule,\n          dateOffset: form.dateOffset,\n          sourceValidityInSecond: form.sourceValidityInSecond,\n          enabled: form.enabled,\n          resultType: form.resultType,\n          templateId: form.templateId\n        };\n        if (data.accessZones && Array.isArray(data.accessZones))\n          formula.accessZones = data.accessZones.map((el) => el?.id);\n        if (data.storageRule)\n          formula.storageRule = data.storageRule.id;\n        return formula;\n      }));\n  }\n\n  public setDataStoragePrecision(\n    tag: ReferentialTagManage,\n    dataStoragePrecision: StoragePrecision\n  ) {\n    return this.httpClient.put(\n      `${this.baseUrl}databases/measurement/data-storage-precision`,\n      {\n        name: tag.name,\n        destination: tag.destination,\n        dataStoragePrecisionId: dataStoragePrecision.id,\n      }\n    );\n  }\n\n  public setAccessZone(\n    tag: ReferentialTagManage,\n    accessZones: Array<AccessZone>\n  ) {\n    return this.httpClient.put(\n      `${this.baseUrl}databases/measurement/access-zone`,\n      {\n        name: tag.name,\n        destination: tag.destination,\n        accessZones: accessZones.map((el) => el.id),\n      }\n    );\n  }\n\n  public adddMeasurement(m: ReferentialTagManage) {\n    return this.httpClient.post(`${this.baseUrl}metrics`, {\n      ...m,\n      accessZones: m.accessZones.map((el) => el.id),\n      storageRuleId: m.storageRule?.id,\n      datasource: m.destination\n    }\n    )\n  }\n\n  public updateMeasurement(m: ReferentialTagManage) {\n    return this.httpClient.put(`${this.baseUrl}metrics/${m.id}`, {\n      ...m,\n      accessZones: m.accessZones.map((el) => el.id),\n      storageRuleId: m.storageRule?.id,\n    }\n    );\n  }\n\n  public renameMeasurement(m: ReferentialTagManage, newName: string) {\n    return this.httpClient.put(`${this.baseUrl}metrics/${m.id}/rename`, {\n      newName: newName,\n    }\n    );\n  }\n\n  public deleteMeasurement(m: ReferentialTagManage) {\n    return this.httpClient.delete(`${this.baseUrl}metrics/${m.id}`);\n  }\n\n  public exportMeasurements(datasource: string) {\n    return this.httpClient.get(`${this.baseUrl}metrics/export/${datasource}`, {\n      responseType: 'blob'\n    });\n  }\n\n  public importMeasurements(\n    datasource: string,\n    file: File\n  ): Observable<IndabaResponseWithErrors> {\n    const formdata: FormData = new FormData();\n    formdata.append('file', file);\n\n    return this.httpClient\n      .post<IndabaResponseWithErrors>(\n        `${this.baseUrl}metrics/import/${datasource}`,\n        formdata\n      )\n      .pipe(\n        catchError((err: HttpErrorResponse) =>\n          of(err.error as IndabaResponseWithErrors)\n        ),\n        tap(() => this.refreshMetrics$.next())\n      );\n  }\n\n  public metricsToRefresh(): Observable<void> {\n    return this.refreshMetrics$.asObservable();\n  }\n\n  public addAnnotationToTag(\n    name: string,\n    datasource: string,\n    timestamp: Date,\n    annotation: string,\n    skipErrors = false\n  ) {\n    return this.httpClient.post(\n      `${this.baseUrl}databases/${datasource}/annotations`,\n      {\n        name,\n        timestamp: timestamp.toISOString(),\n        annotation,\n      },\n      APIUtils.setByPassed(skipErrors)\n    );\n  }\n\n  public deleteAnnotation(\n    name: string,\n    datasource: string,\n    id: string,\n    timestamp: Date\n  ) {\n    return this.httpClient.delete(\n      `${this.baseUrl}databases/${datasource}/annotations/${id}`,\n      {\n        body: {\n          timestamp,\n          name,\n        }\n      }\n    );\n  }\n\n  public editAnnotation(\n    name: string,\n    datasource: string,\n    timestamp: Date,\n    id: string,\n    annotation: string\n  ) {\n    return this.httpClient.put(\n      `${this.baseUrl}databases/${datasource}/annotations/${id}`,\n      {\n        name,\n        timestamp: timestamp.toISOString(),\n        annotation\n      }\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ExplorerAxe } from '../models/explorer-axe.model';\nimport { ExplorerGraph } from '../models/explorer-graph.model';\nimport { RelativeTimeRangeType } from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ExplorerService {\n  static formatUrlParams(\n    graphs: Array<ExplorerGraph>,\n    axes: Array<ExplorerAxe>,\n    minDate: Date,\n    maxDate: Date,\n    timeSource: RelativeTimeRangeType,\n    showFilter,\n    showAnnotations = false,\n    autoRefreshInterval?: number\n  ) {\n    const urlTags = [...graphs];\n\n    const urlAxes = axes.map(\n      (g) => new ExplorerAxe(g.axeId, g.color, g.scale, g.thresholds)\n    );\n\n    return {\n      minDate: minDate?.toISOString(),\n      maxDate: maxDate?.toISOString(),\n      timeSource,\n      graphs: urlTags.length > 0 ? urlTags : [],\n      axes: urlAxes.length > 0 ? urlAxes : [],\n      showFilter,\n      showAnnotations,\n      autoRefreshInterval\n    };\n  }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, switchMap, map } from 'rxjs';\nimport { APIUtils, Formula, FormulasResponse, FormulasResultCodes, IndabaResponsePaginated, RecoveryTask, ResultType } from '../models';\nimport { ApiUrlService } from './api-url.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FormulasService {\n  private readonly formulaUrl = `${ApiUrlService.IndaFormulaBaseUrl}formulas/`;\n  private readonly recoveryUrl = `${ApiUrlService.IndaFormulaBaseUrl}recovery/`;\n\n  constructor(private http: HttpClient) { }\n\n  public getFormulas(\n    limit: number = 50,\n    paginationKey?: string,\n    filter?: string,\n    templateId?: string,\n    onlyErrors = false\n  ): Observable<FormulasResponse> {\n    let params = new HttpParams()\n      .append('limit', limit)\n      .append('onlyErrors', onlyErrors);\n    if (paginationKey)\n      params = params.append('paginationKey', paginationKey);\n    if (filter)\n      params = params.append('filter', filter);\n    if (templateId)\n      params = params.append('formulaTemplateId', templateId);\n    return this.http.get<FormulasResponse>(this.formulaUrl, { params });\n  }\n\n  public addFormula(formula: Formula) {\n    return this.http.post(this.formulaUrl, formula);\n  }\n\n  public updateFormula(id: string, formula: Formula) {\n    return this.http.put(`${this.formulaUrl}${id}`, formula);\n  }\n\n  public validateFormula(formula: string, resultType: ResultType, schedule: string) {\n    const validate = { formula, resultType, hasCron: !!schedule };\n    return this.http\n      .post<any>(\n        `${this.formulaUrl}validate`,\n        validate,\n        APIUtils.setByPassed(true)\n      )\n      .pipe(\n        map((r) => {\n          return r.resultCode === FormulasResultCodes.OK;\n        })\n      );\n  }\n\n  public toggleEnableFormula(id: string, enabled: boolean) {\n    const patch = { enabled: enabled };\n    return this.http.patch<any>(`${this.formulaUrl}${id}`, patch);\n  }\n\n  public deleteFormula(id: string) {\n    return this.http.delete(`${this.formulaUrl}${id}`);\n  }\n\n  public addRecoveryTask(task: RecoveryTask) {\n    return this.http.post(this.recoveryUrl, task, APIUtils.setByPassed(true));\n  }\n\n  public getRecoveryTasks(\n    limit: number,\n    paginationKey?: string,\n    name: string = '',\n    datasource: string = ''\n  ): Observable<IndabaResponsePaginated<RecoveryTask>> {\n    let params = new HttpParams();\n    if (name)\n      params = params.append('name', name);\n    if (datasource)\n      params = params.append('datasource', datasource);\n    if (paginationKey)\n      params = params.append('paginationKey', paginationKey);\n    if (limit > 0)\n      params = params.append('limit', limit);\n\n    return this.http.get<IndabaResponsePaginated<RecoveryTask>>(this.recoveryUrl,\n      {\n        params\n      });\n  }\n\n  public refreshFormulas() {\n    return this.http.post(`${ApiUrlService.IndaFormulaBaseUrl}reload`, {});\n  }\n\n  private _timezones$: BehaviorSubject<string[]> = new BehaviorSubject<string[]>(null);\n  public getTimezones(): Observable<string[]> {\n    if (this._timezones$.value)\n      return this._timezones$.asObservable();\n    return this.http.get<string[]>(`${ApiUrlService.IndaFormulaBaseUrl}informations/timezones`)\n      .pipe(\n        switchMap(timezones => {\n          this._timezones$.next(timezones);\n          return this._timezones$.asObservable();\n        })\n      );\n  }\n\n  public exportFormulas(datasource: string): Observable<Blob> {\n    return this.http.get(`${this.formulaUrl}export/${datasource}`, { responseType: 'blob' });\n  }\n\n  public importFormulas(file: File, database: string) {\n    const formData: FormData = new FormData();\n    formData.append('file', file);\n    return this.http.post(`${this.formulaUrl}import/${database}`, formData);\n  }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { from, Observable, switchMap } from 'rxjs';\nimport { Group, GroupAdd, PatchGroupUsers } from '../models/group.model';\nimport { PaginationModel } from '../models/pagination.model';\nimport { APIUtils } from '../models/utils.models';\nimport { ApiUrlService } from './api-url.service';\nimport { AdminBaseResponse, AdminErrorResponse, AdminListResponse } from '../models/admin.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class GroupService {\n\n  private readonly baseUrl = `${ApiUrlService.IndaPortalBaseUrl}ums/groups`;\n\n  constructor(private http: HttpClient) { }\n\n  public getGroups(options?: {\n    limit?: number,\n    filter?: string,\n    page?: PaginationModel,\n    includeUsers?: boolean\n  }): Observable<AdminListResponse<Group>> {\n    let params = new HttpParams()\n      .set('limit', options?.limit ?? 10)\n    if (options?.filter)\n      params = params.set('filter', options.filter);\n    if (options?.page?.paginationKey)\n      params = params.set('paginationKey', options.page.paginationKey);\n    // explicit false because default is true\n    if (options?.includeUsers === false)\n      params = params.set('includeUsers', false);\n\n    return this.http.get<AdminListResponse<Group>>(this.baseUrl, { params });\n  }\n\n  public exportGroup(group: Group): Observable<Blob> {\n    const url = `${this.baseUrl}/${group.id}/export`;\n    return this.http.get(url, { responseType: 'blob' });\n  }\n\n  public addGroup(group: GroupAdd): Observable<AdminBaseResponse<Group> | AdminErrorResponse> {\n    return this.http.post<AdminBaseResponse<Group>>(\n      this.baseUrl,\n      group,\n      APIUtils.setByPassed(true)\n    );\n  }\n\n  public importGroup(group: Group, file: File): Observable<AdminBaseResponse | AdminErrorResponse> {\n    const formData = new FormData();\n    formData.append(\"file\", file);\n    return this.http.post<AdminBaseResponse | AdminErrorResponse>(`${this.baseUrl}/${group.id}/import`, formData);\n  }\n\n  public updateGroup(group: Group): Observable<AdminBaseResponse<Group>> {\n    const url = `${this.baseUrl}/${group.id}`;\n    return this.http.put<AdminBaseResponse<Group>>(url, group);\n  }\n\n  public patchGroupUsers(group: Group, users: PatchGroupUsers): Observable<AdminBaseResponse<Group> | AdminErrorResponse> {\n    const url = `${this.baseUrl}/${group.id}`;\n    return this.http.patch<AdminBaseResponse<Group> | AdminErrorResponse>(url, users);\n  }\n\n  public deleteGroup(group: Group): Observable<AdminBaseResponse | AdminErrorResponse> {\n    const url = `${this.baseUrl}/${group.id}`;\n    return this.http.delete<AdminBaseResponse | AdminErrorResponse>(url);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport {\n  IndabaParam,\n  InstantQueryDirection,\n  IndabaResponse,\n  Metric,\n  IndabaWrite,\n  TimeSeriesRange,\n  IndabaResponseWithErrors,\n  IndabaWriteUpdate,\n  IndabaParamHoltWinters,\n  IndabaParamIntegral\n} from '../models/indaba-models';\nimport { TypeMetric } from '../models/indaba-models/type-metric.model';\nimport { ApiUrlService } from './api-url.service';\nimport { APIUtils } from '../models/utils.models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IndabaService {\n  constructor(private http: HttpClient) { }\n\n  private readonly baseUrl: string = ApiUrlService.IndabaBaseUrl;\n\n  public getRange(\n    params: IndabaParam,\n    dataSource: string,\n    bypassInterceptor: boolean = false\n  ): Observable<TimeSeriesRange | null> {\n    return this.http\n      .post<any>(\n        `${this.baseUrl}databases/${dataSource.toLowerCase()}/query/range`,\n        params,\n        APIUtils.setByPassed(bypassInterceptor)\n      )\n      .pipe(\n        map((value: IndabaResponse) => {\n          if (!value) return null;\n          return new TimeSeriesRange(\n            dataSource,\n            value.name,\n            value.values,\n            value.isResponseComplete\n          );\n        })\n      );\n  }\n\n  public getRangeHoltWinters(params: IndabaParamHoltWinters, dataSource: string, bypassInterceptor: boolean = false): Observable<TimeSeriesRange | null> {\n    return this.http\n      .post<any>(\n        `${this.baseUrl}databases/${dataSource.toLowerCase()}/query/holt-winters`,\n        params,\n        APIUtils.setByPassed(bypassInterceptor)\n      )\n      .pipe(\n        map((value: IndabaResponse) => {\n          if (!value) return null;\n          return new TimeSeriesRange(\n            dataSource,\n            value.name,\n            value.values,\n            value.isResponseComplete\n          );\n        })\n      );\n  }\n\n  public getRangeIntegral(params: IndabaParamIntegral, dataSource: string, bypassInterceptor: boolean = false): Observable<TimeSeriesRange | null> {\n    return this.http\n      .post<any>(\n        `${this.baseUrl}databases/${dataSource.toLowerCase()}/query/integral`,\n        params,\n        APIUtils.setByPassed(bypassInterceptor)\n      )\n      .pipe(\n        map((value: IndabaResponse) => {\n          if (!value) return null;\n          return new TimeSeriesRange(\n            dataSource,\n            value.name,\n            value.values,\n            value.isResponseComplete\n          );\n        })\n      );\n  }\n\n  public getLatest(\n    params: Array<string>,\n    dataSource: string,\n    bypassInterceptor: boolean = false\n  ): Observable<Array<Metric>> {\n    const metrics = params.map((tag: string) => ({ name: tag }));\n    return this.http.post<any>(\n      `${this.baseUrl}databases/${dataSource.toLowerCase()}/query/latest`,\n      {\n        timezone: 'Europe/Paris',\n        metrics,\n      },\n      APIUtils.setByPassed(bypassInterceptor)\n    );\n  }\n\n  public getLatestByType(\n    params: Array<string>,\n    dataSource: string\n  ): Observable<Array<TypeMetric>> {\n    const metrics = params.map((tag: string) => ({ name: tag }));\n    return this.http\n      .post<Array<TypeMetric>>(\n        `${this.baseUrl}databases/${dataSource.toLowerCase()}/query/latest`,\n        {\n          timezone: 'Europe/Paris',\n          metrics,\n        }\n      )\n      .pipe(map((value: any) => value));\n  }\n\n  public getInstant(\n    metric: string,\n    date: Date,\n    dataSource: string,\n    direction: InstantQueryDirection\n  ) {\n    return this.http\n      .post<any>(\n        `${this.baseUrl}databases/${dataSource.toLowerCase()}/query/instant`,\n        {\n          moment: date.toISOString(),\n          metrics: [{ name: metric }],\n          queryDirection: direction,\n        }\n      )\n      .pipe(\n        map((res) => {\n          if (!res) return null;\n          const [value] = res;\n          if (!value) return null;\n          return new TimeSeriesRange(\n            dataSource,\n            value.name,\n            value.values,\n            value.isResponseComplete\n          );\n        })\n      );\n  }\n\n  public getDatabases(): Observable<Array<string>> {\n    return this.http\n      .get<any>(`${this.baseUrl}databases`)\n      .pipe(map((value: any) => value?.databases));\n  }\n\n  public writeValues(datasource: string, body: IndabaWrite, skipErrors = false): Observable<IndabaResponseWithErrors> {\n    return this.http\n      .post<IndabaResponseWithErrors>(\n        `${this.baseUrl}databases/${datasource}/values`,\n        body,\n        APIUtils.setByPassed(skipErrors));\n  }\n\n  public writeUpdateValue(datasource: string, writeUpdate: IndabaWriteUpdate): Observable<void> {\n    return this.http.put<void>(`${this.baseUrl}databases/${datasource}/values`, writeUpdate);\n  }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport {\n  IndametaBaseResponse,\n  IndametaImportResponse,\n  IndametaListResponse,\n  IndametaPaginatedResponse\n} from '../models/indametav2-models';\nimport {\n  DataStructure,\n  FormatTyped,\n  IndametaItem,\n  IndametaItemMetric,\n  SearchableProperty,\n  Type\n} from '../models/indametav2-models';\nimport { PaginationModel } from '../models/pagination.model';\nimport { ApiUrlService } from './api-url.service';\nimport { MetricTemplate } from '../models/indametav2-models/metric-template';\nimport { APIUtils } from '../models';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class Indametav2Service {\n\n  private readonly baseUrl = ApiUrlService.IndametaV2BaseUrl;\n\n  private itemToUpdate$ = new BehaviorSubject<IndametaItem>(null);\n  private typeToUpdate$ = new BehaviorSubject<Type>(null);\n  private dataStructureToUpdate$ = new BehaviorSubject<DataStructure>(null);\n  private dataStructureToDelete$ = new BehaviorSubject<DataStructure>(null);\n\n  public reloadTree$ = new BehaviorSubject<void>(null);\n\n  constructor(private http: HttpClient) { }\n\n  public getDataStructures(): Observable<DataStructure[]> {\n    return this.http\n      .get<IndametaListResponse<DataStructure>>(`${this.baseUrl}data-structures`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public getDataStructureTypes(structure: DataStructure): Observable<Type[]> {\n    return this.http\n      .get<IndametaListResponse<Type>>(`${this.baseUrl}data-structures/${structure.id}/types`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public getTreePrimaryNode(structure: DataStructure): Observable<IndametaItem[]> {\n    return this.http\n      .get<IndametaListResponse<IndametaItem>>(`${this.baseUrl}tree/${structure.id}`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public getTreeNode(structure: DataStructure, path: string[]): Observable<IndametaItem[]> {\n    return this.http\n      .get<IndametaListResponse<IndametaItem>>(`${this.baseUrl}tree/${structure.id}/${path.join('/')}`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public addDataStructure(structure: DataStructure): Observable<DataStructure> {\n    return this.http\n      .post<IndametaBaseResponse<DataStructure>>(`${this.baseUrl}data-structures`, structure)\n      .pipe(map(resp => resp.data));\n  }\n\n  public updateDataStructure(structure: DataStructure): Observable<DataStructure> {\n    return this.http\n      .put<IndametaBaseResponse<DataStructure>>(`${this.baseUrl}data-structures/${structure.id}`, structure)\n      .pipe(\n        map(resp => resp.data),\n        tap(data => this.dataStructureToUpdate$.next(data))\n      );\n  }\n\n  public DataStructureUpdated(): Observable<DataStructure> {\n    return this.dataStructureToUpdate$.asObservable();\n  }\n\n  public deleteDataStructure(structure: DataStructure): Observable<void> {\n    return this.http\n      .delete<IndametaBaseResponse<void>>(`${this.baseUrl}data-structures/${structure.id}`)\n      .pipe(\n        map(resp => resp.data),\n        tap(() => this.dataStructureToDelete$.next(structure))\n      );\n  }\n\n  public dataStructureDeleted(): Observable<DataStructure> {\n    return this.dataStructureToDelete$.asObservable();\n  }\n\n  public addType(structure: DataStructure, type: Type): Observable<Type> {\n    return this.http\n      .post<IndametaBaseResponse<Type>>(`${this.baseUrl}data-structures/${structure.id}/types`, type)\n      .pipe(map(resp => resp.data));\n  }\n\n  public updateType(structure: DataStructure, type: Type): Observable<Type> {\n    return this.http\n      .put<IndametaBaseResponse<Type>>(`${this.baseUrl}data-structures/${structure.id}/types/${type.id}`, type)\n      .pipe(\n        map(resp => resp.data),\n        tap(resp => this.typeToUpdate$.next(resp))\n      );\n  }\n\n  public deleteType(structure: DataStructure, type: Type): Observable<void> {\n    return this.http\n      .delete<IndametaBaseResponse<void>>(`${this.baseUrl}data-structures/${structure.id}/types/${type.id}`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public hasTypeItems(structure: DataStructure, type: Type): Observable<boolean> {\n    return this.http\n      .get<IndametaListResponse<IndametaItem>>(`${this.baseUrl}data-structures/${structure.id}/items?typeId=${type.id}&limit=1`)\n      .pipe(\n        map(resp => resp.data?.length > 0)\n      );\n  }\n\n  public typeUpdated(): Observable<Type> {\n    return this.typeToUpdate$.asObservable();\n  }\n\n  public addItem(structure: DataStructure, item: IndametaItem): Observable<IndametaItem> {\n    return this.http\n      .post<IndametaBaseResponse<IndametaItem>>(`${this.baseUrl}data-structures/${structure.id}/items`, item)\n      .pipe(\n        map(resp => resp.data),\n        tap(resp => this.itemToUpdate$.next(resp))\n      );\n  }\n\n  public updateItem(structure: DataStructure, item: IndametaItem): Observable<IndametaItem> {\n    return this.http\n      .put<IndametaBaseResponse<IndametaItem>>(`${this.baseUrl}data-structures/${structure.id}/items/${item.id}`, item)\n      .pipe(\n        map(resp => resp.data),\n        tap(resp => this.itemToUpdate$.next(resp))\n      );\n  }\n\n  public itemUpdated(): Observable<IndametaItem> {\n    return this.itemToUpdate$.asObservable();\n  }\n\n  public deleteItem(structure: DataStructure, item: IndametaItem): Observable<void> {\n    return this.http\n      .delete<IndametaBaseResponse<void>>(`${this.baseUrl}data-structures/${structure.id}/items/${item.id}`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public exportDataStructure(structure: DataStructure): Observable<Blob> {\n    return this.http\n      .get(`${this.baseUrl}data-structures/${structure.id}/export`, { responseType: 'blob' });\n  }\n\n  public importDataStructure(structure: DataStructure, file: File): Observable<IndametaImportResponse> {\n    const formData = new FormData();\n    formData.append('file', file);\n    return this.http.post<IndametaImportResponse>(`${this.baseUrl}data-structures/${structure.id}/import`, formData);\n  }\n\n  public getSearchableProperties(structure: DataStructure): Observable<SearchableProperty[]> {\n    return this.http\n      .get<IndametaListResponse<SearchableProperty>>(`${this.baseUrl}data-structures/${structure.id}/searchable-properties`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public updateSearchablesProperties(structure: DataStructure, searchables: SearchableProperty[]): Observable<SearchableProperty[]> {\n    return this.http\n      .put<IndametaListResponse<SearchableProperty>>(`${this.baseUrl}data-structures/${structure.id}/searchable-properties`, searchables)\n      .pipe(map(resp => resp.data));\n  }\n\n  public searchItems(structure: DataStructure, searchQuery: Map<SearchableProperty, FormatTyped>, pageSize: number, nextPage: PaginationModel = null): Observable<IndametaPaginatedResponse<IndametaItem>> {\n    let query = '';\n    let count = 0;\n\n    const filtered = new Map([...searchQuery.entries()].filter(x => x[1] !== null));\n\n    for (const [searchable, value] of filtered) {\n\n      const propertyName = searchable.searchableType === 'Custom' ? searchable.property.name : searchable.searchableType;\n      const operation = typeof value === 'string' ? `.contains(\"${value}\")` : ` == ${value}`;\n      const searchProperty = !searchable.isTypeMetric\n        ? `searchProperty(\"${searchable.typeId}\", \"${propertyName}\")`\n        : propertyName;\n\n      query += `${searchProperty}${operation}`;\n      if (++count < filtered.size)\n        query += ` && `;\n    }\n\n    let qp = new HttpParams()\n      .set('isMetric', true)\n      .set('displayParents', true)\n      .set('query', query)\n      .set('limit', pageSize)\n\n    if (nextPage?.paginationKey)\n      qp = qp.set('paginationKey', nextPage.paginationKey);\n\n    return this.http\n      .get<IndametaPaginatedResponse<IndametaItem>>(\n        `${this.baseUrl}data-structures/${structure.id}/items`, { params: qp }\n      );\n  }\n\n  public searchMetrics(datasource: string, name: string, description: string, unit: string, pageSize: number, nextPage: PaginationModel = null): Observable<IndametaPaginatedResponse<IndametaItemMetric>> {\n    let qp = new HttpParams()\n      .set('limit', pageSize);\n\n    if (datasource)\n      qp = qp.set('datasource', datasource);\n\n    if (name)\n      qp = qp.set('name', name);\n\n    if (description)\n      qp = qp.set('description', description);\n\n    if (unit)\n      qp = qp.set('unit', unit);\n\n    if (nextPage?.paginationKey)\n      qp = qp.set('paginationKey', nextPage.paginationKey);\n\n    return this.http\n      .get<IndametaPaginatedResponse<IndametaItemMetric>>(\n        `${this.baseUrl}metrics`, { params: qp }\n      );\n  }\n\n  public getMetricTemplatesOfDataStructure(structureId: string): Observable<Array<MetricTemplate>> {\n    return this.http\n      .get<IndametaListResponse<MetricTemplate>>(`${this.baseUrl}data-structures/${structureId}/templates`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public getMetricTemplates(structureId: string, typeId: string): Observable<Array<MetricTemplate>> {\n    return this.http\n      .get<IndametaListResponse<MetricTemplate>>(`${this.baseUrl}data-structures/${structureId}/types/${typeId}/templates`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public generateMetricsDryRun(structureId: string, metricTemplateId?: string): Observable<Array<IndametaItem>> {\n    const params = metricTemplateId ? new HttpParams().append('metric_template_id', metricTemplateId) : new HttpParams();\n    return this.http\n      .get<IndametaListResponse<IndametaItem>>(`${this.baseUrl}data-structures/${structureId}/templates/generate/metrics`, { params })\n      .pipe(map(resp => resp.data));\n  }\n\n  public generateMetricFromMetricTemplate(structureId: string, itemId: string): Observable<IndametaItem> {\n    return this.http\n      .get<IndametaBaseResponse<IndametaItem>>(`${this.baseUrl}data-structures/${structureId}/templates/generate/metrics/${itemId}`)\n      .pipe(map(resp => resp.data));\n  }\n\n  public addMetricTemplate(structureId: string, typeId: string, metricTemplateToAdd: MetricTemplate): Observable<MetricTemplate> {\n    return this.http\n      .post<IndametaBaseResponse<MetricTemplate>>(`${this.baseUrl}data-structures/${structureId}/types/${typeId}/templates`, metricTemplateToAdd, APIUtils.setByPassed(true))\n      .pipe(map(resp => resp.data));\n  }\n\n  public generateMetricsFromMetricTemplate(structureId: string, metricTemplateId: string = \"\"): Observable<Array<IndametaItem>> {\n    const params = metricTemplateId ? new HttpParams().append('metric_template_id', metricTemplateId) : new HttpParams();\n    return this.http\n      .post<IndametaBaseResponse<Array<IndametaItem>>>(`${this.baseUrl}data-structures/${structureId}/templates/generate/metrics`, null, { params })\n      .pipe(map(resp => resp.data));\n  }\n\n  public updateMetricTemplate(structureId: string, typeId: string, metricTemplateToUpdate: MetricTemplate): Observable<MetricTemplate> {\n    return this.http\n      .put<IndametaBaseResponse<MetricTemplate>>(`${this.baseUrl}data-structures/${structureId}/types/${typeId}/templates/${metricTemplateToUpdate.id}`, metricTemplateToUpdate, APIUtils.setByPassed(true))\n      .pipe(map(resp => resp.data));\n  }\n\n  public deleteMetricTemplate(structureId: string, typeId: string, metricTemplateIdToDelete: string, deleteMetrics: boolean = false): Observable<void> {\n    const params = new HttpParams().append('delete_metrics', deleteMetrics);\n    return this.http\n      .delete<IndametaBaseResponse<void>>(`${this.baseUrl}data-structures/${structureId}/types/${typeId}/templates/${metricTemplateIdToDelete}`, { params })\n      .pipe(map(resp => resp.data));\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, concatMap, map, retry, tap } from 'rxjs/operators';\nimport { ApiUrlService } from './api-url.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AdminBaseResponse } from '../models/admin.model';\n\nexport interface UserPreferences {\n  language: string;\n}\n\nconst defaultPrefrences: UserPreferences = {\n  language: 'fr',\n};\n\nexport type AlertPreferences = Record<string, AlertPreference>\nexport type AlertPreference = {\n  notificationEmail: boolean;\n  notificationSms: boolean;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PreferencesService {\n  constructor(private http: HttpClient, private translate: TranslateService) { }\n\n  _preferences: UserPreferences | null = null;\n\n  private url = `${ApiUrlService.IndaPortalBaseUrl}ums/me/preferences`;\n\n  private alertsUrl = `${ApiUrlService.IndaPortalBaseUrl}ums/me/preferences/alerts`;\n\n  preferences$(): Observable<UserPreferences> {\n    if (this._preferences) return of(this._preferences);\n    return this.getPreferences$();\n  }\n\n  setLanguage$(code: string) {\n    return this.preferences$().pipe(\n      concatMap((preferences) =>\n        this.setPreferences$({ ...preferences, language: code })\n      )\n    );\n  }\n\n  public getAlertsPreferences(): Observable<AlertPreferences> {\n    return this.http.get<AdminBaseResponse<AlertPreferences>>(this.alertsUrl)\n      .pipe(\n        map(response => response.data)\n      );\n  }\n\n  public setAlertsPreferences(alertId: string, preference: AlertPreference) {\n    return this.http.put(`${this.alertsUrl}/${alertId}`, preference);\n  }\n\n  private setPreferences$(preferences: UserPreferences) {\n    return this.http\n      .put(this.url, preferences)\n      .pipe(tap(() => (this._preferences = preferences)));\n  }\n\n  private getPreferences$() {\n    return this.http.get(this.url)\n      .pipe(\n        retry({ count: 2, delay: 500 }),\n        map(({ data }: { data: UserPreferences }) => {\n          this._preferences = data.language ? data : defaultPrefrences;\n          return this._preferences;\n        }),\n        catchError(() => {\n          this._preferences = defaultPrefrences;\n          return of(defaultPrefrences);\n        }),\n        tap(preferences => this.translate.use(preferences.language))\n      );\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@auth0/auth0-angular';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { map, retry, switchMap } from 'rxjs/operators';\nimport { Profile, UMSCurrentUser } from '../models/indaba-models/indaba-user.model';\nimport { ApiUrlService } from './api-url.service';\nimport { JwtHelperService } from '@auth0/angular-jwt';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ProfileService {\n  private _picture: string;\n\n  private _token = null;\n  private _encodedToken = null;\n\n  private baseUrl = `${ApiUrlService.IndaPortalBaseUrl}ums/`;\n\n  public readonly profileChanged = new BehaviorSubject<Profile>(null);\n\n  constructor(public httpClient: HttpClient, private authService: AuthService) {\n    this.authService.user$\n      .pipe(\n        switchMap((user) => {\n          this._picture = user?.picture;\n          return this.getCurrentUMSUser();\n        })\n      ).subscribe(profile => {\n        this.profileChanged.next({ ...profile, picture: this._picture });\n      });\n  }\n\n  public getAuthorization(): Observable<string> {\n    if (this._token) return of(this._token.scope);\n\n    return this.getToken().pipe(map((token) => token.scope));\n  }\n\n  public getToken(): Observable<any> {\n    if (this._token) return of(this._token);\n    return this.authService.getAccessTokenSilently().pipe(\n      map((tokenString: string) => {\n        this._encodedToken = tokenString;\n        const helper = new JwtHelperService();\n        this._token = helper.decodeToken(tokenString);\n        return this._token;\n      })\n    );\n  }\n\n  public getEncodedToken(): Observable<string> {\n    if (this._encodedToken) return of(this._encodedToken);\n\n    return this.getToken().pipe(map(() => this._encodedToken).bind(this));\n  }\n\n  public getCurrentUserPhone() {\n    return this.httpClient.get(`${this.baseUrl}me/phone`);\n  }\n\n  private getCurrentUMSUser(): Observable<UMSCurrentUser> {\n    return this.httpClient.get(`${this.baseUrl}me`)\n      .pipe(\n        retry({ count: 2, delay: 500 }),\n        map((res: { data: UMSCurrentUser }) => {\n          return res.data;\n        }),\n      );\n  }\n\n  public resendCurrentUserPhoneValidationCode(context: any = null) {\n    return this.httpClient.put(\n      `${this.baseUrl}me/phone/validate/resend`,\n      null,\n      context\n    );\n  }\n\n  public sendCurrentUserPhoneValidationCode(code: string, context: any = null) {\n    return this.httpClient.post(\n      `${this.baseUrl}me/phone/validate/${code}`,\n      null,\n      context\n    );\n  }\n  public updateCurrentUserPhone(phone, countryCode, verified = false) {\n    return this.httpClient.put(`${this.baseUrl}me/phone`, {\n      phone,\n      countryCode,\n      verified,\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { forkJoin, Observable, of, zip } from 'rxjs';\nimport { IndabaService } from './indaba.service';\nimport {\n  ChartPointType,\n  ComponentType,\n  PublicReportFilters,\n  Report,\n  ReportComponent,\n  ReportFilters,\n  TagComponentDescription,\n} from '../models/report.model';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { DateHelper } from '../helpers/date.helper';\nimport { ApiUrlService } from './api-url.service';\nimport { HttpClient } from '@angular/common/http';\nimport { IndabaResponsePaginated, Metric, TimeSeriesRange } from '../models/indaba-models';\nimport { getCalendarBeginningDate, getCalendarEndingDate } from '../models';\n@Injectable({\n  providedIn: 'root',\n})\nexport class ReportService {\n  constructor(public indabaService: IndabaService, private http: HttpClient) { }\n\n  private readonly baseUrl = `${ApiUrlService.IndaPortalBaseUrl}Report/`;\n\n  private _autoRequestsAggregeted: Array<string> = [];\n\n  get autoRequestsAggregated() {\n    return [...this._autoRequestsAggregeted];\n  }\n\n  getSeries(\n    startDate: Date,\n    endDate: Date,\n    limit: number,\n    _tags: Array<TagComponentDescription>,\n    annotations: boolean,\n    notCompleteAutoRequestKeys: Array<string> | null = null\n  ): Observable<Record<string, TimeSeriesRange> | null> {\n    if (!_tags?.length) return of(null);\n    if (notCompleteAutoRequestKeys === null) {\n      this._autoRequestsAggregeted = [];\n      notCompleteAutoRequestKeys = [];\n    }\n\n    const tags = structuredClone(_tags);\n    const requests: Record<string, Observable<TimeSeriesRange>> = {};\n\n    if (startDate > endDate) return of(null);\n\n    tags.forEach((tag) => {\n      let request: Observable<TimeSeriesRange>;\n\n      if (typeof tag.aggregation !== 'string' && tag.aggregation.functions[0].function === 'holtWinters')\n        request = this.indabaService.getRangeHoltWinters({\n          start: startDate.toISOString(),\n          end: endDate.toISOString(),\n          metric: { name: tag.name },\n          timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n          aggregation: {\n            function: 'first',\n            interval: tag.aggregation.interval,\n            offset: tag.aggregation.offset,\n            holtWinters: tag.aggregation.holtWinters!\n          },\n          filter: tag.filter\n        }, tag.datasource);\n      else if (typeof tag.aggregation !== 'string' && (tag.aggregation.timeUnit))\n        request = this.indabaService.getRangeIntegral({\n          start: startDate.toISOString(),\n          end: endDate.toISOString(),\n          metric: { name: tag.name },\n          timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n          aggregation: {\n            timeUnit: tag.aggregation.timeUnit,\n            interval: tag.aggregation.interval,\n            multiplierMetric: tag.aggregation.multiplierMetric,\n            multiplierNumber: tag.aggregation.multiplierNumber,\n            unit: tag.aggregation.unit\n          },\n          filter: tag.filter\n        }, tag.datasource);\n      else\n        request = this.indabaService.getRange({\n          start: startDate.toISOString(),\n          end: endDate.toISOString(),\n          metric: { name: tag.name },\n          timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n          aggregation: tag.aggregation === 'auto' ? 'none' : tag.aggregation,\n          limit: limit,\n          showAnnotation: annotations,\n          filter: tag.filter,\n        }, tag.datasource);\n\n      requests[tag.displayName] = request.pipe(\n        catchError(() => of(new TimeSeriesRange(\n          tag.datasource,\n          tag.name,\n          [],\n          true // => is completed so no more requests\n        )))\n      );\n    });\n\n    return forkJoin(requests).pipe(\n      map((results: Record<string, TimeSeriesRange>) => {\n        notCompleteAutoRequestKeys?.forEach((key) => {\n          results[key].data = results[key].data.filter(\n            (data) => typeof data.value !== 'number' && data.value?.avg !== null\n          );\n        });\n\n        return results;\n      }),\n      switchMap((results: Record<string, TimeSeriesRange>) => {\n        const autoNotCompleteRequests = Object.keys(results).filter((key) => {\n          const result = results[key];\n          const tag = tags.find((t) => t.displayName === key);\n          return !result.complete && tag?.aggregation === 'auto';\n        });\n\n        if (autoNotCompleteRequests.length === 0) {\n          return of(results);\n        }\n\n        this._autoRequestsAggregeted = autoNotCompleteRequests;\n\n        const newTags: TagComponentDescription[] = [];\n        autoNotCompleteRequests.forEach((key) => {\n          const tag = tags.find((t) => t.displayName === key);\n          if (tag) {\n            tag.aggregation = {\n              functions: [{ function: 'avg' }],\n              interval: DateHelper.getInterval(startDate, endDate, limit),\n            };\n            newTags.push(tag);\n            delete results[key]; // remove from results because it will be redone\n          }\n        });\n\n        const newRequest = this.getSeries(\n          startDate,\n          endDate,\n          limit,\n          newTags,\n          annotations,\n          autoNotCompleteRequests\n        );\n\n        return zip(of(results), newRequest).pipe(map(result => {\n          return { ...result[0], ...result[1] };\n        })); // combine old filtered results with auto requests not completed\n      })\n    );\n  }\n\n  getUserReports(\n    filters: ReportFilters,\n    limit: number,\n    paginationKey?: string\n  ): Observable<IndabaResponsePaginated<Report>> {\n    return this.http.get<IndabaResponsePaginated<Report>>(this.baseUrl, {\n      params: {\n        title: filters.title,\n        limit,\n        paginationKey,\n      },\n    });\n  }\n\n  getPublicReports(\n    filters: PublicReportFilters,\n    limit: number,\n    paginationKey?: string\n  ): Observable<IndabaResponsePaginated<Report>> {\n    return this.http.get<IndabaResponsePaginated<Report>>(\n      `${this.baseUrl}shared`,\n      {\n        params: {\n          title: filters.title,\n          limit,\n          paginationKey,\n          getFavorites: filters.getFavorites,\n        },\n      }\n    );\n  }\n\n  getReport(id: string, hasComponent = false): Observable<Report> {\n    return this.http\n      .get<{ data: Report }>(`${this.baseUrl}${id}`, {\n        params: { hasComponent },\n      })\n      .pipe(\n        map(({ data }) => {\n          this.convertDate(data);\n          return data;\n        })\n      );\n  }\n\n  addReportToFavorites(id: string) {\n    return this.http.post(`${this.baseUrl}favorites/${id}`, {});\n  }\n\n  deleteReportFromFavorites(id: string) {\n    return this.http.delete(`${this.baseUrl}favorites/${id}`);\n  }\n\n  deleteReport(report: Report) {\n    return this.http.delete(`${this.baseUrl}${report.id}`);\n  }\n\n  deleteComponent(componentId: string, reportId: string): Observable<any> {\n    return this.http.delete(\n      `${this.baseUrl}${reportId}/component/${componentId}`\n    );\n  }\n\n  getComponent(\n    reportId: string,\n    componentId: string\n  ): Observable<ReportComponent> {\n    return this.http\n      .get<{ data: ReportComponent }>(\n        `${this.baseUrl}${reportId}/component/${componentId}`\n      )\n      .pipe(\n        map(({ data }) => {\n          this.convertComponentDate(data);\n          this.convertType(data);\n          return data;\n        })\n      );\n  }\n\n  addReport(report: Report): Observable<{ data: Report }> {\n    return this.http.post<{ data: Report }>(this.baseUrl, report);\n  }\n\n  setReportPublic(id: string, isPublic: boolean) {\n    return this.http.patch(`${this.baseUrl}${id}`, { access: isPublic });\n  }\n\n  addComponentToReport(reportId: string, component: ReportComponent) {\n    return this.http.post(`${this.baseUrl}${reportId}/component`, component, {\n      params: { reportId },\n    });\n  }\n\n  updateReportComponent(reportId: string, component: ReportComponent) {\n    return this.http.put(\n      `${this.baseUrl}${reportId}/component/${component.id}`,\n      component\n    );\n  }\n\n  updateReport(report: Report) {\n    return this.http.put(`${this.baseUrl}${report.id}`, report);\n  }\n\n  getFlatValuesFromMetric(metrics: Metric[]): Metric[] {\n    const res: Metric[] = [];\n    metrics.forEach((metric) => {\n      if (typeof metric.value === 'number') {\n        res.push({ timestamp: metric.timestamp, value: metric.value });\n        return;\n      }\n\n      Object.keys(metric.value).forEach((aggregate) => {\n        res.push({\n          timestamp: metric.timestamp,\n          value: metric.value[aggregate],\n        });\n      });\n    });\n\n    return res;\n  }\n\n  duplicateReport(reportId: string): Observable<{ data: Report }> {\n    return this.http.post<{ data: Report }>(\n      `${this.baseUrl}duplicate/${reportId}`,\n      {}\n    );\n  }\n\n  private convertDate(report: Report) {\n    report.layout.forEach((comp) => {\n      if (comp.component) this.convertComponentDate(comp.component);\n    });\n\n    if (report.defaultTimeRange)\n      report.defaultTimeRange = {\n        ...report.defaultTimeRange,\n        startDate: report.defaultTimeRange?.startDate\n          ? new Date(report.defaultTimeRange.startDate)\n          : null,\n        endDate: report.defaultTimeRange?.endDate\n          ? new Date(report.defaultTimeRange.endDate)\n          : null,\n      };\n  }\n\n  private convertType(component: ReportComponent) {\n    if (!component.type) return;\n\n    component.type = component.type.toLowerCase() as ComponentType;\n\n    if (!component.metrics || component.metrics.length === 0) return;\n    component.metrics.forEach((m) => {\n      if (m.type) m.type = m.type.toLowerCase() as ChartPointType;\n    });\n  }\n\n  private convertComponentDate(component: ReportComponent) {\n    if (!component.timeRange) return;\n    component.timeRange = {\n      ...component.timeRange,\n      startDate: component.timeRange?.startDate\n        ? new Date(component.timeRange.startDate)\n        : getCalendarBeginningDate(component.timeRange.presets),\n      endDate: component.timeRange?.endDate\n        ? new Date(component.timeRange.endDate)\n        : getCalendarEndingDate(component.timeRange.presets),\n    };\n  }\n}\n","export default {\n  error: 'Error',\n  OK: 'OK',\n  yes: 'Yes',\n  no: 'No',\n  save: 'Save',\n  select: 'Select',\n  cancel: 'Cancel',\n  option: 'Option',\n\n  MAT_PAGINATOR: {\n    FIRST_PAGE: 'First page',\n    ITEMS_PER_PAGE: 'Items per page',\n    LAST_PAGE: 'Last page',\n    NEXT_PAGE: 'Next page',\n    PREVIOUS_PAGE: 'Previous page',\n    OF: 'of',\n  },\n\n  IndasuitePaginatorComponent: {\n    ITEMS_PER_PAGE: 'Items per page',\n  },\n\n  Error: {\n    Unknown: 'Unkown error',\n    model_not_valid: 'Invalid model:\\n{{errors}}',\n    date_format: 'Invalid date format',\n    indaba_error: 'Indaba has encountered an error',\n    Alerting: {\n      ModelInvalid: 'Invalid request',\n      AlertNotFound: 'Alert not found',\n      GroupNotFound: 'Group not found',\n      UmsError: 'UMS error',\n      HistoryNotFound: 'History not found',\n      EquationEmpty: 'The equation is empty',\n      EquationFormat: \"The equation format is incorrect (example format: ‘datasource@tag’)\",\n      CompileFail: \"Equation compilation failed\",\n      EvaluateFail: \"Equation evaluation failed\",\n      EquationMetricNotFound: \"At least one equation metric was not found\",\n      EquationResultTypeMismatch: \"The equation result type does not match the expected type\",\n      EquationResultTypeUnsupported: \"The equation result type is not supported\",\n      EquationIndabaFuncForbidden: 'The use of an Indaba function is forbidden',\n      EquationDivideByZero: 'The equation contains a division by zero',\n      EquationSyntaxError: 'Syntax error in the equation',\n      EquationInvalidDateFormat: 'The date format provided to the DateFromString function is invalid',\n      FileFormatInvalid: 'Invalid file format',\n      FileInvalid: 'File with errors',\n      Unknown: 'Unknown error',\n      InternalServerError: 'Internal error'\n    },\n    Indameta: {\n      ModelNoValid: 'Invalid model',\n      ReferentialNameExist: 'Referential name already exists',\n      ReferentialParentUnknown: 'Unknown referential parent',\n      ReferentialGroupInvalid: 'Referential group invalid',\n      ReferentialGroupParentInvalid: 'Referential group parent invalid',\n      ReferentialNameInvalid: 'Referential name invalid',\n      ReferentialProperties: \"Referential properties isn't null or empty\",\n      ReferentialPropertyName: 'Invalid property name',\n      ReferentialPropertyNameReserve: 'Reserved property name',\n      ReferentialPropertyTypeHashKey: 'Invalid property type for a primary key',\n      ReferentialPropertyTypeGlobalSecondaryIndex: 'Invalid property type for a secondary key',\n      ReferentialPropertiesKey: 'A property cannot be primary and secondary',\n      ReferentialPropertiesSearch: 'The property has a specified search field but is not searchable',\n      ReferentialPropertyError: 'Issue with a property',\n      ReferentialPropertiesGlobalSecondaryIndex: 'More than 2 secondary key',\n      ReferentialPropertiesHashKey: 'More than 1 primary key',\n      ReferentialPropertiesDisplay: 'More than 1 property to be displayed',\n      ReferentialPropertyTag: \"'tag' property is missing\",\n      ReferentialPropertyDataSource: \"'datasource' property is missing\",\n      ReferentialPropertyUnite: \"'unite' property is missing\",\n      ReferentialPropertyDescription: \"'description' property is missing\",\n      ReferentialPropertyTagType: \"'tag' property can only be a 'text'\",\n      ReferentialPropertyUniteType: \"'unite' property can only be a 'text'\",\n      ReferentialPropertyDescriptionType: \"'description' property can only be a 'text'\",\n      ReferentialPropertyDataSourceType: \"'datasource' property can only be a 'text'\",\n      ReferentialTreeInvalid: 'Reference of the tree structure is invalid',\n      ReferentialTreeMaxStructure: 'The tree reference has exceeded the node maximum (10)',\n      CollectionWarning: 'Warning ! Items not added in database',\n      CollectionItemExists: 'Item already exists',\n      CollectionItemNoFindHashKey: 'Item not found, check its hash key',\n      Unknown: 'An unknown error has occurred'\n    },\n    IndametaV2: {\n      OK: 'OK',\n      ModelInvalid: 'Invalid request',\n      DataStructureInvalid: 'Data structure invalid',\n      DataStructureNameExist: 'Data structure name exists',\n      DataStructureNotFound: 'Data structure not found',\n      TypeInvalid: 'Type invalid',\n      TypeNameExist: 'Type name exists',\n      TypeUsed: 'Type in use',\n      TypeNotFound: 'Type not found',\n      ItemInvalid: 'Item invalid',\n      ItemIdExist: 'Item id exists',\n      ItemMetricNotFound: 'Item metric not found',\n      ItemIdNotFound: 'Item id not found',\n      ItemLabelInvalid: 'Item label invalid',\n      SearchableInvalid: 'Invalid searchable field',\n      SearchablePropertyInvalid: 'Searchable property invalid',\n      TemplateNameAlreadyExists: 'Template name already in use',\n      TemplatePropertyNotFound: 'Property of template is not found',\n      TemplateInvalid: 'Template is invalid',\n      TemplateNoProperty: 'Template must contain at least one property in braces ({})',\n      TemplateFormulasValidationFailed: \"At least one formula is invalid\",\n      TemplateMetricNotFound: 'Metric template not found',\n      ExpressionInvalid: 'Expression invalid',\n      Unknown: 'Unkown error',\n      InternalServerError: 'Internal server error',\n      Warning: 'Warning'\n    },\n    Indaba: {\n      OK: 'OK',\n      DatabaseError: 'Error from database engine',\n      DatabaseInvalid: 'Invalid datasource name',\n      DatabaseTimestamp: 'Out of range timestamp',\n      ModelInvalid: 'Invalid request',\n      MetricExisting: 'Metric already exist',\n      MetricFailUpdate: 'Metric update failed',\n      MetricFailFormula: 'Formula metric type mismatch',\n      MetricFailUpdateType: 'Changing metric type is not allowed',\n      DataNameExisting: 'Name of resource already exists',\n      MetricFailFormulaEnabled: 'This metric is derived from a formula. Please disable the formula to allow renaming',\n      MetricFailFormulaTemplate: 'Unable to rename this metric derived from an indameta model',\n      AccessZoneDefault: 'Default access zone cannot be created/updated/deleted',\n      UserExisting: 'User already exist in access zone',\n      FileFormatInvalid: 'Invalid file format',\n      Unknown: 'Unidentified error',\n      AuthorizationInvalid: 'Invalid Authorization',\n      InternalServerError: 'Internal server error',\n      Warning: 'Warning',\n      ContentEncodingDecompress: 'Unable to decompress payload',\n      ContentEncodingInvalid: 'Invalid header content encoding',\n      AuthorizationInvalidAccessZone: 'Partial write rejected due to missing rights on at least one metric.'\n    },\n    Admin: {\n      NoPhoneNumber: 'No phone number',\n      InvalidVerificationCode: 'Invalid verification code',\n      ExpiredVerificationCode: 'Expired verification code',\n      AlreadyVerified: 'User phone number already verified',\n      WaitBeforeResend: 'Wait 10 minutes before resending the verification code',\n      FailSend: 'Fail sending verification code',\n      MandatoryApplicationDelete:\n        'Unable to delete a required application',\n      MandatoryApplicationUpdate:\n        'Unable to modify a mandatory application',\n      ModelInvalid: 'Invalid model',\n      InvalidUserNoPhoneNumber: \"The user does not have a phone number\",\n      InvalidImage: 'Invalid Image',\n      InvalidLayout: 'The \"Layout\" must be null',\n      InvalidFile: 'The file is invalid',\n      ReportDuplicateName: 'A dashboard with the same name already exists',\n      InputAccessZoneInvalid: 'Invalid access zone',\n      InputAccessZoneTypeInvalid: 'Invalid access zone type',\n      UserModelInvalid: 'Invalid user model',\n      UserNoPhoneNumber: 'User has no phone number',\n      UserPreferenceModelInvalid: 'Invalid user preference model',\n      UserPhoneNumberModelInvalid: 'Invalid user phone number',\n      UserEmailExist: 'User email already exists',\n      UserRoleInvalid: 'Invalid user role',\n      UserRoleError: 'Warning: user not added to role',\n      UserProvider: 'Invalid user provider',\n      UserRoleLock: 'User cannot be assigned a role',\n      UserCreationWithoutRole: 'User must have at least one role',\n      UserGroupDefaultAddError: 'Warning: user not added to default group',\n      IndabaUserGroupsAddError: 'Warning: user not added to Indaba group',\n      IndabaUserGroupsRemoveError: 'Warning: user not removed from Indaba groups',\n      IndabaGroupUsersPatchError: 'Warning: error patching Indaba group users',\n      IndabaDeleteGroupError: 'Warning: Indaba group not deleted',\n      UserDontExist: 'User doesn\\'t exist',\n      GroupModelInvalid: 'Invalid group model',\n      GroupNameExists: 'Group name already exists',\n      GroupDefaultForbidden: 'Updating default group is forbidden',\n      GroupNotFound: 'Group not found',\n      UserNotOnGroup: 'User is not a group member',\n      ImportFileBad: 'Bad file format',\n      ImportFileInvalid: 'Invalid file content',\n      ImportRenameForbidden: 'Renaming a Group in the import file is forbidden',\n      Unknown: 'An unknown error has occurred',\n      InternalServerError: 'An internal server error has occurred',\n      Warning: \"Warning\",\n      CustomerSSO: 'Operations on SSO users are not permitted'\n    },\n    Formulas: {\n      ModelInvalidIndaba: 'Invalid request',\n      MetricExisting: 'Metric already exists',\n      MetricFailUpdate: 'Metric update failed',\n      MetricFailFormula: 'Formula metric type mismatch',\n      MetricFailUpdateType: 'Changing metric type is not allowed',\n      DatabaseError: 'Error from database engine',\n      InvalidModel: 'Invalid request',\n      EquationEmpty: 'Equation is empty',\n      EquationFormat: \"Equation format isn't correct (format exemple: 'datasource@tag')\",\n      CompileFail: 'Equation compilation has failed',\n      EvaluateFail: 'Equation evaluation has failed',\n      EquationMetricNotFound: 'Equation metric was not found',\n      EquationResultTypeMismatch: 'The equation result type does not match the expected type',\n      EquationResultTypeUnsupported: 'Unsupported equation result type',\n      EquationIndabaFuncInCountinuousForbidden: 'Indaba function used in continuous formula',\n      EquationDivideByZero: 'A division by zero is present in the formula',\n      EquationSyntaxError: 'Syntax error in the formula',\n      EquationTooManyIndabaFunctions: 'Please reduce the number of Indaba functions used in your formula: 4 maximum',\n      EquationInvalidDateFormat: 'The format of the date passed to the DateFromString function is invalid',\n      FormulaNotFound: 'Formula not found',\n      FormulaUpdateForbidden: 'Updating formula name or datasource is forbidden',\n      FormulaDisableFail: 'Failed to disable formula',\n      FormulaEnableFail: 'Failed to enable formula',\n      FormulaAddFail: 'Failed to add formula',\n      FileFormatInvalid: 'Unreadable file',\n      FileInvalid: 'File with errors',\n      IndabaImportFail: 'Import failed on Indaba',\n      MetricFailAdd: 'Failed to add metric in Indaba',\n      MetricsFailGet: 'Failed to get metrics in Indaba',\n      MetricFailDelete: 'Failed to delete metric in Indaba',\n      MetricNotFound: 'Metric not found in Indaba',\n      Unknown: 'Unknown error',\n      Forbidden: 'Forbidden',\n      InternalServerError: 'Internal server error'\n    },\n    UserScript: {\n      ModelInvalid: 'Invalid request',\n      UserScriptNotFound: 'Script not found',\n      UserScriptNameExists: 'Script name already exists',\n      ScriptFileInvalid: 'Invalid script file',\n      ScriptFileFormat: 'Invalid script file format',\n      ScriptFileSize: 'Script is too large',\n      ScriptFileCompilation: 'Script compilation failed',\n      Unknown: 'Unknown error occured',\n      Forbidden: 'Forbidden',\n      InternalServerError: 'An internal server error has occured',\n      Warning: 'Warning'\n    }\n  },\n  IndabaAggregationType: {\n    min: 'Minimum',\n    max: 'Maximum',\n    avg: 'Average',\n    count: 'Count',\n    sum: 'Sum',\n    median: 'Median',\n    stdDev: 'Standard deviation',\n    first: 'First value',\n    last: 'Last value',\n    none: 'None',\n    auto: 'Automatic',\n    holtWinters: 'Holt-Winters'\n  },\n  ChartTimeWindowType: {\n    lastHour: 'Last hour',\n    lastDay: 'Last day',\n    lastWeek: 'Last week',\n    lastMonth: 'Last month',\n    lastYear: 'Last year',\n    interval: 'Custom',\n  },\n  ChartType: {\n    scatter: 'Scatter',\n    bar: 'Bar',\n    line: 'Line',\n  },\n  generic_error_message:\n    'An error has occurred! Please try again in a few minutes. \\n If the problem persists, please contact the support team!',\n  ModalFrame: {\n    delete_logo_message: 'Please confirm',\n    delete_title: 'Deletion',\n    delete_body_message: 'Are you sure you want to delete {{element}} ?',\n    error_title: 'Whoops!',\n    more_details: 'Show more details',\n  },\n  ImportModal: {\n    confirm: 'Import',\n    cancel: 'Cancel',\n    title: 'Confirm import ?',\n  },\n  DeleteModal: {\n    confirm: 'Delete',\n    cancel: 'Cancel',\n    title: 'Confirm deletion ?',\n  },\n  UserMenuComponent: {\n    my_profile_link: 'My profile',\n    version: 'v'\n  },\n  LogoutButtonComponent: { default_logout: 'Logout' },\n  ChartConfigComponent: {\n    chart_title: 'Title',\n    limit_title: 'Maximum number of points',\n    tag_list_title: 'Tag list',\n    aggregation_title: 'Add an aggregation ?',\n  },\n  PeriodSelectComponent: {\n    interval_label: 'Interval',\n    begining_interval: 'Beginning date',\n    ending_interval: 'Ending date',\n  },\n  AggregationIntervalInput: {\n    d: 'd',\n    h: 'h',\n    m: 'm',\n    s: 's',\n  },\n  ChartTypeSelectComponent: {\n    label: 'Chart type',\n  },\n  UpdateSnackBarComponent: {\n    message: 'An update is available !',\n    button: 'Update',\n  },\n  DatabaseSelectListComponent: {\n    label: 'List of databases',\n    defaultOption: 'Select a database',\n  },\n  SearchTagComponent: {\n    no_result: 'No result',\n    collections: 'Collections',\n    source: 'Source',\n    search: 'Search',\n    searched: '{{name}} searched',\n    options_more: 'More options',\n    options_less: 'Less options',\n    actions: 'Actions',\n  },\n  ForbiddenModal: {\n    title: 'Access denied !',\n    text: \"You're not allowed to access this ressource.\\nContact your administrator.\",\n  },\n  TooManyRequestsModal: {\n    title: 'Subscription limits exceeded!',\n    text: 'Your request has been denied because you have exceeded the limit of simultaneous requests allowed by your subscription.'\n  },\n  ConflictRequestsModal: {\n    title: 'Operation in progress on this service, please try again later.'\n  },\n  IndasuiteVersionsComponent: {\n    title: 'About',\n    error_tooltip: 'API did not respond or you are not authorized',\n  },\n  IndasuiteDataTableComponent: {\n    no_tags: 'No tag selected',\n    no_data: 'No data',\n  },\n  TreeviewNodeInfoComponent: {\n    last_point_date: 'Last point date : {{date}}',\n    last_point_value: 'Last point value : {{value}}',\n  },\n  IndasuiteLiveDataShowComponent: {\n    annotation: 'Annotation',\n    last_refresh: 'Last refresh : {{date}}',\n    tag: 'Tag',\n    timestamp: 'Timestamp',\n    unit: 'Unit',\n    value: 'Value'\n  },\n  AdminError: {\n    title: 'Error',\n  },\n  IndaAlertingError: {\n    title: 'Error',\n  },\n  IndametaError: {\n    title: 'Error',\n  },\n  IndametaV2Error: {\n    title: 'Error',\n  },\n  IndabaError: {\n    title: 'Error',\n  },\n  FormulasError: {\n    title: 'Error',\n  },\n  BadGatewayModal: {\n    title: 'Bad Gateway',\n    text: 'Communication error with server. Please try again.',\n  },\n  IndasuiteNotFoundComponent: {\n    text: 'Page not found',\n  },\n  IndasuiteChartComponent: {\n    tooltip_comments: 'Annotation',\n    aggregated_comments: '{{number}} aggregated annotation(s)',\n    updated_value: 'Correction of value {{old}} by {{new}}.'\n  },\n  AddDataStructureDialogComponent: {\n    title: 'New Tree',\n    name: 'Name',\n    cancel: 'Cancel',\n    add: 'Add'\n  },\n  AddItemDialogComponent: {\n    title: 'New item',\n    type: 'Type selection',\n    no_types: 'No types',\n    name: 'Item name',\n    cancel: 'Cancel',\n    add: 'Add'\n  },\n  DeleteItemDialogComponent: {\n    title: 'Delete item',\n    text: 'Do you really want to delete the item {{name}}, including all its children?',\n    text_metric: 'Do you really want to delete the metric {{name}} ?',\n    text_confirm: 'Please type \"delete\" to confirm the deletion.',\n    cancel: 'Cancel',\n    validate: 'Validate'\n  },\n  TreeDisplayComponent: {\n    no_trees: 'No tree created',\n    no_items: 'No item in the tree',\n    add_root: 'Add a child to the root',\n    settings: 'Open settings',\n    add_item: 'Add a child to {{name}}',\n    delete_children: 'Delete {{name}} and its children',\n    delete: 'Delete {{name}}',\n    not_exist_metric: 'Metric {{name}} does not exist!',\n    formula_wait: 'Update in progress, please refresh in a few moments',\n    bad_label: 'Metric label configuration is incorrect'\n  },\n  IndametaSearchComponent: {\n    title: 'Metric name',\n    tree: 'Tree',\n    no_items: 'No corresponding items',\n    error: 'Item in error. Please see the config'\n  },\n  IndametaSearchPropertiesComponent: {\n    title: 'Search test',\n    no_properties: 'No searchable property',\n    true: 'True',\n    false: 'False',\n    start: 'Start search'\n  },\n  IndasuiteToastrComponent: {\n    'more': 'more errors...'\n  },\n  IndasuiteChartArrayComponent: {\n    date: \"Date\",\n    metric: \"Metric\",\n    value: \"Value\"\n  },\n  IndasuiteDrawerComponent: {\n    fileUnavailableError: \"File is not available at the moment.\"\n  },\n  IndasuiteSearchComponent: {\n    action: 'Action',\n    actions: 'Actions',\n    add_unit: 'Add a unit',\n    datasource: 'Datasource',\n    description: 'Description',\n    no_metric_found: 'No metric found!',\n    no_metric: 'No metric selected',\n    please_select_source: 'Please select a datasource',\n    search_metadata: 'By metadata',\n    search_metric: 'By metric',\n    search_tree: 'By tree',\n    metric: 'Metric',\n    metric_name: 'Metric name',\n    metrics_selected: 'Selected metrics',\n    metrics_selection: 'Metrics selection',\n    title: 'Metric search',\n    tree: 'Tree structure',\n    unit: 'Unit'\n  },\n  TechnicalNameDisplayPipe: {\n    _default_access_zone_read: \"Default read access zone\",\n    _default_access_zone_write: \"Default write access zone\",\n    _default_group_apps: \"Default application group\",\n    _default_group_users: \"Default user group\",\n    _default_storage_role: \"Default storage rule\"\n  },\n  FormulaOperatorsComponent: {\n    operators: 'Operators',\n    common: 'Common',\n    indaba: 'Indaba',\n    date: 'Time',\n    advanced: 'Advanced',\n    maths: 'Maths',\n    if: 'if([condition], [result if true], [result if false])',\n    ifthen: 'ifthen([condition], [result if true])',\n    watchdog: 'watchdog(\"[metric]\", [seconds], [monitoring change true/false])',\n    previous: 'previousValue(\"[metric]\")',\n    range: 'idb.{{type}}(\"[metric]\", [start date], [end date])',\n    instant: 'idb.{{type}}(\"[metric]\", [date])',\n    week: 'now.{{type}}OfWeek([optional: 0 if week starts on sunday])',\n    date_from_string: 'dateFromString(\"[date]\")',\n    abs: 'abs([number])',\n    cos: 'cos([number])',\n    exp: 'exp([number])',\n    log: 'log([number], [optional: base, E if undefined])',\n    min: 'min([number], [number])',\n    max: 'max([number], [number])',\n    pow: 'pow([number], [puissance])',\n    round: 'round([number], [optional: nb of decimals])',\n    sin: 'sin([number])',\n    tan: 'tan([number])',\n    sqrt: 'sqrt([number])',\n    maths_doc: 'see documentation',\n    tag_search: \"Metric search\"\n  },\n  IndasuiteDateRangePickerComponent: {\n    'begin': 'Start date time',\n    'end': 'End date time'\n  }\n};\n","export default {\n  error: 'Erreur',\n  OK: 'OK',\n  yes: 'Oui',\n  no: 'Non',\n  save: 'Enregistrer',\n  select: 'Sélectionner',\n  cancel: 'Annuler',\n  option: 'Option',\n\n  MAT_PAGINATOR: {\n    FIRST_PAGE: 'Première page',\n    ITEMS_PER_PAGE: 'Eléments par page',\n    LAST_PAGE: 'Dernière page',\n    NEXT_PAGE: 'Page suivante',\n    PREVIOUS_PAGE: 'Page précédente',\n    OF: 'sur',\n  },\n\n  IndasuitePaginatorComponent: {\n    ITEMS_PER_PAGE: 'Eléments par page',\n  },\n\n  Error: {\n    Unknown: 'Erreur inconnue',\n    Alerting: {\n      ModelInvalid: 'Requête non valide',\n      AlertNotFound: 'Alerte non trouvée',\n      GroupNotFound: 'Groupe non trouvé',\n      UmsError: 'Erreur UMS',\n      HistoryNotFound: 'Historique non trouvé',\n      EquationEmpty: \"L'équation est vide\",\n      EquationFormat: \"Le format de l'équation n'est pas correct (exemple de format : 'datasource@tag')\",\n      CompileFail: \"La compilation de l'équation a échoué\",\n      EvaluateFail: \"L'évaluation de l'équation a échoué\",\n      EquationMetricNotFound: \"Au moins une métrique de l'équation n'a pas été trouvée\",\n      EquationResultTypeMismatch: \"Le type de résultat de l'équation ne correspond pas au type de résultat attendu\",\n      EquationResultTypeUnsupported: \"Type de résultat d'équation non pris en charge\",\n      EquationIndabaFuncForbidden: 'L\\'utilisation d\\'une fonction Indaba est interdite',\n      EquationDivideByZero: 'Une division par zéro est présente dans l\\'équation',\n      EquationSyntaxError: 'Erreur de syntaxe dans l\\équation',\n      EquationInvalidDateFormat: 'Le format de la date passée à la fonction DateFromString est invalide',\n      FileFormatInvalid: 'Format de fichier invalide',\n      FileInvalid: 'Fichier comportant des erreurs',\n      Unknown: 'Erreur inconnue',\n      InternalServerError: 'Erreur interne'\n    },\n    Indameta: {\n      ModelNoValid: 'Modèle invalide',\n      ReferentialNameExist: 'Un référentiel avec ce nom existe déjà',\n      ReferentialParentUnknown: 'Référentiel parent inconnu',\n      ReferentialGroupInvalid: 'Groupe référentiel invalide ',\n      ReferentialGroupParentInvalid: 'Groupe référentiel parent invalide',\n      ReferentialNameInvalid: 'Nom du référentiel invalide',\n      ReferentialProperties: 'Les propriétés du référentiel ne sont pas nulles ou vide',\n      ReferentialPropertyName: \"Nom de propriété invalide\",\n      ReferentialPropertyNameReserve: \"Nom de propriété réservé\",\n      ReferentialPropertyTypeHashKey: \"Type de propriété invalide pour une clé primaire\",\n      ReferentialPropertyTypeGlobalSecondaryIndex: \"Type de propriété invalide pour une clé secondaire\",\n      ReferentialPropertiesKey: \"La propriété ne peut pas être de type clé primaire et secondaire\",\n      ReferentialPropertiesSearch: \"La propriété a un champ de recherche renseigné mais n'est pas recherchable\",\n      ReferentialPropertyError: \"Problème sur la propriété\",\n      ReferentialPropertiesGlobalSecondaryIndex: 'Il y a plus de 2 clés secondaires',\n      ReferentialPropertiesHashKey: 'Il y a plusieurs clés primaires',\n      ReferentialPropertiesDisplay: 'Il y a plusieurs propriétés à afficher',\n      ReferentialPropertyTag: \"Il manque la propriété 'tag'\",\n      ReferentialPropertyDataSource: \"Il manque la propriété 'datasource'\",\n      ReferentialPropertyUnite: \"Il manque la propriété 'unite'\",\n      ReferentialPropertyDescription: \"Il manque la propriété 'description'\",\n      ReferentialPropertyTagType: \"La propriété 'tag' ne peut être que du type 'texte'\",\n      ReferentialPropertyUniteType: \"La propriété 'unite' ne peut être que du type 'texte'\",\n      ReferentialPropertyDescriptionType: \"La propriété 'description' ne peut être que du type 'texte'\",\n      ReferentialPropertyDataSourceType: \"La propriété 'datasource' ne peut être que du type 'texte'\",\n      ReferentialTreeInvalid: \"La référence de l'arborescence est invalide\",\n      ReferentialTreeMaxStructure: \"L’arborescence a dépassé sa profondeur maximum (10)\",\n      CollectionWarning: \"Attention ! Les informations n'ont pas été ajoutées à la base de données\",\n      CollectionItemExists: \"L'élement existe déjà\",\n      CollectionItemNoFindHashKey: \"L'élement n'a pas pu être trouvé. Vérifiez sa clé primaire\",\n      Unknown: 'Une erreur inconnue est survenue'\n    },\n    IndametaV2: {\n      OK: 'OK',\n      ModelInvalid: 'Requête invalide',\n      DataStructureInvalid: 'Arborescence invalide',\n      DataStructureNameExist: 'Nom d\\'arborescence existant',\n      DataStructureNotFound: 'Nom d\\'arborescence introuvable',\n      TypeInvalid: 'Type invalide',\n      TypeNameExist: 'Nom de type existant',\n      TypeUsed: 'Type utilisé',\n      TypeNotFound: 'Type introuvable',\n      ItemInvalid: 'Elément invalide',\n      ItemIdExist: 'Identifiant de l\\'élément existant',\n      ItemMetricNotFound: 'Métrique de l\\'élément non trouvée',\n      ItemIdNotFound: 'Identifiant de l\\'élément non trouvé',\n      ItemLabelInvalid: 'Label de l\\'élément invalide',\n      SearchableInvalid: 'Champ de recherche invalide',\n      SearchablePropertyInvalid: 'Propriété recherchable invalide',\n      TemplateNameAlreadyExists: 'Le nom du modèle est déjà utilisé',\n      TemplatePropertyNotFound: 'Une propriété du modèle est introuvable',\n      TemplateInvalid: \"Le modèle n'est pas valide\",\n      TemplateNoProperty: \"Le modèle doit contenir au moins une variable entre accolades ({})\",\n      TemplateFormulasValidationFailed: \"Au moins une formule n'est pas valide\",\n      TemplateMetricNotFound: 'Modèle de métrique non trouvé',\n      ExpressionInvalid: 'Expression invalide',\n      Unknown: 'Erreur inconnue',\n      InternalServerError: 'Erreur interne du serveur',\n      Warning: 'Avertissement'\n    },\n    Indaba: {\n      OK: 'OK',\n      DatabaseError: 'Erreur du moteur de base de données',\n      DatabaseInvalid: 'Nom de datasource invalide',\n      DatabaseTimestamp: 'Horodatage hors de la période valide',\n      ModelInvalid: 'Requête invalide',\n      MetricExisting: 'Métrique déjà existante',\n      MetricFailUpdate: 'Mise à jour de la métrique échouée',\n      MetricFailFormula: 'Mauvaise utilisation du type métrique Formule',\n      MetricFailUpdateType: 'Changer le type d\\'une métrique est interdit',\n      DataNameExisting: 'Nom de la ressource déjà utilisé',\n      MetricFailFormulaEnabled: 'Cette métrique est issue d\\'une formule. Veuillez désactiver la formule pour autoriser le renommage',\n      MetricFailFormulaTemplate: 'Impossible de renommer cette métrique issue d\\'un modèle indameta',\n      AccessZoneDefault: 'Zone d\\'accès par défaut non créable/modifiable/supprimable',\n      UserExisting: 'Utilisateur déjà dans la zone d\\'accès',\n      FileFormatInvalid: 'Format de fichier invalide',\n      Unknown: 'Erreur non identifiée',\n      AuthorizationInvalid: 'Autorisation invalide',\n      InternalServerError: 'Erreur interne du serveur',\n      Warning: 'Avertissement',\n      ContentEncodingDecompress: 'Impossible de décompresser la charge utile',\n      ContentEncodingInvalid: 'Contenu de l\\'en-tête invalide',\n      AuthorizationInvalidAccessZone: 'Ecriture partielle rejetée à cause d\\'absence de droits sur au moins une métrique.'\n    },\n    Admin: {\n      NoPhoneNumber: 'Pas de numéro de téléphone',\n      InvalidVerificationCode: 'Code de vérification invalide',\n      ExpiredVerificationCode: 'Code de vérification expiré',\n      AlreadyVerified: 'Numéro de téléphone de l\\'utilisateur déjà vérifié',\n      WaitBeforeResend: 'Attendez 10 minutes entre les renvois du code de vérification',\n      FailSend: 'Échec de l\\'envoi du code de vérification',\n      MandatoryApplicationDelete:\n        'Impossible de supprimer une application obligatoire',\n      MandatoryApplicationUpdate:\n        'Impossible de modifier une application obligatoire',\n      ModelInvalid: 'Modèle invalide',\n      InvalidUserNoPhoneNumber: \"L'utilisateur n'a pas de numéro de téléphone\",\n      InvalidImage: 'Image invalide',\n      InvalidLayout: 'Le \"Layout\" doit être null',\n      InvalidFile: 'Le fichier est invalide',\n      ReportDuplicateName: 'Un tableau de bord avec le même nom existe déjà',\n      InputAccessZoneInvalid: 'Zone d\\'accès invalide',\n      InputAccessZoneTypeInvalid: 'Type de zone d\\'accès invalide',\n      UserModelInvalid: 'Modèle utilisateur invalide',\n      UserNoPhoneNumber: 'L\\'utilisateur n\\'a pas de numéro de téléphone',\n      UserPreferenceModelInvalid: 'La préférence de l\\'utilisateur est invalide',\n      UserPhoneNumberModelInvalid: 'Le numéro de téléphone de l\\'utilisateur est invalide',\n      UserEmailExist: 'L\\'adresse e-mail de l\\'utilisateur existe',\n      UserRoleInvalid: 'Rôle utilisateur invalide',\n      UserRoleError: 'Avertissement : utilisateur non ajouté au rôle',\n      UserProvider: 'Fournisseur d\\'utilisateurs invalide',\n      UserRoleLock: 'L\\'utilisateur ne peut pas se voir attribuer un rôle',\n      UserCreationWithoutRole: 'L\\'utilisateur doit avoir un moins un rôle',\n      UserGroupDefaultAddError: 'Attention : utilisateur non ajouté au groupe par défaut',\n      IndabaUserGroupsAddError: 'Attention : utilisateur non ajouté au groupe Indaba',\n      IndabaUserGroupsRemoveError: 'Avertissement : utilisateur non supprimé des groupes Indaba',\n      IndabaGroupUsersPatchError: 'Avertissement : erreur lors de la mise à jour des utilisateurs du groupe Indaba',\n      IndabaDeleteGroupError: 'Avertissement : groupe Indaba non supprimé',\n      UserDontExist: 'L\\'utilisateur n\\'existe pas',\n      GroupModelInvalid: 'Modèle de groupe invalide',\n      GroupNameExists: 'Le nom du groupe existe déjà',\n      GroupDefaultForbidden: 'La mise à jour du groupe par défaut est interdite',\n      GroupNotFound: 'Groupe introuvable',\n      UserNotOnGroup: 'L\\'utilisateur n\\'est pas membre du groupe',\n      ImportFileBad: 'Format de fichier incorrect',\n      ImportFileInvalid: 'Contenu du fichier invalide',\n      ImportRenameForbidden: 'Renommer un groupe sur le fichier d\\'import est interdit',\n      Unknown: 'Une erreur inconnue est survenue',\n      InternalServerError: 'Une erreur interne au serveur est survenue',\n      Warning: \"Attention\",\n      CustomerSSO: 'Les opérations sur un utilisateur SSO ne sont pas autorisées'\n    },\n    Formulas: {\n      ModelInvalidIndaba: 'Requête non valide',\n      MetricExisting: 'Métrique déjà existante',\n      MetricFailUpdate: 'Mise à jour de la métrique échouée',\n      MetricFailFormula: 'Mauvaise utilisation du type métrique Formule',\n      MetricFailUpdateType: 'Changer le type d\\'une métrique est interdit',\n      DatabaseError: 'Erreur du moteur de base de données',\n      InvalidModel: 'Requête non valide',\n      EquationEmpty: \"L'équation est vide\",\n      EquationFormat: \"Le format de l'équation n'est pas correct (exemple de format : 'datasource@tag')\",\n      CompileFail: \"La compilation de l'équation a échoué\",\n      EvaluateFail: \"L'évaluation de l'équation a échoué\",\n      EquationMetricNotFound: \"Au moins une métrique de l'équation n'a pas été trouvée\",\n      EquationResultTypeMismatch: \"Le type de résultat de l'équation ne correspond pas au type de résultat attendu\",\n      EquationResultTypeUnsupported: \"Type de résultat d'équation non pris en charge\",\n      EquationIndabaFuncInCountinuousForbidden: 'L\\'utilisation d\\'une fonction Indaba dans la formule continue est interdite',\n      EquationDivideByZero: 'Une division par zéro est présente dans la formule',\n      EquationSyntaxError: 'Erreur de syntaxe dans la formule',\n      EquationTooManyIndabaFunctions: 'Veuillez réduire le nombre de fonctions Indaba utilisées dans votre formule : 4 au maximum',\n      EquationInvalidDateFormat: 'Le format de la date passée à la fonction DateFromString est invalide',\n      FormulaNotFound: \"Formule non trouvée\",\n      FormulaUpdateForbidden: \"La mise à jour du nom de la formule ou de la base de données est interdite\",\n      FormulaDisableFail: \"Échec de la désactivation de la formule\",\n      FormulaEnableFail: \"Échec de l'activation de la formule\",\n      FormulaAddFail: \"Échec de l'ajout d'une formule\",\n      FileFormatInvalid: \"Fichier illisible\",\n      FileInvalid: \"Fichier comportant des erreurs\",\n      IndabaImportFail: \"Échec de l'importation sur Indaba\",\n      MetricFailAdd: \"Échec de l'ajout d'une mesure sur Indaba\",\n      MetricsFailGet: \"Échec de l'obtention de données métriques sur Indaba)\",\n      MetricFailDelete: \"Échec de la suppression d'une métrique sur Indaba\",\n      MetricNotFound: \"Métrique non trouvée sur Indaba\",\n      Unknown: \"Erreur inconnue\",\n      Forbidden: \"Interdit\",\n      InternalServerError: 'Erreur interne du serveur'\n    },\n    UserScript: {\n      ModelInvalid: 'Requête non valide',\n      UserScriptNotFound: 'Script non trouvé',\n      UserScriptNameExists: 'Le nom du script est déjà utilisé',\n      ScriptFileInvalid: 'Le fichier du script est invalide',\n      ScriptFileFormat: 'Le format du fichier du script est invalide',\n      ScriptFileSize: 'Le fichier du script est trop lourd',\n      ScriptFileCompilation: 'La compilation du scipt a échouée',\n      Unknown: 'Une erreur inconnue est survenue',\n      Forbidden: 'Interdit',\n      InternalServerError: 'Une erreur interne au serveur est survenue',\n      Warning: 'Attention'\n    }\n  },\n  IndabaAggregationType: {\n    min: 'Minimum',\n    max: 'Maximum',\n    avg: 'Moyenne',\n    count: 'Nombre de valeurs',\n    sum: 'Somme',\n    median: 'Médiane',\n    stdDev: 'Écart Type',\n    first: 'Première valeur',\n    last: 'Dernière valeur',\n    none: 'Aucune',\n    auto: 'Automatique',\n    holtWinters: 'Holt-Winters'\n  },\n\n  ChartTimeWindowType: {\n    lastHour: 'Dernière heure',\n    lastDay: 'Dernière journée',\n    lastWeek: 'Dernière semaine',\n    lastMonth: 'Dernier mois',\n    lastYear: 'Dernière année',\n    interval: 'Personnalisée',\n  },\n\n  ChartType: {\n    scatter: 'Nuage de points',\n    bar: 'Histogramme',\n    line: 'Courbe',\n  },\n  generic_error_message:\n    \"Une erreur s'est produite ! Merci de réessayer dans quelques minutes. \\n Si le problème persiste, merci de contacter le support !\",\n  ModalFrame: {\n    delete_logo_message: 'Confirmez',\n    delete_title: 'Suppression',\n    delete_body_message: 'Êtes-vous sûr de vouloir supprimer {{element}} ?',\n    error_title: 'Oups !',\n    more_details: 'Plus de details',\n  },\n  ImportModal: {\n    confirm: 'Importer',\n    cancel: 'Annuler',\n    title: \"Valider l'import ?\",\n  },\n  DeleteModal: {\n    confirm: 'Supprimer',\n    cancel: 'Annuler',\n    title: 'Valider la suppression ?',\n  },\n  UserMenuComponent: {\n    my_profile_link: 'Mon profil',\n    version: 'v'\n  },\n  LogoutButtonComponent: { default_logout: 'Se déconnecter' },\n  ChartConfigComponent: {\n    chart_title: 'Titre',\n    limit_title: 'Nombre maximum de points',\n    tag_list_title: 'Liste des tags',\n    aggregation_title: 'Ajouter une aggrégation ?',\n  },\n  PeriodSelectComponent: {\n    interval_label: 'Période',\n    begining_interval: 'Date de début',\n    ending_interval: 'Date de fin',\n  },\n  AggregationIntervalInput: {\n    d: 'j',\n    h: 'h',\n    m: 'm',\n    s: 's',\n  },\n  ChartTypeSelectComponent: {\n    label: 'Type de graphique',\n  },\n  UpdateSnackBarComponent: {\n    message: 'Une nouvelle version est disponible !',\n    button: 'Mettre à jour',\n  },\n  DatabaseSelectListComponent: {\n    label: 'Liste des bases de données',\n    defaultOption: 'Selectionnez une base de données',\n  },\n  SearchTagComponent: {\n    no_result: 'Pas de résultat',\n    collections: 'Collections',\n    source: 'Source',\n    search: 'Rechercher',\n    searched: '{{name}} recherchés',\n    options_more: \"Plus d'options\",\n    options_less: \"Moins d'options\",\n    actions: 'Actions',\n  },\n  ForbiddenModal: {\n    title: 'Accès refusé !',\n    text: \"Vous n'êtes pas autorisé à accéder à cette ressource.\\nContactez votre administrateur.\",\n  },\n  TooManyRequestsModal: {\n    title: \"Limites de l'abonnement dépassées !\",\n    text: 'Votre demande a été refusée car vous avez dépassé la limite de requêtes simultanées autorisées par votre abonnement.'\n  },\n  ConflictRequestsModal: {\n    title: 'Opération en cours sur ce service, veuillez réessayer plus tard.'\n  },\n  IndasuiteVersionsComponent: {\n    title: 'A propos',\n    error_tooltip: \"L'API n'a pas répondu ou vous n'avez pas l'autorisation\",\n  },\n\n  IndasuiteDataTableComponent: {\n    no_tags: 'Aucun tag selectionné',\n    no_data: 'Aucune donnée',\n  },\n  TreeviewNodeInfoComponent: {\n    last_point_date: 'Date du dernier point : {{date}}',\n    last_point_value: 'Valeur du dernier point : {{value}}',\n  },\n  IndasuiteLiveDataShowComponent: {\n    annotation: 'Annotation',\n    last_refresh: 'Dernière actualisation : {{date}}',\n    tag: 'Tag',\n    timestamp: 'Horodatage',\n    unit: 'Unité',\n    value: 'Valeur'\n  },\n  AdminError: {\n    title: 'Erreur',\n  },\n  IndaAlertingError: {\n    title: 'Erreur',\n  },\n  IndametaError: {\n    title: 'Erreur',\n  },\n  IndametaV2Error: {\n    title: 'Erreur',\n  },\n  IndabaError: {\n    title: 'Erreur',\n  },\n  FormulasError: {\n    title: 'Erreur',\n  },\n  BadGatewayModal: {\n    title: 'Bad Gateway',\n    text: 'Erreur de communication avec le serveur. Veuillez réessayer.',\n  },\n  IndasuiteNotFoundComponent: {\n    text: 'Page introuvable',\n  },\n  IndasuiteChartComponent: {\n    tooltip_comments: 'Annotation',\n    aggregated_comments: '{{number}} annotation(s) agrégée(s)',\n    updated_value: \"Correction de la valeur {{old}} par {{new}}.\"\n  },\n  AddDataStructureDialogComponent: {\n    title: 'Nouvelle arborescence',\n    name: 'Nom',\n    cancel: 'Annuler',\n    add: 'Ajouter'\n  },\n  AddItemDialogComponent: {\n    title: 'Nouvel élément',\n    type: 'Sélection du type',\n    no_types: 'Aucun type',\n    name: 'Nom de l\\'élément',\n    cancel: 'Annuler',\n    add: 'Ajouter'\n  },\n  DeleteItemDialogComponent: {\n    title: 'Supprimer l\\'élément',\n    text: 'Voulez-vous vraiment supprimer l\\'élément {{name}} ainsi que tous ses enfants ?',\n    text_metric: 'Voulez-vous vraiment supprimer la métrique {{name}} ?',\n    text_confirm: 'Veuillez saisir \"delete\" pour pouvoir valider la suppression.',\n    cancel: 'Annuler',\n    validate: 'Valider'\n  },\n  TreeDisplayComponent: {\n    no_trees: 'Aucune arborescence créée',\n    no_items: 'Aucun élément dans l\\'arborescence',\n    add_root: 'Ajouter un enfant à la racine',\n    settings: 'Ouvrir la configuration',\n    add_item: 'Ajouter un enfant à {{name}}',\n    delete_children: 'Supprimer {{name}} et ses enfants',\n    delete: 'Supprimer {{name}}',\n    not_exist_metric: 'La métrique {{name}} n\\'existe pas !',\n    formula_wait: 'Mise à jour en cours, veuillez rafraîchir dans quelques instants',\n    bad_label: 'La configuration du label est incorrecte'\n  },\n  IndametaSearchComponent: {\n    title: 'Nom de la métrique',\n    tree: 'Arborescence',\n    no_items: 'Aucun élément correspondant',\n    error: 'Element en erreur. Veuillez regarder la configuration'\n  },\n  IndametaSearchPropertiesComponent: {\n    title: 'Test de la recherche',\n    no_properties: 'Aucune propriété recherchable',\n    true: 'Vrai',\n    false: 'Faux',\n    start: 'Lancer la recherche'\n  },\n  IndasuiteToastrComponent: {\n    'more': 'erreur(s) de plus...'\n  },\n  IndasuiteChartArrayComponent: {\n    date: \"Date\",\n    metric: \"Métrique\",\n    value: \"Valeur\"\n  },\n  IndasuiteDrawerComponent: {\n    fileUnavailableError: \"Le fichier n'est pas disponible pour le moment.\"\n  },\n  IndasuiteSearchComponent: {\n    action: 'Action',\n    actions: 'Actions',\n    add_unit: 'Ajouter une unité',\n    datasource: 'Source de données',\n    description: 'Description',\n    no_metric_found: 'Aucune métrique trouvée !',\n    no_metric: 'Aucune métrique sélectionnée',\n    please_select_source: 'Merci de sélectionner une source de données',\n    search_metadata: 'Par métadonnées',\n    search_metric: \"Par métrique\",\n    search_tree: 'Par arborescence',\n    metric: 'Métrique',\n    metric_name: 'Nom de la métrique',\n    metrics_selected: 'Métriques sélectionnées',\n    metrics_selection: 'Sélection des métriques',\n    title: 'Rechercher une métrique',\n    tree: 'Arborescence',\n    unit: 'Unité'\n  },\n  TechnicalNameDisplayPipe: {\n    _default_access_zone_read: \"Zone d'accès en lecture par défaut\",\n    _default_access_zone_write: \"Zone d'accès en écriture par défaut\",\n    _default_group_apps: \"Groupe par défaut des applications\",\n    _default_group_users: \"Groupe par défaut des utilisateurs\",\n    _default_storage_role: \"Règle de stockage par défaut\"\n  },\n  FormulaOperatorsComponent: {\n    operators: 'Opérateurs',\n    common: 'Courants',\n    indaba: 'Indaba',\n    date: 'Temporels',\n    advanced: 'Avancés',\n    maths: 'Mathématiques',\n    if: 'if([condition], [resultat si vrai], [resultat si faux])',\n    ifthen: 'ifthen([condition], [resultat si vrai])',\n    watchdog: 'watchdog(\"[métrique]\", [secondes], [surveillance changement true/false])',\n    previous: 'previousValue(\"[métrique]\")',\n    range: 'idb.{{type}}(\"[métrique]\", [date de début], [date de fin])',\n    instant: 'idb.{{type}}(\"[métrique]\", [date])',\n    week: 'now.{{type}}OfWeek([optionnel: 0 si début de semaine le dimanche])',\n    date_from_string: 'dateFromString(\"[date]\")',\n    abs: 'abs([nombre])',\n    cos: 'cos([nombre])',\n    exp: 'exp([nombre])',\n    log: 'log([nombre], [optionnel: base, E si non définie])',\n    min: 'min([nombre], [nombre])',\n    max: 'max([nombre], [nombre])',\n    pow: 'pow([nombre], [puissance])',\n    round: 'round([nombre], [optionnel: nb de décimales])',\n    sin: 'sin([nombre])',\n    tan: 'tan([nombre])',\n    sqrt: 'sqrt([nombre])',\n    maths_doc: 'voir la documentation',\n    tag_search: \"Recherche de métrique\"\n  },\n  IndasuiteDateRangePickerComponent: {\n    'begin': 'Heure de la date de début',\n    'end': 'Heure de la date de fin'\n  }\n};\n","import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MatPaginationIntlService extends MatPaginatorIntl {\n  constructor(private translateService: TranslateService) {\n    super();\n    this.translateService.onLangChange.subscribe(() => {\n      this.translateLabels();\n    });\n    this.translateLabels();\n  }\n  translateLabels() {\n    this.firstPageLabel = this.translateService.instant(\n      'MAT_PAGINATOR.FIRST_PAGE'\n    );\n    this.itemsPerPageLabel = this.translateService.instant(\n      'MAT_PAGINATOR.ITEMS_PER_PAGE'\n    );\n    this.lastPageLabel = this.translateService.instant(\n      'MAT_PAGINATOR.LAST_PAGE'\n    );\n    this.nextPageLabel = this.translateService.instant(\n      'MAT_PAGINATOR.NEXT_PAGE'\n    );\n    this.previousPageLabel = this.translateService.instant(\n      'MAT_PAGINATOR.PREVIOUS_PAGE'\n    );\n    this.changes.next();\n  }\n\n  override getRangeLabel = (page: number, pageSize: number, length: number): string => {\n    const of = this.translateService\n      ? this.translateService.instant('MAT_PAGINATOR.OF')\n      : 'of';\n    if (length === 0 || pageSize === 0) {\n      return '0 ' + of + ' ' + length;\n    }\n    length = Math.max(length, 0);\n    const startIndex =\n      page * pageSize > length\n        ? (Math.ceil(length / pageSize) - 1) * pageSize\n        : page * pageSize;\n\n    const endIndex = Math.min(startIndex + pageSize, length);\n    return startIndex + 1 + ' - ' + endIndex + ' ' + of + ' ' + length;\n  };\n\n  injectTranslateService(translate: TranslateService): void {\n    this.translateService = translate;\n\n    this.translateService.onLangChange.subscribe(() => {\n      this.translateLabels();\n    });\n\n    this.translateLabels();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IndasuiteTranslationService {\n  constructor(private translateService: TranslateService) {}\n\n  public setTranslations(translations: any) {\n    Object.keys(translations).forEach((key) => {\n      this.translateService.setTranslation(key, translations[key], true);\n    });\n  }\n}\n","import { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n  MatPaginatorIntl,\n  MatPaginatorModule,\n} from '@angular/material/paginator';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport en from '../../assets/i18n/en';\nimport fr from '../../assets/i18n/fr';\nimport { IndasuiteTranslationService } from './services/indasuite-translation.service';\nimport { MatPaginationIntlService } from './services/mat-pagination-intl.service';\n\nconst translateModule = TranslateModule.forChild({});\n\n@NgModule({\n  imports: [\n    translateModule,\n    MatPaginatorModule,\n    CdkScrollableModule,\n    MatSelectModule,\n    MatTooltipModule,\n    MatButtonModule,\n  ],\n  providers: [\n    {\n      provide: MatPaginatorIntl,\n      useClass: MatPaginationIntlService,\n    },\n  ],\n})\nexport class NgxIndasuiteTranslationModule {\n  constructor(private translationService: IndasuiteTranslationService) {\n    this.translationService.setTranslations({ fr, en });\n  }\n}\n","import {\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class IndasuiteTranslationInterceptor implements HttpInterceptor {\n  constructor(private translateService: TranslateService) {}\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    const translatedRequest = req.clone({\n      headers: req.headers.set(\n        'Accept-Language',\n        this.translateService.currentLang ?? 'fr'\n      ),\n    });\n\n    return next.handle(translatedRequest);\n  }\n}\n","export enum TreeDisplay {\n  ReadOnly,\n  SelectMetrics,\n  Edit,\n  Search,\n  Template\n}\n","import { DateTime } from 'luxon';\nimport { IndametaItem, Type } from '../../../api';\nimport { TreeItemMetric } from './tree-item-metric';\nimport { TreeItemProperties } from './tree-item-properties';\n\nexport class TreeItem {\n  id: string;\n  label: string;\n  hasError: boolean;\n  parent: TreeItem;\n  children: TreeItem[];\n  isTypeMetric: boolean;\n  metric: TreeItemMetric;\n  properties: TreeItemProperties;\n  isRoot: boolean = false;\n  hasTemplateCreated: boolean = false;\n  metricTemplateName?: string;\n  metricTemplateVersion?: number;\n  formula?: string;\n  formulaTemplateName?: string;\n  formulaTemplateVersion?: string;\n  formulaTemplateId?: string;\n\n  constructor(item: IndametaItem, parent: TreeItem, type: Type, depth: number, hasTemplateCreated: boolean = false) {\n    this.id = item.id;\n    this.label = item.label;\n    this.hasError = item.hasError;\n    this.parent = parent;\n    this.children = [];\n    this.isTypeMetric = type.isTypeMetric;\n    this.hasTemplateCreated = hasTemplateCreated;\n    this.metricTemplateName = item.metricTemplateName;\n    this.metricTemplateVersion = item.metricTemplateVersion;\n    this.formula = item.formula;\n    this.formulaTemplateName = item?.formulaTemplateName;\n    this.formulaTemplateVersion = item?.formulaTemplateVersion;\n    this.formulaTemplateId = item?.formulaTemplateId;\n\n    this.properties = {\n      depth,\n      loading: false,\n      expanded: item?.properties?.expanded ? Boolean(item.properties.expanded) : false\n    };\n\n    if (!this.isTypeMetric || !item.metric)\n      return;\n\n    const metric = item.metric;\n    this.metric = {\n      id: metric.id,\n      datasource: metric.datasource,\n      name: metric.name,\n      description: metric.description,\n      unit: metric.unit,\n      source: metric.source,\n      type: metric.type,\n      loading: true\n    } as TreeItemMetric;\n\n    if (this.hasError && !this.metric.datasource) {\n      this.metric.loading = false;\n      this.metric.notExisting = true;\n      return;\n    }\n\n    if (!this.label) {\n      this.label = 'TreeDisplayComponent.bad_label'\n    }\n\n    let message = `datasource : ${this.metric.datasource}\\ntag : ${this.metric.name}`;\n    if (this.metric.description)\n      message = `${message}\\ndescription : ${this.metric.description}`;\n    if (this.metric.unit)\n      message = `${message}\\nunit : ${this.metric.unit}`;\n    if (this.metric.source)\n      message = `${message}\\nsource : ${this.metric.source}`;\n    this.metric.message = message;\n  }\n\n  public update(indametaIem: IndametaItem): void {\n    this.label = indametaIem.label;\n    this.hasError = indametaIem.hasError;\n  }\n\n  public setLatest(value: number, timestamp: Date, locale: string) {\n    if (isNaN(value) || !timestamp)\n      return;\n    this.metric.latestValue = value;\n    this.metric.latestTimestamp = timestamp;\n\n    const dt = DateTime.fromJSDate(timestamp);\n    const formattedTimestamp = dt.setLocale(locale).toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS);\n    this.metric.message = `${this.metric.message}\\nvalue : ${this.metric.latestValue}\\ntimestamp : ${formattedTimestamp}`;\n  }\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'ngx-indasuite-dialog-title',\n  templateUrl: './indasuite-dialog-title.component.html',\n  styleUrls: ['./indasuite-dialog-title.component.scss'],\n})\nexport class IndasuiteDialogTitleComponent {\n  @Input() label: string = '';\n  @Input() actions: TemplateRef<any>;\n}\n","<div class=\"d-flex j-between a-center title-container\">\n  <h2 mat-dialog-title translate>{{ label }}</h2>\n  <ng-template [ngTemplateOutlet]=\"actions\"></ng-template>\n</div>\n<mat-divider></mat-divider>\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { DataStructure } from '../../../../../api';\n\n@Component({\n  templateUrl: './add-data-structure-dialog.component.html'\n})\nexport class AddDataStructureDialogComponent {\n\n  private readonly SAFE_STRING = /^[^<>\"]+$/;\n\n  dataStructureForm: FormGroup<{\n    name: FormControl<string>;\n  }>;\n\n  constructor(\n    public dialogRef: MatDialogRef<AddDataStructureDialogComponent>\n  ) {\n    this.dataStructureForm = new FormGroup({\n      name: new FormControl(null, [\n        Validators.required,\n        Validators.minLength(1),\n        Validators.maxLength(250),\n        Validators.pattern(this.SAFE_STRING)\n      ])\n    });\n  }\n\n  public submit() {\n    if (!this.dataStructureForm.valid)\n      return;\n    const struct: DataStructure = {\n      id: null,\n      name: this.dataStructureForm.value.name\n    };\n    this.dialogRef.close(struct);\n  }\n\n}\n","<ngx-indasuite-dialog-title label=\"AddDataStructureDialogComponent.title\"></ngx-indasuite-dialog-title>\n\n<form [formGroup]=\"dataStructureForm\"\n      (ngSubmit)=\"submit()\"\n      class=\"d-flex flex-column\"\n      autocomplete=\"off\">\n  <div>\n    <mat-form-field appearance=\"outline\">\n      <mat-label>{{'AddDataStructureDialogComponent.name' | translate}}</mat-label>\n      <input matInput\n             type=\"text\"\n             formControlName=\"name\" />\n    </mat-form-field>\n  </div>\n\n  <div class=\"mt-2\"\n       matDialogActions>\n    <button mat-raised-button\n            type=\"button\"\n            (click)=\"dialogRef.close()\"\n            class=\"mr-2\">\n      {{'AddDataStructureDialogComponent.cancel' | translate}}\n    </button>\n    <button mat-raised-button\n            type=\"submit\"\n            color=\"primary\"\n            [disabled]=\"!dataStructureForm.valid\">\n      {{'AddDataStructureDialogComponent.add' | translate}}\n    </button>\n  </div>\n</form>\n","import { Component, Inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { IndametaItem, Type } from '../../../../../api';\n\n@Component({\n  templateUrl: './add-item-dialog.component.html'\n})\nexport class AddItemDialogComponent {\n\n  public types: Type[] = [];\n\n  public newItemForm = this.fb.group({\n    type: this.fb.control<Type>(null, Validators.required)\n  });\n\n  constructor(\n    public dialogRef: MatDialogRef<AddItemDialogComponent>,\n    private fb: FormBuilder,\n    @Inject(MAT_DIALOG_DATA) data: { types: Type[] }\n  ) {\n    this.types = data.types;\n    if (this.types.length > 0) {\n      this.newItemForm.controls.type.setValue(this.types[0]);\n    }\n  }\n\n  public submit(): void {\n    if (!this.newItemForm.valid)\n      return;\n\n    const item: Partial<IndametaItem> = {\n      typeId: this.newItemForm.value.type.id\n    };\n    this.dialogRef.close(item);\n  }\n}\n","<ngx-indasuite-dialog-title label=\"AddItemDialogComponent.title\"></ngx-indasuite-dialog-title>\n\n<form [formGroup]=\"newItemForm\"\n      (ngSubmit)=\"submit()\"\n      autocomplete=\"off\"\n      class=\"d-flex flex-column\">\n\n  <mat-form-field appearance=\"outline\">\n    <mat-label translate>AddItemDialogComponent.type</mat-label>\n    <mat-select formControlName=\"type\"\n                [placeholder]=\"'AddItemDialogComponent.no_types' | translate\">\n      <mat-select-trigger *ngIf=\"newItemForm.value.type\">\n        <mat-icon class=\"va-middle mr-1\">\n          {{newItemForm.value.type?.isTypeMetric ? 'pin': 'folder'}}\n        </mat-icon>\n        {{newItemForm.value.type.name}}\n      </mat-select-trigger>\n      <mat-option *ngFor=\"let type of types\"\n                  [value]=\"type\">\n        <mat-icon>\n          {{type.isTypeMetric ? 'pin': 'folder'}}\n        </mat-icon>\n        {{type.name}}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <mat-dialog-actions>\n    <button mat-raised-button\n            type=\"button\"\n            (click)=\"dialogRef.close()\">\n      {{'AddItemDialogComponent.cancel' | translate}}\n    </button>\n    <button mat-raised-button\n            [disabled]=\"!newItemForm.valid\"\n            color=\"primary\"\n            type=\"submit\">\n      {{'AddItemDialogComponent.add' | translate}}\n    </button>\n  </mat-dialog-actions>\n</form>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { IndametaItem } from '../../../../../api';\n\n@Component({\n  templateUrl: './delete-item-dialog.component.html'\n})\nexport class DeleteItemDialogComponent {\n\n  public item: IndametaItem;\n\n  constructor(\n    public dialogRef: MatDialogRef<DeleteItemDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) data: { item: IndametaItem }\n  ) {\n    this.item = data.item;\n  }\n\n}\n","<ngx-indasuite-dialog-title label=\"DeleteItemDialogComponent.title\"></ngx-indasuite-dialog-title>\n\n<p translate\n   [translateParams]=\"{name: item.label ?? ''}\">\n  DeleteItemDialogComponent.text{{item.metric ? '_metric' : ''}}\n</p>\n<p translate>DeleteItemDialogComponent.text_confirm</p>\n\n<mat-form-field appearance=\"outline\"\n                class=\"w-100\">\n  <input #input\n         (keydown.enter)=\"validate._elementRef.nativeElement.click()\"\n         matInput />\n</mat-form-field>\n\n<mat-dialog-actions>\n  <button mat-raised-button\n          (click)=\"dialogRef.close(false)\">\n    {{'DeleteItemDialogComponent.cancel' | translate}}\n  </button>\n  <button #validate\n          mat-raised-button\n          color=\"primary\"\n          [disabled]=\"input.value !== 'delete'\"\n          (click)=\"dialogRef.close(true)\">\n    {{'DeleteItemDialogComponent.validate' | translate}}\n  </button>\n</mat-dialog-actions>\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'ngx-indasuite-loading-spinner',\n  templateUrl: './loading-spinner.component.html',\n  styleUrls: ['./loading-spinner.component.scss'],\n})\nexport class IndasuiteLoadingSpinnerComponent {}\n","<div class=\"loading-shade\">\n  <mat-spinner></mat-spinner>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-indasuite-empty-state',\n  templateUrl: './empty-state.component.html',\n  styleUrls: ['./empty-state.component.scss'],\n})\nexport class IndasuiteEmptyStateComponent {\n  @Input() icon: string;\n  @Input() text: string;\n}\n","<div class=\"empty-state\">\n  <mat-icon> {{ icon }} </mat-icon>\n  <span translate class=\"mat-body-1\">{{ text }}</span>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IndametaItemMetric } from '../../../api';\nimport { TreeItem } from '../models';\n\n@Pipe({\n  name: 'metricInArray'\n})\nexport class MetricInArrayPipe implements PipeTransform {\n\n  transform(metrics: IndametaItemMetric[], item: TreeItem): boolean {\n    return metrics.some(m => m.id === item.metric.id);\n  }\n\n}\n","import { Component, Input, EventEmitter, Output, OnInit } from '@angular/core';\nimport { DataStructure, IndametaItemMetric } from '../../../../../api';\nimport { TreeDisplay, TreeItem } from '../../../models';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\n\n@Component({\n  selector: 'ngx-indasuite-tree-display',\n  templateUrl: './tree-display.component.html',\n  styleUrls: ['./tree-display.component.scss']\n})\nexport class TreeDisplayComponent implements OnInit {\n\n  @Input() dataStructures: DataStructure[];\n  @Input() currentStructure: DataStructure;\n  @Input() hasTypes: boolean;\n  @Input() displayTree: TreeItem[] = [];\n  @Input() selectedItem: TreeItem;\n  @Input() treeDisplayMode = TreeDisplay.ReadOnly;\n  @Input() selectedMetrics: IndametaItemMetric[] = [];\n  @Input() maxPage: number = 0;\n  @Input() isTreeLoading: boolean = true;\n  @Input() canDelete: boolean = true;\n  @Input() datasource: string;\n  @Input() isInModal: boolean = false;\n  @Input() height: number;\n  @Input() hasHeader: boolean = false;\n\n  @Output() addItem = new EventEmitter<TreeItem>();\n  @Output() addDataStructure = new EventEmitter<void>();\n  @Output() currentStructureChange = new EventEmitter<DataStructure>();\n  @Output() deleteItem = new EventEmitter<TreeItem>();\n  @Output() getItemChildren = new EventEmitter<TreeItem>();\n  @Output() removeItemChildren = new EventEmitter<TreeItem>();\n  @Output() selectItem = new EventEmitter<TreeItem>();\n  @Output() openSettings = new EventEmitter<void>();\n  @Output() toggleSelectMetric = new EventEmitter<IndametaItemMetric>();\n  @Output() searchMetrics = new EventEmitter<string>();\n  @Output() turnSearchModeOff = new EventEmitter();\n  @Output() changePage = new EventEmitter<{ metricSearch: string, currentPage: number }>();\n\n  public TreeDisplay = TreeDisplay;\n  public metricSearch: string = '';\n  public currentPage: number = 0;\n  public currentStructureName: string = \"\";\n\n  private searchChanged: Subject<string> = new Subject<string>();\n  private treeDisplayModeSave: TreeDisplay;\n\n  constructor() {\n    this.searchChanged.pipe(\n      debounceTime(750),\n      distinctUntilChanged())\n      .subscribe(text => this.searchMetrics.emit(text));\n  }\n\n  public ngOnInit(): void {\n    // isTreeLoading to true before OnInit to hide the <ngx-indasuite-empty-state> component\n    this.isTreeLoading = false;\n    // we set it to false right after we get all the data of inputs\n    this.treeDisplayModeSave = this.treeDisplayMode;\n\n    if (this.treeDisplayMode === TreeDisplay.Template)\n      this.currentStructureName = this.currentStructure.name ?? this.dataStructures[0].name ?? \"\";\n  }\n\n  public updateCurrentStructure(structure: DataStructure) {\n    this.currentStructure = structure;\n    this.currentStructureChange.emit(structure);\n    this.treeDisplayMode = this.treeDisplayModeSave;\n    this.metricSearch = '';\n  }\n\n  public loadNodeChildren(item: TreeItem): void {\n    item.properties.expanded = !item.properties.expanded;\n    item.properties.loading = item.properties.expanded && item.children.length <= 0;\n\n    item.properties.expanded ? this.getItemChildren.emit(item) : this.removeItemChildren.emit(item);\n  }\n\n  public onSelectItem(item: TreeItem) {\n    if (this.treeDisplayMode === TreeDisplay.Edit)\n      this.selectItem.emit(item);\n    else if (this.treeDisplayMode === TreeDisplay.SelectMetrics && item.metric && !item.metric.notExisting)\n      this.toggleSelectMetric.emit(item.metric);\n  }\n\n  public selectItemAndLoad(item: TreeItem): void {\n    this.onSelectItem(item);\n\n    if (!item.properties.expanded || this.treeDisplayMode !== TreeDisplay.Edit)\n      this.loadNodeChildren(item);\n  }\n\n  public addItemAndLoad(item: TreeItem): void {\n    this.addItem.emit(item);\n\n    if (!item.properties.expanded)\n      this.loadNodeChildren(item);\n  }\n\n  public switchSearchModeOn(): void {\n    if (this.height) this.height -= 66.25; // search form height\n    this.treeDisplayModeSave = this.treeDisplayMode;\n    this.treeDisplayMode = TreeDisplay.Search;\n  }\n\n  public switchSearchModeOff(): void {\n    if (this.height) this.height += 66.25; // search form height\n    this.turnSearchModeOff.emit();\n    this.treeDisplayMode = this.treeDisplayModeSave;\n    this.currentPage = 0;\n    this.metricSearch = '';\n  }\n\n  public onSearchChange(): void {\n    this.currentPage = 0;\n    this.searchChanged.next(this.metricSearch);\n  }\n\n  public onChangePage(change: number): void {\n    this.currentPage += change;\n    this.changePage.emit({ metricSearch: this.metricSearch, currentPage: this.currentPage });\n  }\n}\n","<div class=\"d-flex flex-g-10 pr-1\"\n     [ngClass]=\"{'readonly': treeDisplayMode === TreeDisplay.Template}\">\n  <ngx-indasuite-loading-spinner *ngIf=\"isTreeLoading\"></ngx-indasuite-loading-spinner>\n  <ng-container *ngIf=\"treeDisplayMode === TreeDisplay.Edit\">\n    <button (click)=\"addDataStructure.emit()\"\n            mat-raised-button\n            color=\"primary\"\n            class=\"my-1\">\n      <mat-icon>add_circle</mat-icon>\n    </button>\n  </ng-container>\n  <mat-form-field *ngIf=\"treeDisplayMode !== TreeDisplay.Template\"\n                  appearance=\"outline\"\n                  class=\"w-100\"\n                  [ngClass]=\"{'w-10': treeDisplayMode === TreeDisplay.Search, 'readonly': !!datasource}\">\n    <mat-select [value]=\"currentStructure\"\n                (valueChange)=\"updateCurrentStructure($event)\"\n                [placeholder]=\"'TreeDisplayComponent.no_trees' | translate\">\n      <mat-option *ngFor=\"let struct of dataStructures\"\n                  [value]=\"struct\">\n        {{struct.name}}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <ng-container>\n    <button *ngIf=\"treeDisplayMode === TreeDisplay.ReadOnly || treeDisplayMode === TreeDisplay.SelectMetrics\"\n            (click)=\"switchSearchModeOn()\"\n            mat-raised-button\n            color=\"primary\"\n            class=\"my-1\">\n      <mat-icon>search</mat-icon>\n    </button>\n    <button *ngIf=\"treeDisplayMode === TreeDisplay.Search\"\n            (click)=\"switchSearchModeOff()\"\n            mat-raised-button\n            color=\"secondary\"\n            class=\"my-1\">\n      <mat-icon color=\"warn\">close</mat-icon>\n    </button>\n\n  </ng-container>\n</div>\n\n<ng-container *ngIf=\"treeDisplayMode === TreeDisplay.Search\">\n  <div class=\"d-flex w-100 j-between a-flex-end flex-g-8 pt-1 pb-2\">\n    <mat-form-field appearance=\"outline\"\n                    class=\"w-100 search_field\">\n      <mat-label translate>IndametaSearchComponent.title</mat-label>\n      <input type=\"text\"\n             matInput\n             (input)=\"onSearchChange()\"\n             [(ngModel)]=\"metricSearch\" />\n    </mat-form-field>\n    <div *ngIf=\"this.maxPage > 0\"\n         class=\"d-flex flex-column a-center pr-1\">\n      {{this.currentPage+1}} / {{this.maxPage+1}}\n      <div class=\"d-flex flex-g-16\">\n        <button mat-button\n                [class.mat-raised-button]=\"currentPage > 0\"\n                color=\"secondary\"\n                [disabled]=\"currentPage <= 0\"\n                class=\"page-selector\"\n                (click)=\"onChangePage(-1)\">\n          <mat-icon>chevron_left</mat-icon>\n        </button>\n        <button mat-button\n                [class.mat-raised-button]=\"currentPage < maxPage\"\n                color=\"secondary\"\n                [disabled]=\"currentPage >= maxPage\"\n                class=\"page-selector\"\n                (click)=\"onChangePage(+1)\">\n          <mat-icon>chevron_right</mat-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n</ng-container>\n\n<ngx-indasuite-empty-state icon=\"highlight_off\"\n                           text=\"TreeDisplayComponent.no_items\"\n                           *ngIf=\"displayTree && displayTree.length <= 0 && !isTreeLoading\">\n</ngx-indasuite-empty-state>\n\n<cdk-virtual-scroll-viewport [ngStyle]=\"{'height.px': height}\"\n                             [ngClass]=\"{\n                               'height-all-mode': treeDisplayMode !== TreeDisplay.Search && treeDisplayMode !== TreeDisplay.Template && !isInModal,\n                               'height-search-mode': treeDisplayMode === TreeDisplay.Search && !isInModal,\n                               'height-template-mode': treeDisplayMode === TreeDisplay.Template\n                             }\"\n                             itemSize=\"49\">\n  <ng-container *cdkVirtualFor=\"let item of displayTree; let last = last;\">\n    <ng-container *ngIf=\"item.isRoot\"\n                  [ngTemplateOutlet]=\"root\"\n                  [ngTemplateOutletContext]=\"{$implicit: item}\">\n    </ng-container>\n    <ng-container *ngIf=\"!item.isRoot\"\n                  [ngTemplateOutlet]=\"item.isTypeMetric ? metric : folder\"\n                  [ngTemplateOutletContext]=\"{$implicit: item}\">\n    </ng-container>\n    <mat-divider *ngIf=\"!last\"></mat-divider>\n  </ng-container>\n</cdk-virtual-scroll-viewport>\n<ng-template #root\n             let-root>\n  <div class=\"mat-tree-node d-flex j-between a-center\"\n       [ngClass]=\"{'readonly': treeDisplayMode === TreeDisplay.Template}\"\n       [class.item-selected]=\"!selectedItem\">\n    <div class=\"d-flex a-center\">\n      <mat-icon class=\"mat-icon-rtl-mirror mx-2\">\n        account_tree\n      </mat-icon>\n      <span class=\"pointer\"\n            (click)=\"openSettings.emit()\">\n        {{root.label}}\n      </span>\n    </div>\n    <div>\n      <button mat-icon-button\n              (click)=\"addItem.emit()\"\n              [matTooltip]=\"'TreeDisplayComponent.add_root' | translate\"\n              matTooltipPosition=\"above\">\n        <mat-icon>add</mat-icon>\n      </button>\n      <button mat-icon-button\n              (click)=\"openSettings.emit()\"\n              [matTooltip]=\"'TreeDisplayComponent.settings' | translate\"\n              matTooltipPosition=\"above\">\n        <mat-icon>settings</mat-icon>\n      </button>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #folder\n             let-item>\n  <div class=\"mat-tree-node d-flex j-between a-center\"\n       [ngClass]=\"{'readonly': treeDisplayMode === TreeDisplay.Template}\"\n       [class.item-selected]=\"selectedItem && item.id===selectedItem.id\"\n       [style.padding-left.px]=\"14 * item.properties.depth\">\n    <div class=\"d-flex a-center\">\n      <button mat-icon-button\n              (click)=\"loadNodeChildren(item)\">\n        <mat-spinner *ngIf=\"item.properties.loading\"\n                     diameter=\"32\"\n                     class=\"mat-folder-spinner\">\n        </mat-spinner>\n        <mat-icon class=\"mat-icon-rtl-mirror\">\n          {{item.properties.expanded ? 'folder_open' : 'folder'}}\n        </mat-icon>\n      </button>\n      <span class=\"pointer\"\n            (click)=\"selectItemAndLoad(item)\">\n        {{item.label}}\n      </span>\n    </div>\n    <div *ngIf=\"treeDisplayMode === TreeDisplay.Edit\">\n      <button mat-icon-button\n              (click)=\"addItemAndLoad(item)\"\n              [matTooltip]=\"'TreeDisplayComponent.add_item' | translate:{name: item.label}\"\n              matTooltipPosition=\"above\">\n        <mat-icon>add</mat-icon>\n      </button>\n      <button mat-icon-button\n              (click)=\"deleteItem.emit(item)\"\n              [matTooltip]=\"'TreeDisplayComponent.delete_children' | translate:{name: item.label}\"\n              matTooltipPosition=\"above\"\n              color=\"warn\">\n        <mat-icon>delete_forever</mat-icon>\n      </button>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #metric\n             let-item>\n  <div class=\"mat-tree-node d-flex j-between a-center\"\n       [ngClass]=\"{'readonly': treeDisplayMode === TreeDisplay.Template}\"\n       [class.item-selected]=\"selectedItem && item.id===selectedItem.id\"\n       [style.padding-left.px]=\"14 * item.properties.depth\">\n    <div class=\"d-flex a-center\">\n      <ng-container [ngSwitch]=\"true\">\n        <mat-icon *ngSwitchCase=\"treeDisplayMode === TreeDisplay.Template && item.hasTemplateCreated\"\n                  [matTooltip]=\"item.metric?.message\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  class=\"mat-icon-rtl-mirror mx-2\"\n                  color=\"primary\">\n          add\n        </mat-icon>\n        <mat-icon *ngSwitchCase=\"treeDisplayMode === TreeDisplay.Template  && !item.hasTemplateCreated\"\n                  [matTooltip]=\"item.metric?.message\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  class=\"mat-icon-rtl-mirror mx-2\"\n                  color=\"accent\">\n          upgrade\n        </mat-icon>\n        <mat-spinner *ngSwitchCase=\"item.metric.loading && treeDisplayMode !== TreeDisplay.Template\"\n                     class=\"mx-2\"\n                     diameter=\"24\">\n        </mat-spinner>\n        <mat-icon *ngSwitchCase=\"item.metric.latestTimestamp && !item.hasError && treeDisplayMode !== TreeDisplay.Template && !item.formula\"\n                  [matTooltip]=\"item.metric?.message\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  class=\"mat-icon-rtl-mirror mx-2\"\n                  color=\"primary\">\n          info\n        </mat-icon>\n        <mat-icon *ngSwitchCase=\"!!item.formula && !item.hasError\"\n                  [matTooltip]=\"item.metric?.message\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  class=\"mat-icon-rtl-mirror mx-2\"\n                  color=\"primary\"\n                  svgIcon=\"formula_template\">\n        </mat-icon>\n        <mat-icon *ngSwitchCase=\"item.metric.notExisting && !item.formula\"\n                  [matTooltip]=\"'TreeDisplayComponent.not_exist_metric' | translate:{name: item.label}\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  class=\"mat-icon-rtl-mirror mx-2\"\n                  color=\"warn\">\n          warning\n        </mat-icon>\n        <mat-icon *ngSwitchCase=\"item.metric.notExisting && !!item.formula && treeDisplayMode !== TreeDisplay.Template\"\n                  [matTooltip]=\"'TreeDisplayComponent.formula_wait' | translate\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  class=\"mat-icon-rtl-mirror mx-2\"\n                  color=\"warn\">\n          hourglass_bottom\n        </mat-icon>\n        <mat-icon *ngSwitchDefault\n                  [matTooltip]=\"item.metric?.message\"\n                  matTooltipPosition=\"above\"\n                  matTooltipClass=\"tooltip-big-linebreaks\"\n                  color=\"accent\"\n                  class=\"mat-icon-rtl-mirror mx-2\">\n          warning\n        </mat-icon>\n      </ng-container>\n      <span [class.pointer]=\"treeDisplayMode !== TreeDisplay.ReadOnly\"\n            (click)=\"onSelectItem(item)\">\n        {{item.label | translate}}\n      </span>\n    </div>\n    <button *ngIf=\"treeDisplayMode === TreeDisplay.Edit\"\n            mat-icon-button\n            (click)=\"deleteItem.emit(item)\"\n            [matTooltip]=\"'TreeDisplayComponent.delete' | translate:{name: item.label}\"\n            matTooltipPosition=\"above\"\n            color=\"warn\">\n      <mat-icon>delete_forever</mat-icon>\n    </button>\n    <button *ngIf=\"(treeDisplayMode === TreeDisplay.SelectMetrics || treeDisplayMode === TreeDisplay.Search) && !item.metric.notExisting\"\n            mat-icon-button\n            (click)=\"toggleSelectMetric.emit(item.metric)\">\n      <mat-icon *ngIf=\"!(selectedMetrics | metricInArray:item) || !canDelete; else remove\">\n        add_circle_outline\n      </mat-icon>\n      <ng-template #remove>\n        <mat-icon color=\"warn\">\n          remove_circle_outline\n        </mat-icon>\n      </ng-template>\n    </button>\n  </div>\n\n  <span *ngIf=\"treeDisplayMode === TreeDisplay.Template && item.formula\"\n        class=\"formula\">\n    Formula : {{ item.formula }}\n  </span>\n\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Output, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DataStructure, FormatTyped, IndabaService, IndametaItem, IndametaItemMetric, Indametav2Service, PaginationModel, SearchableProperty, Type, TypeMetric, UpdateIndaMetaItem } from '../../../../api';\nimport { forkJoin, Observable, Subscription } from 'rxjs';\nimport { filter, map, switchMap, tap } from 'rxjs/operators';\nimport { TreeDisplay, TreeItem, TreeItemProperties } from '../../models';\nimport { AddDataStructureDialogComponent, AddItemDialogComponent, DeleteItemDialogComponent } from '../dialogs';\n\n@Component({\n  selector: 'ngx-indasuite-indameta-tree',\n  templateUrl: './indameta-tree.component.html'\n})\nexport class IndametaTreeComponent implements OnChanges, OnInit, OnDestroy {\n\n  @Input() treeDisplayMode = TreeDisplay.ReadOnly;\n  @Input() selectedMetrics: IndametaItemMetric[] = [];\n  @Input() allTypes: Type[] = [];\n  @Input() refreshTree: boolean = false;\n  @Input() canDelete: boolean = true;\n  @Input() datasource: string;\n  @Input() isInModal: boolean = false;\n  @Input() hasHeader: boolean = false;\n  @Input() height: number;\n\n  @Output() currentStructureChange = new EventEmitter<DataStructure>();\n  @Output() currentTypeChange = new EventEmitter<Type>();\n  @Output() currentItemChange = new EventEmitter<IndametaItem>();\n  @Output() allTypesChange = new EventEmitter<Type[]>();\n  @Output() selectedMetricsChange = new EventEmitter<{ metric: IndametaItemMetric, selected: boolean }>();\n  @Output() selectMetric = new EventEmitter<IndametaItemMetric>();\n  @Output() openSettings = new EventEmitter<void>();\n\n  public dataStructures: DataStructure[] = null;\n  public currentStructure: DataStructure;\n\n  public currentType: Type;\n\n  public allItems: IndametaItem[] = [];\n\n  public displayTree: TreeItem[] = null;\n  public selectedTreeItem: TreeItem;\n  public currentItem: IndametaItem;\n  public isTreeLoading: boolean = false;\n  public maxPage: number = 0;\n\n  public itemMapping = new Map<IndametaItem, TreeItem>();\n\n  private updateItemSubscription: Subscription;\n  private updateTypeSubscription: Subscription;\n  private reloadTreeSubscription: Subscription;\n  private deleteDataStructureSubscription: Subscription;\n  private updateDataStructureSubscription: Subscription;\n  private lastSearch: string = '';\n  private paginationInfos: Map<number, PaginationModel> = new Map<number, PaginationModel>();\n\n  constructor(\n    private indametaService: Indametav2Service,\n    private indaba: IndabaService,\n    private translate: TranslateService,\n    private dialog: MatDialog) { }\n\n  public ngOnInit(): void {\n    this.indametaService\n      .getDataStructures()\n      .pipe(\n        filter(structures => structures?.length > 0),\n        tap(structures => {\n          this.dataStructures = structures;\n          this.currentStructure = this.dataStructures[0];\n          this.currentStructureChange.emit(this.currentStructure);\n        }),\n        switchMap(() => this.getTypesAndTree())\n      )\n      .subscribe(resp => {\n        this.initDisplayTree(resp.types, resp.tree)\n      });\n\n    this.reloadTreeSubscription = this.indametaService.reloadTree$\n      .pipe(\n        filter(() => !!this.currentStructure),\n        switchMap(() => this.getTypesAndTree())\n      )\n      .subscribe(resp => this.initDisplayTree(resp.types, resp.tree));\n\n    this.updateItemSubscription = this.indametaService.itemUpdated()\n      .subscribe(updated => {\n        if (!updated)\n          return;\n\n        const index = this.allItems.findIndex(item => item.id === updated.id);\n        if (index === -1) {\n          this.addChildrenToTreeParent([updated]);\n          this.currentItem = updated;\n          this.selectedTreeItem = this.itemMapping.get(updated);\n          this.currentItemChange.emit(updated);\n        }\n        else {\n          const item = this.allItems[index];\n          UpdateIndaMetaItem(item, updated);\n          const treeItem = this.itemMapping.get(item);\n          treeItem.update(updated);\n          this.displayTree = [...this.displayTree];\n        }\n      });\n\n    this.updateTypeSubscription = this.indametaService.typeUpdated()\n      .subscribe(updated => {\n        if (!updated)\n          return;\n        const index = this.allTypes.findIndex(type => type.id === updated.id);\n        if (index >= 0)\n          this.allTypes[index] = updated;\n        else\n          this.allTypes.push(updated);\n        this.allTypesChange.emit(this.allTypes);\n      });\n\n    this.deleteDataStructureSubscription = this.indametaService.dataStructureDeleted()\n      .pipe(filter(structure => !!structure))\n      .subscribe(structure => this.deleteDataStructure(structure));\n\n    this.updateDataStructureSubscription = this.indametaService.DataStructureUpdated()\n      .pipe(filter(structure => !!structure))\n      .subscribe(structure => {\n        if (this.treeDisplayMode === TreeDisplay.Edit) {\n          this.displayTree[0].label = structure.name;\n        }\n      })\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.refreshTree && changes.refreshTree.currentValue) {\n      // reset tree when we receive the order to\n      this.resetTree();\n      this.refreshTree = false;\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.updateItemSubscription.unsubscribe();\n    this.updateTypeSubscription.unsubscribe();\n    this.reloadTreeSubscription.unsubscribe();\n    this.deleteDataStructureSubscription.unsubscribe();\n    this.updateDataStructureSubscription.unsubscribe();\n  }\n\n  public addDataStructure(): void {\n    this.dialog\n      .open(AddDataStructureDialogComponent)\n      .afterClosed()\n      .pipe(\n        filter((dataStructure: DataStructure) => !!dataStructure),\n        switchMap(dataStructure => this.indametaService.addDataStructure(dataStructure)),\n        switchMap(added => this.indametaService.getDataStructures()\n          .pipe(\n            map((all) => ({\n              all,\n              added\n            }))\n          )\n        )\n      )\n      .subscribe(resp => {\n        this.dataStructures = resp.all;\n        const added = this.dataStructures.find(ds => ds.id === resp.added.id);\n        this.onStructureChange(added);\n      });\n  }\n\n  public deleteDataStructure(structure: DataStructure): void {\n    const index = this.dataStructures.indexOf(structure);\n    this.dataStructures.splice(index, 1);\n    this.onStructureChange(this.dataStructures[0] ?? null);\n  }\n\n  public onStructureChange(structure: DataStructure): void {\n    this.currentStructure = structure;\n    this.currentStructureChange.emit(this.currentStructure);\n\n    if (structure)\n      this.getTypesAndTree()\n        .subscribe(resp => this.initDisplayTree(resp.types, resp.tree));\n    else\n      this.initDisplayTree([], []);\n  }\n\n  public addItem(parent: TreeItem): void {\n    this.dialog\n      .open(AddItemDialogComponent, { data: { types: this.allTypes } })\n      .afterClosed()\n      .pipe(\n        filter((item: IndametaItem) => !!item),\n      )\n      .subscribe(item => {\n        this.currentType = this.allTypes.find(st => st.id === item.typeId);\n        this.currentTypeChange.emit(this.currentType);\n        this.currentItem = item;\n        this.selectedTreeItem = parent;\n        this.currentItemChange.emit(this.currentItem);\n        if (parent)\n          this.currentItem.parentId = parent.id;\n      });\n  }\n\n  public getItemChildren(treeItem: TreeItem): void {\n    const path = this.getItemPath(treeItem);\n    if (treeItem.children.length <= 0) {\n      this.indametaService\n        .getTreeNode(this.currentStructure, path)\n        .pipe(\n          tap(() => treeItem.properties.loading = false),\n          filter(children => children.length > 0)\n        )\n        .subscribe(children => this.addChildrenToTreeParent(children));\n      return;\n    }\n    this.addChildrenBackToTreeParent(treeItem);\n  }\n\n  public removeItemChildren(treeItem: TreeItem): void {\n    if (treeItem.children.length <= 0)\n      return;\n\n    for (const child of treeItem.children) {\n      child.properties.expanded = false;\n      const index = this.displayTree.indexOf(child);\n      if (index >= 0)\n        this.displayTree.splice(index, 1);\n      this.removeItemChildren(child);\n    }\n    this.displayTree = [...this.displayTree];\n  }\n\n  public deleteItem(treeItem: TreeItem): void {\n    const item = this.allItems.find(it => it.id === treeItem.id);\n    this.dialog\n      .open(DeleteItemDialogComponent, { data: { item } })\n      .afterClosed()\n      .pipe(\n        filter((result: boolean) => result),\n        switchMap(() => this.indametaService.deleteItem(this.currentStructure, item))\n      )\n      .subscribe(() => {\n        let index = this.allItems.indexOf(item);\n        this.allItems.splice(index, 1);\n        this.itemMapping.delete(item);\n        if (treeItem.parent) {\n          index = treeItem.parent.children.indexOf(treeItem);\n          treeItem.parent.children.splice(index, 1);\n        }\n        this.removeItemChildren(treeItem);\n        index = this.displayTree.indexOf(treeItem);\n        this.displayTree.splice(index, 1);\n\n        this.currentItem = null;\n        this.currentItemChange.emit(null);\n        this.selectedTreeItem = null;\n\n        this.displayTree = [...this.displayTree];\n      });\n  }\n\n  public selectIndametaItem(treeItem: TreeItem): void {\n    const item = this.allItems.find(it => it.id === treeItem.id);\n    this.currentType = this.allTypes.find(type => type.id === item.typeId);\n    this.currentTypeChange.emit(this.currentType);\n    this.currentItem = item;\n    this.selectedTreeItem = treeItem;\n    this.currentItemChange.emit(this.currentItem);\n  }\n\n  public toggleSelectMetric(metric: IndametaItemMetric): void {\n    const index = this.selectedMetrics.findIndex(sm => sm.id === metric.id);\n    let selected: boolean;\n    if (index === -1) {\n      this.selectedMetrics.push(metric);\n      selected = true;\n    }\n    else {\n      this.selectedMetrics.splice(index, 1);\n      selected = false;\n    }\n    this.selectedMetrics = [...this.selectedMetrics];\n    this.selectedMetricsChange.emit({ metric: metric, selected: selected });\n  }\n\n  public onTurnSearchModeOff(): void {\n    this.resetTree();\n  }\n\n  public onChangePage(params: { currentPage: number, metricSearch: string }): void {\n    this.onSearchMetrics(params.metricSearch, params.currentPage);\n  }\n\n  public onSearchMetrics(metricSearch: string, currentPage: number = 0): void {\n    if (metricSearch.trim() === '') {\n      this.resetTree();\n      return;\n    }\n\n    this.isTreeLoading = true;\n    const query: Map<SearchableProperty, FormatTyped> = new Map<SearchableProperty, FormatTyped>();\n    query.set(\n      {\n        property: {\n          name: 'name',\n          format: 'Text'\n        },\n        typeId: null,\n        displayName: 'name',\n        isTypeMetric: true,\n        searchableType: 'Label'\n      },\n      metricSearch\n    );\n\n    if (metricSearch !== this.lastSearch) {\n      this.paginationInfos.clear();\n    }\n\n    this.indametaService.searchItems(this.currentStructure, query, 50, this.paginationInfos?.get(currentPage - 1) || null)\n      .pipe()\n      .subscribe((results) => {\n        if (!results) {\n          this.maxPage = 0;\n          return;\n        }\n\n        let data = results.data;\n        if (!data) {\n          this.maxPage = 0;\n          return;\n        }\n\n        this.paginationInfos.set(currentPage, results.paginationInfo);\n        this.maxPage = Math.floor(results.paginationInfo?.total / 50);\n\n        const roots: Array<IndametaItem> = [];\n        const children: Array<IndametaItem> = [];\n        const included: Array<string> = [];\n        for (const d of data) {\n          if (d.parents) {\n            const parentsGuids: string[] = Object.keys(d.parents);\n            for (const guid of parentsGuids) {\n              const c = d.parents[guid];\n              for (const parent of c) {\n                if (included.includes(parent.id.toString()))\n                  continue;\n                else\n                  included.push(parent.id.toString())\n\n                if (parent.parentid)\n                  children.push({\n                    id: parent.id.toString(),\n                    label: parent.label.toString(),\n                    parentId: parent.parentid.toString(),\n                    typeId: guid,\n                    dataStructureId: this.currentStructure.toString(),\n                    hasError: false,\n                    metric: null,\n                    options: null,\n                    parents: null,\n                    properties: {\n                      depth: 1,\n                      expanded: true,\n                      loading: false\n                    }\n                  });\n                else\n                  roots.push({\n                    id: parent.id.toString(),\n                    label: parent.label.toString(),\n                    dataStructureId: this.currentStructure.toString(),\n                    hasError: false,\n                    metric: null,\n                    options: null,\n                    parentId: null,\n                    parents: null,\n                    properties: {\n                      depth: 0,\n                      expanded: true,\n                      loading: false\n                    },\n                    typeId: guid\n                  } as IndametaItem);\n              }\n            }\n          }\n        }\n\n        this.initDisplayTree(this.allTypes, roots);\n        // we use forEach in order to respect the depth property\n        // sending all data in one call create elements with the same depth\n        children.forEach(c => this.addChildrenToTreeParent([c]));\n        data.forEach(d => this.addChildrenToTreeParent([d]));\n        this.isTreeLoading = false;\n        this.lastSearch = metricSearch;\n      });\n  }\n\n  public onOpenSettings(): void {\n    this.openSettings.emit();\n    this.currentItem = null;\n    this.selectedTreeItem = null;\n    this.currentItemChange.emit(this.currentItem);\n  }\n\n  private getItemPath(item: TreeItem): string[] {\n    const ids: string[] = [item.id];\n    let pathItem = item;\n    while (pathItem.parent) {\n      ids.push(pathItem.parent.id);\n      pathItem = pathItem.parent;\n    }\n    return ids.reverse();\n  }\n\n  private getTypesAndTree(): Observable<{\n    types: Type[];\n    tree: IndametaItem[];\n  }> {\n    return forkJoin({\n      types: this.indametaService.getDataStructureTypes(this.currentStructure),\n      tree: this.indametaService.getTreePrimaryNode(this.currentStructure)\n    });\n  }\n\n  private initDisplayTree(types: Type[], items: IndametaItem[]): void {\n    this.allTypes = types;\n    this.allTypesChange.emit(this.allTypes);\n    this.currentType = null;\n    this.currentItem = null;\n    this.selectedTreeItem = null;\n    this.allItems = [];\n    this.displayTree = [];\n    if (this.currentStructure && this.treeDisplayMode === TreeDisplay.Edit) {\n      const root: TreeItem = {\n        label: this.currentStructure.name,\n        properties: {\n          depth: 0\n        } as TreeItemProperties,\n        children: [],\n        isRoot: true\n      } as TreeItem;\n      this.displayTree.push(root);\n    }\n    this.itemMapping.clear();\n    this.addChildrenToTreeParent(items);\n  }\n\n  private addChildrenToTreeParent(items: IndametaItem[]): void {\n    if (items.length <= 0)\n      return;\n\n    this.allItems.push(...items);\n\n    const parentId = items[0].parentId;\n    let parentTreeItem: TreeItem = null;\n    let itemDepth = this.treeDisplayMode === TreeDisplay.Edit ? 1 : 0; // in edit mode, there is a root at level 0\n\n    if (parentId) {\n      const parentItem = this.allItems.find(item => item.id === parentId);\n      parentTreeItem = this.itemMapping.get(parentItem);\n      itemDepth = parentTreeItem.properties.depth + 1;\n    }\n\n    const metricsItems: IndametaItem[] = [];\n    const treeItems: TreeItem[] = [];\n\n    for (const item of items) {\n      const type = this.allTypes.find(type => type.id === item.typeId);\n\n      const treeItem = new TreeItem(item, parentTreeItem, type, itemDepth);\n      treeItems.push(treeItem);\n\n      if (type.isTypeMetric && !treeItem.metric.notExisting)\n        metricsItems.push(item);\n\n      this.itemMapping.set(item, treeItem);\n    }\n\n    if (parentTreeItem) {\n      if (parentTreeItem.children.length === 0) {\n        const parentIndex = this.displayTree.indexOf(parentTreeItem);\n        this.displayTree.splice(parentIndex + 1, 0, ...treeItems);\n      } else {\n        let lastChild = parentTreeItem;\n        while (lastChild.children.length > 0) {\n          lastChild = lastChild.children.slice(-1)[0];\n        }\n        const lastChildIndex = this.displayTree.indexOf(lastChild);\n        this.displayTree.splice(lastChildIndex + 1, 0, ...treeItems);\n      }\n      parentTreeItem.children.push(...treeItems);\n      parentTreeItem.properties.loading = false;\n    } else {\n      this.displayTree.push(...treeItems);\n    }\n\n    if (metricsItems.length > 0) {\n      this.getLatests(metricsItems);\n    }\n\n    this.displayTree = [...this.displayTree];\n  }\n\n  private addChildrenBackToTreeParent(parent: TreeItem) {\n    if (parent.children.length <= 0)\n      return;\n\n    const index = this.displayTree.indexOf(parent);\n    this.displayTree.splice(index + 1, 0, ...parent.children);\n    this.displayTree = [...this.displayTree];\n  }\n\n  private getLatests(items: IndametaItem[]): void {\n    const tagsByDatasource = new Map<string, Set<string>>();\n    for (const item of items) {\n      if (!item.metric.datasource)\n        continue;\n      if (!tagsByDatasource.has(item.metric.datasource))\n        tagsByDatasource.set(item.metric.datasource, new Set<string>());\n      tagsByDatasource.get(item.metric.datasource).add(item.metric.name);\n    }\n\n    const observables: Observable<TypeMetric[]>[] = [];\n    for (const [datasource, tags] of tagsByDatasource) {\n      observables.push(\n        this.indaba.getLatestByType([...tags], datasource)\n          .pipe(tap(resp => this.handleMetricsLatest(items, datasource, resp)))\n      );\n\n      forkJoin(observables).subscribe(() => {\n        for (const item of items) {\n          const treeItem = this.itemMapping.get(item);\n          treeItem.metric.loading = false;\n        }\n      });\n    }\n  }\n\n  private handleMetricsLatest(items: IndametaItem[], datasource: string, merics: TypeMetric[]) {\n    for (const metric of merics) {\n      const indaItems = items.filter(item => item.metric.datasource === datasource && item.metric.name === metric.name);\n      const latest = {\n        latestValue: metric.values[0].value as number,\n        latestTimestamp: new Date(metric.values[0].timestamp)\n      };\n      for (const item of indaItems) {\n        const treeItem = this.itemMapping.get(item);\n        treeItem.setLatest(latest.latestValue, latest.latestTimestamp, this.translate.currentLang);\n      }\n    }\n  }\n\n  private resetTree(): void {\n    this.maxPage = 0;\n    this.indametaService.reloadTree$\n      .pipe(\n        filter(() => !!this.currentStructure),\n        switchMap(() => this.getTypesAndTree())\n      )\n      .subscribe(resp => this.initDisplayTree(resp.types, resp.tree));\n  }\n}\n","<ngx-indasuite-tree-display [currentStructure]=\"currentStructure\"\n                            [dataStructures]=\"dataStructures\"\n                            [displayTree]=\"displayTree\"\n                            [selectedItem]=\"selectedTreeItem\"\n                            [hasTypes]=\"allTypes.length > 0\"\n                            [treeDisplayMode]=\"treeDisplayMode\"\n                            [selectedMetrics]=\"selectedMetrics\"\n                            [maxPage]=\"maxPage\"\n                            [isTreeLoading]=\"isTreeLoading\"\n                            [canDelete]=\"canDelete\"\n                            [datasource]=\"datasource\"\n                            [isInModal]=\"isInModal\"\n                            [height]=\"height\"\n                            [hasHeader]=\"hasHeader\"\n                            (addItem)=\"addItem($event)\"\n                            (addDataStructure)=\"addDataStructure()\"\n                            (currentStructureChange)=\"onStructureChange($event)\"\n                            (deleteItem)=\"deleteItem($event)\"\n                            (getItemChildren)=\"getItemChildren($event)\"\n                            (removeItemChildren)=\"removeItemChildren($event)\"\n                            (selectItem)=\"selectIndametaItem($event)\"\n                            (toggleSelectMetric)=\"this.selectMetric.emit($event)\"\n                            (openSettings)=\"onOpenSettings()\"\n                            (searchMetrics)=\"onSearchMetrics($event)\"\n                            (turnSearchModeOff)=\"onTurnSearchModeOff()\"\n                            (changePage)=\"onChangePage($event)\">\n</ngx-indasuite-tree-display>","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'ngx-indasuite-application-card-frame',\n  templateUrl: './application-card-frame.component.html',\n})\nexport class IndasuiteApplicationCardFrameComponent {}\n","<mat-card class=\"mat-elevation-z6 application-card\">\n  <ng-content></ng-content>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport { LanguageElement } from '../models/LanguageElement.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class EnvironmentService {\n  static languageList: Array<LanguageElement> = [\n    {\n      label: 'Français',\n      code: 'fr',\n      flag: '/lib/indasuite-ui/img/flags/fr.png',\n    },\n    {\n      label: 'English',\n      code: 'en',\n      flag: '/lib/indasuite-ui/img/flags/en.png',\n    },\n  ];\n\n  static CustomerLogoUrl = '';\n  static ApplicationLogo = '/lib/indasuite-ui/img/io-base-logo.webp';\n}\n","import { Component } from '@angular/core';\nimport { EnvironmentService } from '../services/environment.service';\n\n@Component({\n  selector: 'ngx-indasuite-application-loading',\n  templateUrl: './application-loading.component.html',\n  styleUrls: ['./application-loading.component.scss'],\n})\nexport class IndasuiteApplicationLoadingComponent {\n  EnvironmentService = EnvironmentService;\n}\n","<div class=\"loading-conainter d-flex j-center a-center flex-column\">\n  <img [src]=\"EnvironmentService.ApplicationLogo\" alt=\"Io-Base logo\" />\n  <div class=\"mt-2\">\n    <mat-spinner [diameter]=\"32\" style=\"margin: 0 auto\"></mat-spinner>\n  </div>\n</div>\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n  selector: '[blockPaste]',\n})\nexport class BlockPasteDirective {\n  @HostListener('paste', ['$event']) blockPaste(e: KeyboardEvent) {\n    e.preventDefault();\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'ngx-indasuite-aggregation-interval-input',\n  templateUrl: './aggregation-interval-input.component.html',\n  styleUrls: ['./aggregation-interval-input.component.scss'],\n})\nexport class IndasuiteAggregationIntervalInput implements OnInit {\n  @Input() interval: string;\n  @Input() hideArrows: boolean = false;\n  @Output() intervalChange = new EventEmitter<string>();\n  @Output() isValidChange = new EventEmitter<boolean>();\n\n  readonly aggregations = ['d', 'h', 'm', 's'];\n\n  aggregationsValue = {};\n\n  aggregationTranslate = {};\n\n  constructor() {\n    this.aggregations.forEach((key) => {\n      this.aggregationsValue[key] = 0;\n      this.aggregationTranslate[key] = `AggregationIntervalInput.${key}`;\n    });\n  }\n\n  ngOnInit(): void {\n    if (!this.interval) return;\n    let intervalString = this.interval;\n    this.aggregations.forEach((key) => {\n      const split = intervalString.split(key);\n      if (split.length === 1) return;\n      this.aggregationsValue[key] = parseInt(split[0]);\n      intervalString = split[1];\n    });\n    this.inputChange();\n  }\n\n  inputChange() {\n    let res = '';\n\n    this.isValidChange.emit(this.isValidValues());\n\n    this.aggregations.forEach((aggregation) => {\n      res = `${res}${this.aggregationsValue[aggregation]}${aggregation}`;\n    });\n    this.intervalChange.emit(res);\n  }\n\n  isValidValues() {\n    return (\n      !Object.values(this.aggregationsValue).every((a) => a === 0) &&\n      Object.values(this.aggregationsValue).findIndex((a: any) => {\n        return a < 0 || isNaN(a) || a === null;\n      }) === -1 &&\n      this.aggregationsValue['h'] < 24 &&\n      this.aggregationsValue['s'] < 60 &&\n      this.aggregationsValue['m'] < 60\n    );\n  }\n}\n","<div class=\"time-container\">\n  <ng-container *ngFor=\"let aggregation of aggregations\">\n    <mat-form-field class=\"input-time mr-2\"\n                    [ngClass]=\"{ 'hide-arrows': hideArrows }\">\n      <input matInput\n             type=\"number\"\n             [(ngModel)]=\"aggregationsValue[aggregation]\"\n             (input)=\"inputChange()\"\n             [min]=\"0\" />\n      <span matSuffix>{{ aggregationTranslate[aggregation] | translate }}</span>\n    </mat-form-field>\n  </ng-container>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport {\n  HoltWinters,\n  IndabaAggregationType,\n  RequestAggregation,\n} from '../../../api';\n\n@Component({\n  selector: 'ngx-indasuite-aggregation-select',\n  templateUrl: './aggregation-select.component.html',\n  styleUrls: ['./aggregation-select.component.scss']\n})\nexport class IndasuiteAggregationSelectComponent implements OnInit {\n  @Input() firstFunctionsAvailable: number = -1;\n\n  ngOnInit(): void {\n    if (this.firstFunctionsAvailable > 0)\n      this.aggregations = this.aggregations.slice(0, this.firstFunctionsAvailable);\n\n    if (!this.options) return;\n\n    if (this.options === 'none' || this.options === 'auto') {\n      this.selectedOption = this.options;\n      return;\n    }\n\n    this.selectedOption = this.options.functions[0].function;\n    this.interval = this.options.interval;\n  }\n\n  selectedOption: IndabaAggregationType | 'none' | 'auto' = 'none';\n  interval = '1d';\n\n  aggregations: Array<{\n    label: string;\n    value: IndabaAggregationType | 'none' | 'auto';\n  }> = [\n      { label: 'IndabaAggregationType.min', value: 'min' },\n      { label: 'IndabaAggregationType.max', value: 'max' },\n      { label: 'IndabaAggregationType.avg', value: 'avg' },\n      { label: 'IndabaAggregationType.count', value: 'count' },\n      { label: 'IndabaAggregationType.sum', value: 'sum' },\n      { label: 'IndabaAggregationType.median', value: 'median' },\n      { label: 'IndabaAggregationType.stdDev', value: 'stdDev' },\n      { label: 'IndabaAggregationType.first', value: 'first' },\n      { label: 'IndabaAggregationType.last', value: 'last' },\n      { label: 'IndabaAggregationType.none', value: 'none' },\n      { label: 'IndabaAggregationType.auto', value: 'auto' },\n      { label: 'IndabaAggregationType.holtWinters', value: 'holtWinters' }\n    ];\n\n  private readonly holtWintersDefault: HoltWinters = {\n    predictedValuesNumber: 50,\n    seasonalPattern: 1,\n    withFit: false\n  } as const;\n\n  @Output() optionsChange = new EventEmitter<RequestAggregation>();\n  @Output() isValidChange = new EventEmitter<boolean>();\n\n  @Input() options: RequestAggregation | 'auto' | 'none' = {\n    functions: [],\n    interval: this.interval,\n  };\n\n  @Input() hideInput = false;\n\n  selectionChange(event: MatSelectChange) {\n    this.selectedOption = event.value;\n    this.updateValue();\n  }\n\n  private updateValue() {\n    if (this.selectedOption === 'none' || this.selectedOption === 'auto') {\n      this.optionsChange.emit(this.selectedOption);\n      this.intervalIsValid(true);\n      return;\n    }\n\n    let aggregation: RequestAggregation = {\n      functions: [{ function: this.selectedOption }],\n      interval: this.interval\n    };\n\n    if (this.selectedOption === 'holtWinters') {\n      if (typeof this.options === 'string')\n        aggregation.holtWinters = { ...this.holtWintersDefault };\n\n      else {\n        aggregation.holtWinters = this.options.holtWinters ? this.options.holtWinters : { ...this.holtWintersDefault };\n\n        if (this.options.offset)\n          aggregation.offset = this.options.offset;\n      }\n\n      this.optionsChange.emit(aggregation);\n      return;\n    }\n\n    this.optionsChange.emit(aggregation);\n  }\n\n  get displayInterval() {\n    return this.selectedOption !== 'none' && this.selectedOption !== 'auto';\n  }\n\n  intervalIsValid(isValid: boolean) {\n    this.isValidChange.emit(isValid);\n  }\n\n  intervalChange() {\n    this.updateValue();\n  }\n}\n","<mat-form-field #list\n                appearance=\"outline\"\n                class=\"w-100\">\n  <mat-select (selectionChange)=\"selectionChange($event)\"\n              [(ngModel)]=\"selectedOption\">\n    <mat-option [value]=\"agg.value\"\n                *ngFor=\"let agg of aggregations\">\n      {{ agg.label | translate }}\n    </mat-option>\n  </mat-select>\n</mat-form-field>\n\n<ngx-indasuite-aggregation-interval-input [(interval)]=\"interval\"\n                                          [hideArrows]=\"true\"\n                                          (intervalChange)=\"intervalChange()\"\n                                          [hidden]=\"!displayInterval || hideInput\"\n                                          (isValidChange)=\"intervalIsValid($event)\">\n</ngx-indasuite-aggregation-interval-input>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { ChartPointType } from '../../../api';\n\n@Component({\n  selector: 'ngx-indasuite-chart-type-select',\n  templateUrl: './indasuite-chart-type-select.component.html',\n  styleUrls: ['./indasuite-chart-type-select.component.scss'],\n})\nexport class IndasuiteChartTypeSelectComponent {\n  @Input() selectedType: ChartPointType = ChartPointType.line;\n  @Input() label = 'ChartTypeSelectComponent.label';\n  @Output() selectedTypeChange = new EventEmitter<ChartPointType>();\n\n  selectionChange(event: MatSelectChange) {\n    this.selectedType = event.value;\n    this.selectedTypeChange.emit(event.value);\n  }\n\n  chartTypes: Array<{ label: string; value: ChartPointType }> = [\n    { label: 'ChartType.bar', value: ChartPointType.bar },\n    { label: 'ChartType.line', value: ChartPointType.line },\n    { label: 'ChartType.scatter', value: ChartPointType.scatter },\n  ];\n}\n","<mat-form-field appearance=\"outline\">\n  <mat-label>{{ label | translate }}</mat-label>\n  <mat-select\n    appearance=\"outline\"\n    [(ngModel)]=\"selectedType\"\n    (selectionChange)=\"selectionChange($event)\"\n  >\n    <mat-option *ngFor=\"let type of chartTypes\" [value]=\"type.value\">\n      {{ type.label | translate }}\n    </mat-option>\n  </mat-select>\n</mat-form-field>\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { Profile, ReportComponent } from '../../api';\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormatterService {\n  static readonly DateFormat = 'YYYY-MM-DD HH:mm:ss';\n\n  static dateToString(date: Date) {\n    return moment(date).format(FormatterService.DateFormat);\n  }\n\n  static momentToString(m: moment.Moment) {\n    return m.format(FormatterService.DateFormat);\n  }\n\n  static formatValueWithDigits(value: number, unit: string, digits: number) {\n    const res = [];\n    if (value || value === 0) {\n      res.push(\n        this.isValidDigits(digits)\n          ? Math.round((value + Number.EPSILON) * Math.pow(10, digits)) / Math.pow(10, digits)\n          : value\n      );\n    } else res.push('--');\n    if (unit) res.push(unit);\n    return res.join(' ');\n  }\n\n  private static isValidDigits(digits: number) {\n    return digits >= 0;\n  }\n\n  static componentExportFileName(cmp: ReportComponent) {\n    const m = moment(new Date());\n    return `${cmp.title.replace(/[^a-z0-9]/gi, '_')}_${m.format('YYYYMMDD')}`;\n  }\n\n  static getUserFullName(profile: Profile) {\n    if (!profile) return null;\n\n    if (!profile.firstName || !profile.lastName) {\n      return profile.email;\n    }\n\n    return `${profile.firstName} ${profile.lastName}`;\n  }\n}\n","import {\n  Component,\n  Input,\n  OnChanges\n} from '@angular/core';\nimport { ReportService, TagComponentDescription } from '../../../api';\n\nexport type Data = { metric: string; timestamp: string; value: string | number };\nexport type ChartArrayConfig = {\n  timeRange: {\n    startDate: Date;\n    endDate: Date;\n  },\n  limit: number,\n  metrics: TagComponentDescription[]\n};\n\n@Component({\n  selector: 'ngx-indasuite-chart-array',\n  templateUrl: './chart-array.component.html',\n  styleUrls: ['./chart-array.component.scss']\n})\nexport class IndasuiteChartArrayComponent implements OnChanges {\n  @Input() config: ChartArrayConfig;\n\n  public data: Array<Data> = [];\n  public sortBy: 'metric' | 'date' = 'metric';\n  public isAscend: boolean = true;\n\n  public isLoading: boolean = true;\n\n  constructor(private reportService: ReportService) { }\n\n  ngOnChanges(): void {\n    this.getData();\n  }\n\n  public sort(mode: 'metric' | 'date' | null): void {\n    this.isLoading = true;\n    if (mode) {\n      if (this.sortBy === mode)\n        this.isAscend = !this.isAscend;\n      else\n        this.isAscend = true;\n\n      this.sortBy = mode;\n    }\n\n    if (this.sortBy === 'date') {\n      if (this.isAscend)\n        this.data.sort((a, b) => (a.timestamp > b.timestamp ? 1 : -1));\n      else\n        this.data.sort((a, b) => (a.timestamp < b.timestamp ? 1 : -1));\n    } else {\n      // by tag\n      // even if we sort by tag name, we want the timestamp to be ascendant\n      if (this.isAscend)\n        this.data.sort((a, b) => (a.metric > b.metric ? 1 : a.metric < b.metric ? -1 : a.timestamp > b.timestamp ? 1 : -1));\n      else\n        this.data.sort((a, b) => (a.metric < b.metric ? 1 : a.metric > b.metric ? -1 : a.timestamp > b.timestamp ? 1 : -1));\n    }\n    this.isLoading = false;\n  }\n\n  private getData() {\n    if (this.config.metrics.length === 0) {\n      this.data = [];\n      this.isLoading = false;\n      return;\n    }\n      \n    this.isLoading = true;\n    this.reportService\n      .getSeries(\n        this.config.timeRange.startDate,\n        this.config.timeRange.endDate,\n        this.config.limit,\n        this.config.metrics,\n        false\n      )\n      ?.subscribe((requestResults) => {\n        const result: Array<any> = [];\n        let value: { data: Array<any>, stream: string };\n        for (value of Object.values<any>(requestResults)) {\n          result.push(...value.data.map(d => {\n            let v = d.value;\n            if (typeof d.value === \"object\") {\n              const prop = Object.getOwnPropertyNames(d.value)[0];\n              if (prop)\n                v = d.value[prop];\n            }\n\n            return { ...d, value: v, metric: value.stream };\n          }))\n        }\n        this.data = result;\n        this.sort(null);\n        this.isLoading = false;\n      });\n  }\n}\n","<ngx-indasuite-loading-spinner *ngIf=\"isLoading\"></ngx-indasuite-loading-spinner>\n<div class=\"container\">\n  <div class=\"header grid\">\n    <div class=\"clicker\"\n         (click)=\"sort('metric')\">\n      {{ \"IndasuiteChartArrayComponent.metric\" | translate }}\n      <ng-container *ngIf=\"sortBy === 'metric'\">\n        <mat-icon *ngIf=\"isAscend\">expand_less</mat-icon>\n        <mat-icon *ngIf=\"!isAscend\">expand_more</mat-icon>\n      </ng-container>\n    </div>\n    <div class=\"clicker\"\n         (click)=\"sort('date')\">\n      {{ \"IndasuiteChartArrayComponent.date\" | translate }}\n      <ng-container *ngIf=\"sortBy === 'date'\">\n        <mat-icon *ngIf=\"isAscend\">expand_less</mat-icon>\n        <mat-icon *ngIf=\"!isAscend\">expand_more</mat-icon>\n      </ng-container>\n    </div>\n    <div class=\"value\">\n      {{ \"IndasuiteChartArrayComponent.value\" | translate }}</div>\n  </div>\n  <div class=\"lines\">\n    <div *ngFor=\"let line of this.data\"\n         class=\"line grid\">\n      <div class=\"element\">{{line.metric}}</div>\n      <div class=\"element\">{{line.timestamp}}</div>\n      <div class=\"element\">{{line.value}}</div>\n    </div>\n  </div>\n</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\nimport { ECharts, EChartsOption } from 'echarts';\n\n@Component({\n  selector: 'ngx-indasuite-chart-graph',\n  templateUrl: './chart-graph.component.html',\n  styleUrls: ['./chart-graph.component.scss']\n})\nexport class IndasuiteChartGraphComponent {\n  @Input() options: EChartsOption;\n  @Input() loading: boolean;\n  @Output() chartInit = new EventEmitter<ECharts>();\n  @Output() chartDataZoom = new EventEmitter<any>();\n}\n","<div echarts\n     *ngIf=\"options\"\n     class=\"w-100 h-100\"\n     [options]=\"options\"\n     [loading]=\"loading\"\n     (chartInit)=\"chartInit.emit($event)\"\n     (chartDataZoom)=\"chartDataZoom.emit($event)\">\n</div>","import {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n  ECharts,\n  EChartsOption,\n  LegendComponentOption,\n  YAXisComponentOption\n} from 'echarts';\nimport { DateTime } from \"luxon\";\nimport {\n  Metric,\n  RequestAggregation,\n  ReportService,\n  Axe,\n  Threshold,\n  TagComponentDescription,\n  Annotation,\n  RelativeTimeRange,\n  RelativeTimeRangeTypes,\n  getRelativeBeginningDate,\n  CalendarTimeRange,\n  CalendarTimeRangeTypes\n} from '../../../api';\nimport { RefreshComponent } from '../../models/refreshComponent.model';\nimport { FormatterService } from '../../services/formatter.service';\nimport { IndasuiteChartArrayComponent } from '../chart-array/chart-array.component';\nimport * as xlsx from \"xlsx\";\n\n@Component({\n  selector: 'ngx-indasuite-chart',\n  templateUrl: './line-chart.component.html',\n  styleUrls: ['./line-chart.component.scss']\n})\nexport class IndasuiteChartComponent implements OnChanges, RefreshComponent {\n  @Input() tags: Array<TagComponentDescription>;\n  @Input() time: CalendarTimeRange | RelativeTimeRange;\n  @Input() aggregation: RequestAggregation;\n  @Input() limit: number = 50;\n  @Input() title = '';\n  @Input() description = '';\n  @Input() displayLoading = true;\n  @Input() showSettings = true;\n  @Input() axes: Array<Axe> = [];\n  @Input() animation = true;\n  @Input() autoBrush = true;\n  @Input() showDates = false;\n  @Input() annotations = false;\n  @Input() toolbox: any = this.getDefaultToolbox();\n  @Input() displayZoom: boolean = true;\n  @Input() isDashboard: boolean = false;\n  @Input() displayActions: boolean = true;\n  @Input() displayLegends: boolean = true;\n\n  @Output() settingsClick = new EventEmitter();\n  @Output() zoomed = new EventEmitter();\n  @Output() brushed = new EventEmitter();\n  @Output() doubleClick = new EventEmitter();\n  @Output() click = new EventEmitter();\n  @Output() mouseOver = new EventEmitter();\n  @Output() mouseOut = new EventEmitter();\n  @Output() mouseMove = new EventEmitter();\n  @Output() legendClick = new EventEmitter();\n  @Output() saveAsImage = new EventEmitter<string>();\n  @Output() zoomIn = new EventEmitter();\n  @Output() zoomOut = new EventEmitter();\n  @Output() toggleFullscreen = new EventEmitter();\n\n  public echartsInstance: ECharts = null;\n  public mode: 'graph' | 'table' = 'graph';\n  public filteredTags: Array<TagComponentDescription> = [];\n  public isComplete = true;\n  public isLoading = false;\n\n  public chartOption: EChartsOption = this.getBaseChartOptions();\n\n  public savedOptions: EChartsOption = this.getSavedChartOptions();\n  public series: Array<any> = [];\n  public legendsSet: Set<string>;\n  public yAxies: any;\n\n  @ViewChild(IndasuiteChartArrayComponent) chartArray: IndasuiteChartArrayComponent;\n\n  @HostListener('window:resize', ['$event'])\n  onResize() {\n    this.echartsInstance?.resize();\n  }\n\n  constructor(\n    public reportService: ReportService,\n    private translateService: TranslateService\n  ) {\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.echartsInstance) return;\n    if (changes?.displayActions) return; // don't refresh data in that case\n    if (changes?.displayLegends) return this.populateChart(); // don't refresh data in that case either\n\n    this.yAxies = this.getYAxies();\n    this.getSeries();\n  }\n\n  public onChartInit(event: ECharts) {\n    this.echartsInstance = event;\n    this.yAxies = this.getYAxies();\n    this.echartsInstance.on('brushEnd', this.onChartBrush.bind(this));\n    this.echartsInstance.on('dblclick', this.onChartDbClick.bind(this));\n    this.echartsInstance.on('click', this.onChartClick.bind(this));\n    this.echartsInstance.on('mouseover', this.onChartMouseOver.bind(this));\n    this.echartsInstance.on('mouseout', this.onMouseOut.bind(this));\n    this.echartsInstance.on('mousemove', this.onMouseMove.bind(this));\n    this.echartsInstance.on('legendselectchanged', this.onLegendSelectChanged.bind(this));\n\n    this.getSeries();\n  }\n\n  public onChartMouseOver(event) {\n    this.mouseOver.emit(event);\n  }\n\n  public onMouseMove(event) {\n    this.mouseMove.emit(event);\n  }\n\n  public onMouseOut(event) {\n    return this.mouseOut.emit(event);\n  }\n\n  public onSaveAsImage() {\n    this.saveAsImage.emit(this.echartsInstance.getDataURL({\n      pixelRatio: 2,\n      backgroundColor: '#fff'\n    }));\n  }\n\n  public settingsClicked() {\n    this.settingsClick.emit();\n  }\n\n  public exportToExcel() {\n    const wb = xlsx.utils.book_new();\n    const copy = this.chartArray.data.map(x => ({...x, timestamp: DateTime.fromISO(x.timestamp).toJSDate()}));\n    const ws = xlsx.utils.json_to_sheet(copy, { header: [\"metric\", \"timestamp\", \"value\"] });\n    const column = xlsx.utils.decode_col('B');\n    const range = xlsx.utils.decode_range(ws[\"!ref\"]);\n    for (let i = range.s.r + 1; i <= range.e.r; ++i) {\n      const cell = xlsx.utils.encode_cell({r: i, c: column});\n      ws[cell].z = 'yyyy-mm-dd hh:mm:ss';\n    }\n    ws[\"!cols\"] = [\n      {wch: 30},\n      {wch: 20},\n      {wch: 20}\n    ];\n    xlsx.utils.book_append_sheet(wb, ws, \"data\");\n    xlsx.writeFileXLSX(wb, \"data.xlsx\");\n  }\n\n  public getSeries() {\n    this.isLoading = true;\n\n    this.chartOption.xAxis = {\n      type: 'time',\n      min: this.time.startDate.getTime(),\n      max: this.time.endDate.getTime(),\n      axisPointer: {\n        label: {\n          show: false\n        }\n      }\n    };\n\n    if (this.tags?.length === 0) {\n      this.series = [];\n      this.filteredTags = [];\n      this.legendsSet = new Set();\n      delete this.chartOption.legend;\n      this.populateChart(this.savedOptions);\n      return;\n    }\n\n    this.reportService\n      .getSeries(\n        this.time.startDate,\n        this.time.endDate,\n        this.limit,\n        this.tags,\n        this.annotations\n      )\n      ?.subscribe((requestResults) => {\n        this.fillChartWithDate.bind(this)(requestResults);\n        this.checkGraphIsComplete.bind(this)(requestResults);\n      });\n  }\n\n  public fullscreen(): void {\n    this.toggleFullscreen.emit(\n      {\n        component: \"graph\",\n        options: this.chartOption,\n        loading: false // we consider that the graph is loaded when clicking on fullscreen\n      });\n  }\n\n  public onChartDbClick(event: any) {\n    event.seriesMarkPoint = this.series.find(\n      (s) => s.name === event.seriesName || s.name === event.data.name\n    )?.markPoint;\n    this.doubleClick.emit(event);\n  }\n\n  public onChartClick(event: any) {\n    event.seriesMarkPoint = this.series.find(\n      (s) => s.name === event.seriesName || s.name === event.data.name\n    )?.markPoint;\n    this.click.emit(event);\n  }\n\n  public onLegendSelectChanged(event: any) {\n    if (event?.name)\n      this.legendClick.emit(event.name);\n  }\n\n  public onChartZoom(event: any) {\n    this.zoomed.emit(event);\n  }\n\n  public switchViewMode(mode: \"graph\" | \"table\") {\n    this.mode = mode;\n  }\n\n  private checkGraphIsComplete(requestResults: any) {\n    if (!requestResults) {\n      this.isComplete = true;\n      return;\n    }\n\n    this.isComplete = Object.values(requestResults).every(\n      (res: any) => res.complete\n    );\n  }\n\n  private getSubText() {\n    const res = [];\n    if (this.description) res.push(this.description);\n\n    if (this.showDates && this.time?.startDate && this.time.endDate)\n      res.push(\n        `${FormatterService.dateToString(\n          this.time.startDate\n        )} - ${FormatterService.dateToString(this.time.endDate)}`\n      );\n    return res.join('\\n');\n  }\n\n  private fillChartWithDate(requestResults: any) {\n    this.legendsSet = new Set<string>();\n    this.series = [];\n\n    if (!requestResults)\n      return;\n\n    Object.keys(requestResults).forEach((requestName) => {\n      const data = requestResults[requestName].data as Array<Metric>;\n      const type = this.tags.filter((el) => el.displayName === requestName)[0]\n        .type;\n\n      const values = this.getAllMetricsFromRequest(requestName, data);\n\n      const tagData = values.filter((el) => el.name === requestName);\n      const {\n        unit = '',\n        interpoled,\n        color\n      } = this.tags.find((el) => el.displayName === requestName);\n\n      const step = interpoled ? null : 'end';\n\n      const yAxisIndex = this.yAxies.indexOf(\n        this.yAxies.find((el) => el.name === unit)\n      );\n\n      this.series.push({\n        name: requestName,\n        data: tagData,\n        showSymbol: false,\n        type,\n        symbolSize: 5,\n        step,\n        lineStyle: { color },\n        itemStyle: { color },\n        yAxisIndex,\n        markPoint: this.provideMessages(requestName, data),\n        animation: this.animation,\n        tooltip: {\n          valueFormatter: (value) => `${value ?? '-'} ${unit}`\n        }\n      });\n    });\n\n    this.drawThreshold();\n    this.populateChart.bind(this)();\n    this.isLoading = false;\n  }\n\n  private drawThreshold() {\n    this.axes\n      .filter((axe) => !!axe.thresholds)\n      .forEach((axe) => {\n        const yAxisIndex = this.yAxies.findIndex(\n          (yAxis) => yAxis.name === (axe.axeId || '')\n        );\n\n        const serie = this.series.find((s) => s.yAxisIndex === yAxisIndex);\n\n        if (!serie) return;\n\n        serie.markLine = {\n          silent: false,\n          label: {\n            show: true\n          },\n          symbol: 'none',\n          data: axe.thresholds.map((threshold) => {\n            const res: any = {};\n\n            if (threshold.orientation === 'horizontal')\n              res.yAxis = threshold.value;\n            else res.xAxis = threshold.value;\n\n            res.lineStyle = {\n              type: threshold.dashed ? 'dashed' : 'solid',\n              color: threshold.color\n            };\n\n            // 'center': old default value which is deprecated\n            let position = threshold.position && threshold.position !== 'center' ? threshold.position : 'insideEnd';\n            res.label = {\n              formatter: this.getTresholdLabel(axe, threshold),\n              color: threshold.color,\n              position,\n              backgroundColor: 'white'\n            };\n\n            return res;\n          })\n        };\n      });\n  }\n\n  private getTresholdLabel(axe: Axe, threshold: Threshold) {\n    if (threshold.label) return threshold.label;\n\n    if (threshold.orientation === 'horizontal') {\n      return `${axe.axeId} : ${threshold.value}`;\n    }\n\n    const date = new Date(threshold.value);\n\n    return `${axe.axeId} : ${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;\n  }\n\n  private populateChart(chartOption: EChartsOption = null) {\n    if (chartOption) {\n      this.echartsInstance?.setOption(chartOption, true);\n      return;\n    }\n\n    if (this.displayLegends !== false) {\n      this.chartOption.legend = {\n        bottom: 10,\n        data: Array.from(this.legendsSet),\n        formatter: (name) => {\n          const unit = this.tags.find((t) => t.displayName === name)?.unit;\n          if (!unit) return name;\n          return `${name} (${unit})`;\n        }\n      };\n      this.chartOption.grid = { containLabel: true, left: '3%', right: '5%', bottom: 30, top: 0 };\n    } else {\n      this.chartOption.grid = { containLabel: true, left: '3%', right: '5%', bottom: 0, top: 0 };\n      delete this.chartOption.legend;\n    }\n\n    this.chartOption.toolbox = { ...this.toolbox, show: this.showSettings };\n    this.chartOption.yAxis = this.yAxies;\n    this.chartOption.series = this.series;\n    this.echartsInstance?.setOption(this.chartOption, true);\n    if (this.autoBrush)\n      this.echartsInstance.dispatchAction({\n        type: 'takeGlobalCursor',\n        key: 'brush',\n        brushOption: {\n          brushType: 'lineX',\n          brushMode: 'single'\n        }\n      });\n\n    // for each tag set as \"hidden\", we silently dispatch the toggle action in order to hide them\n    // if this action is not silent, it goes infinite\n    this.tags.filter(t => t.hidden).forEach(t => this.echartsInstance.dispatchAction({ type: \"legendToggleSelect\", name: t.name }, { silent: true }));\n    this.filteredTags = this.tags.filter(t => !t.hidden);\n\n    this.echartsInstance.resize();\n  }\n\n  private onChartBrush(event: any) {\n    this.brushed.emit(event);\n  }\n\n  private getAllMetricsFromRequest(\n    tagName: string,\n    requestMetrics: Array<Metric>\n  ): Array<{ name: string; value: any }> {\n    let res: Array<{ name: string; value: any }> = [];\n\n    this.legendsSet.add(tagName);\n\n    requestMetrics.forEach((metric) => {\n      res = [\n        ...res,\n        ...this.getSeriePointsFromTagValues(tagName, metric)\n      ];\n    });\n\n    return res;\n  }\n\n  private provideMessages(displayName: string, values: Array<any>) {\n\n    const res: { data: any[], annotations: Record<number, Annotation[]> } = { data: [], annotations: {} };\n\n    if (!this.annotations) return { data: [], annotations: [] };\n\n    values.forEach((value) => {\n      const yAxis = isNaN(value.value)\n        ? Object.values(value.value)[0]\n        : value.value;\n\n      if (!value.annotations) return;\n      res.data.push({\n        xAxis: value.timestamp,\n        yAxis,\n        value: 'i',\n        symbolSize: 22,\n        name: displayName\n      });\n      res.annotations[new Date(value.timestamp).getTime()] = value.annotations;\n    });\n\n    return res;\n  }\n\n  private getSeriePointsFromTagValues(tagName: string, metric: Metric) {\n\n    if (typeof metric.value === 'number') {\n      return [{ name: tagName, value: [metric.timestamp, metric.value] }];\n    }\n\n    return Object.keys(metric.value).map((aggregate) => {\n      return {\n        name: tagName,\n        value: [metric.timestamp, metric.value[aggregate]]\n      };\n    });\n  }\n\n  public smoothRefresh(): void {\n    this.ngOnChanges({});\n  }\n\n  private getYAxies() {\n    this.tags.forEach((el) => {\n      if (!el.unit) el.unit = '';\n    });\n    const allUnits = this.tags.map((el) => el.unit); //[m2, m2, m3]\n    const unitSet = new Set(allUnits); //[m2, m3]\n    const units = Array.from(unitSet);\n\n    return units.map((unit, index): YAXisComponentOption => {\n      const params = this.axes.find(\n        (el) => (el.axeId ? el.axeId : '') === unit\n      );\n      const { interval } = this.getScaleParams(params);\n\n      return {\n        type: 'value',\n        name: unit,\n        nameLocation: 'middle',\n        nameGap: 30,\n        nameTextStyle: {\n          fontWeight: 500\n        },\n        minorSplitLine: {\n          show: true\n        },\n        position: 'left',\n        offset: 50 * index,\n        axisLine: {\n          show: true\n        },\n        axisLabel: {\n          formatter: (value: number) => {\n            return `${Math.round((value + Number.EPSILON) * 1000) / 1000}`;\n          },\n          showMinLabel: false,\n          showMaxLabel: false\n        },\n        axisPointer: {\n          label: {\n            show: units.length < 2\n          }\n        },\n        min: this.getScale(params, true),\n        max: this.getScale(params, false),\n        ...(interval && { interval })\n      };\n    });\n  }\n\n  private noUserScale(min: any, max: any, margin: any) {\n    return (\n      isNaN(min) ||\n      min === '' ||\n      min === null ||\n      isNaN(max) ||\n      max === '' ||\n      max === null ||\n      isNaN(margin) ||\n      margin === '' ||\n      margin === null\n    );\n  }\n\n  private getScale(axe: Axe, isMin: boolean) {\n    const margin: any = axe?.scale?.marginPercent;\n    const min: any = axe?.scale?.userMin;\n    const max: any = axe?.scale?.userMax;\n\n    if (this.noUserScale(min, max, margin))\n      return this.getDefaultScaleLimit(axe, isMin);\n\n    return isMin ? this.getScaleParams(axe).min : this.getScaleParams(axe).max;\n  }\n\n  private getDefaultScaleLimit(axe: Axe, min: boolean) {\n    return (value: any) => {\n      const diff = Math.abs(value.max - value.min);\n      const coeff = min ? -1 : 1;\n      if (diff === 0) return value.max + 1 * coeff;\n      const margin = axe.scale?.marginPercent ?? 10;\n\n      const limit = min ? value.min : value.max;\n\n      return limit + diff * (margin / 100) * coeff;\n    };\n  }\n\n  private getScaleParams(params: Axe) {\n    const margin: any = params?.scale?.marginPercent;\n\n    const interval = params?.scale?.userStep;\n\n    let min: any = params?.scale?.userMin;\n    let max: any = params?.scale?.userMax;\n\n    const diff = Math.abs(max - min);\n\n    const offset = diff * (margin / 100);\n\n    min = min - offset;\n    max = max + offset;\n\n    return {\n      min,\n      max,\n      interval\n    };\n  }\n\n  private tooltipFormatter(params) {\n    const xTime = new Date(params[0].axisValue);\n\n    let tooltip = `${FormatterService.dateToString(xTime)}`;\n\n    this.series.forEach((serie, index) => {\n      if (serie.data.length === 0) return;\n\n      let nearest = null;\n\n      serie.data.forEach((curr) => {\n        const currDate = new Date(curr.value[0]);\n\n        if (currDate.valueOf() > xTime.valueOf()) return;\n        if (!nearest) {\n          nearest = curr;\n          return;\n        }\n\n        const nearestDate = new Date(nearest.value[0]);\n\n        if (\n          Math.abs(currDate.valueOf() - xTime.valueOf()) <=\n          Math.abs(nearestDate.valueOf() - xTime.valueOf())\n        ) {\n          nearest = curr;\n        }\n      });\n\n      if (!nearest) return;\n\n      tooltip += `<br/><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color: ${this.echartsInstance.getVisual(\n        { seriesIndex: index },\n        'color'\n      )}\"></span>`;\n\n      tooltip += `<span>${serie.name}&emsp;<b>${serie?.tooltip?.valueFormatter(nearest.value[1]) ?? nearest.value[1]\n      }</b></span>`;\n      tooltip += this.tooltipMessage(serie, xTime);\n    });\n    return tooltip;\n  }\n\n  private tooltipMessage(serie: any, xTime: Date) {\n    if (serie.markPoint.annotations.length === 0) return '';\n    const annotations = serie.markPoint.annotations[xTime.getTime()] as Annotation[];\n    if (!annotations) return '';\n\n    const res = [];\n\n    res.push(\n      `<br/>${this.translateService.instant(\n        'IndasuiteChartComponent.tooltip_comments'\n      )} : `\n    );\n\n    const tag = this.tags.find((t) => t.displayName === serie.name);\n\n    if (\n      this.reportService.autoRequestsAggregated.includes(serie.name) ||\n      (tag.aggregation !== 'none' && tag.aggregation !== 'auto')\n    ) {\n      res.push(\n        this.translateService.instant(\n          'IndasuiteChartComponent.aggregated_comments',\n          { number: annotations.length }\n        )\n      );\n      return res.join('<br/>');\n    }\n\n    annotations.forEach((annotation) => {\n      const message = annotation.value ?? '';\n      let update = '';\n\n      if (annotation.valueUpdate)\n        update = this.translateService.instant('IndasuiteChartComponent.updated_value', {\n          old: annotation.valueUpdate.oldValue,\n          new: annotation.valueUpdate.newValue\n        }) + ' ';\n\n      res.push(\n        `<span style=\"white-space:pre-line;\">${update}${message}</span>`\n      );\n    });\n\n    return res.join('<br/>');\n  }\n\n  private getDefaultToolbox(): any {\n    return {\n      show: this.showSettings,\n      feature: {\n        saveAsImage: {\n          show: true,\n          title: 'Save As Image'\n        },\n        dataZoom: {\n          yAxisIndex: 'none' as any\n        },\n        dataView: { readOnly: true },\n        myConfig: {\n          show: true,\n          title: 'Settings',\n          icon: 'image://lib/indasuite-ui/img/icon/settings.svg',\n          onclick: this.settingsClicked.bind(this)\n        }\n      }\n    };\n  }\n\n  private getBaseChartOptions(): EChartsOption {\n    return {\n      title: [\n        {\n          text: this.title,\n          textStyle: {\n            color: getComputedStyle(\n              document.getElementsByTagName('body')[0]\n            ).getPropertyValue('--accent-color'),\n            fontFamily: 'Poppins',\n            fontWeight: 400,\n            fontSize: 16\n          }\n        },\n        {\n          subtext: this.getSubText(),\n          top: '10px',\n          left: 'center',\n          subtextStyle: {\n            fontFamily: 'Poppins',\n            color: getComputedStyle(\n              document.getElementsByTagName('body')[0]\n            ).getPropertyValue('--primary-color')\n          }\n        }\n      ],\n      yAxis: {\n        type: 'value'\n      },\n      tooltip: {\n        trigger: 'axis',\n        formatter: this.tooltipFormatter.bind(this),\n        axisPointer: {\n          type: 'cross',\n          animation: false\n        }\n      },\n      brush: {\n        xAxisIndex: 0\n      },\n      dataZoom: [\n        {\n          type: 'inside',\n          throttle: 50,\n          zoomOnMouseWheel: false,\n          yAxisIndex: 'none' as any\n        }\n      ],\n      grid: {\n        containLabel: true,\n        left: '3%',\n        right: 0,\n        bottom: 30,\n        top: 0\n      },\n      toolbox: { show: false }\n    };\n  }\n\n  private getSavedChartOptions(): EChartsOption {\n    return {\n      title: [\n        {\n          text: \"\",\n          textStyle: {\n            color: \"#ec8c2e\",\n            fontFamily: \"Poppins\",\n            fontWeight: 400,\n            fontSize: 16\n          }\n        },\n        {\n          subtext: \"\",\n          top: \"10px\",\n          left: \"center\",\n          subtextStyle: {\n            fontFamily: \"Poppins\",\n            color: \"#312e60\"\n          }\n        }\n      ],\n      yAxis: {\n        type: \"value\"\n      },\n      tooltip: {\n        trigger: \"axis\",\n        axisPointer: {\n          type: \"cross\",\n          animation: false\n        }\n      },\n      brush: {\n        xAxisIndex: 0\n      },\n      dataZoom: [\n        {\n          type: \"inside\",\n          throttle: 50,\n          zoomOnMouseWheel: false\n        }\n      ],\n      grid: {\n        containLabel: true,\n        left: \"3%\",\n        right: 0,\n        bottom: 30,\n        top: 0\n      },\n      xAxis: {\n        type: \"time\",\n        axisPointer: {\n          label: {\n            show: false\n          }\n        }\n      },\n      toolbox: { show: false }\n    };\n  }\n}\n","<div class=\"chart-container d-flex flex-column\"\n     [ngClass]=\"{'gap-1': mode === 'table'}\">\n     <div class=\"legends\"\n          [ngClass]=\"{'on-top': isDashboard}\"\n          *ngIf=\"displayActions\">\n          <div *ngIf=\"mode === 'graph'\"\n               class=\"d-flex gap-1\">\n               <mat-icon (click)=\"this.onSaveAsImage()\"\n                         color=\"primary\">file_download</mat-icon>\n               <mat-icon *ngIf=\"!displayZoom\"\n                         (click)=\"fullscreen()\"\n                         color=\"primary\">open_in_full</mat-icon>\n               <mat-icon *ngIf=\"displayZoom\"\n                         (click)=\"this.zoomIn.emit()\"\n                         color=\"primary\">zoom_in</mat-icon>\n               <mat-icon *ngIf=\"displayZoom\"\n                         (click)=\"this.zoomOut.emit()\"\n                         color=\"primary\">zoom_out</mat-icon>\n          </div>\n          <button *ngIf=\"mode === 'table'\"\n                  class=\"export-excel-btn\"\n                  (click)=\"this.exportToExcel()\">Export Excel\n          </button>\n         \n         <div class=\"switch\">\n             <div class=\"mode\"\n                  [ngClass]=\"{'selected': mode === 'graph'}\"\n                  (click)=\"switchViewMode('graph')\">\n                 <mat-icon [color]=\"mode === 'graph' ? 'accent' : 'primary'\">show_chart</mat-icon>\n             </div>\n             <div class=\"mode\"\n                  [ngClass]=\"{'selected': mode === 'table'}\"\n                  (click)=\"switchViewMode('table')\">\n                 <mat-icon [color]=\"mode === 'table' ? 'accent' : 'primary'\">table_chart</mat-icon>\n             </div>\n         </div>\n     </div>\n\n     <ngx-indasuite-chart-graph *ngIf=\"mode === 'graph'\"\n                                class=\"chart\"\n                                [options]=\"chartOption\"\n                                [loading]=\"displayLoading && isLoading\"\n                                (chartInit)=\"onChartInit($event)\"\n                                (chartDataZoom)=\"onChartZoom($event)\">\n     </ngx-indasuite-chart-graph>\n\n     <ngx-indasuite-chart-array *ngIf=\"mode ==='table'\"\n                                class=\"chart\"\n                                [config]=\"{timeRange: {startDate: this.time.startDate, endDate: this.time.endDate}, limit: this.limit, metrics: this.filteredTags}\">\n     </ngx-indasuite-chart-array>\n</div>","import { MatDatetimePickerInputEvent } from '@angular-material-components/datetime-picker';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport moment from 'moment';\nimport { getRelativeBeginningDate, RelativeTimeRange, RelativeTimeRangeTypes, RelativeTimeTypesTranslate } from '../../../api';\n\n@Component({\n  selector: 'ngx-indasuite-period-select',\n  templateUrl: './period-select.component.html',\n  styleUrls: ['./period-select.component.scss'],\n})\nexport class IndasuitePeriodSelectComponent implements OnInit, OnChanges {\n  ChartTimeWindowType = RelativeTimeRangeTypes;\n\n  @Input() time: RelativeTimeRange = {\n    presets: 'lastHour',\n    startDate: new Date(),\n    endDate: new Date(),\n  };\n\n  @Input() showArrows = true;\n\n  @Output() timeChange = new EventEmitter<RelativeTimeRange>();\n\n  ngOnChanges(): void {\n    this.fillDateControls();\n  }\n\n  intervals = RelativeTimeRangeTypes;\n  intervalsTranslate = RelativeTimeTypesTranslate;\n\n  beginDateControl = new UntypedFormControl(this.time.startDate);\n  endDateControl = new UntypedFormControl(this.time.endDate);\n\n  intervalDateChanged(event: MatDatetimePickerInputEvent<any>, key: string) {\n    // prevent start date to be after end date, and vice versa\n    if (this.time['endDate'] && this.time['startDate']) {\n      const interval: number = this.time['endDate'].getTime() - this.time['startDate'].getTime();\n      const curr = new Date(event.value).getTime();\n\n      // check if the user changed start date and it's later than the end date\n      if (key === 'startDate' && curr >= this.time.endDate.getTime())\n        this.time.endDate = new Date(event.value + interval);\n\n      // check if the user changed end date and it's earlier than the start date\n      if (key === 'endDate' && curr <= this.time.startDate.getTime())\n        this.time.startDate = new Date(event.value - interval);\n    }\n\n    this.time[key] = event.value;\n    this.time.presets = 'interval';\n    this.timeChange.emit(this.time);\n  }\n\n  typeChanged(event: MatSelectChange) {\n    this.time.endDate = new Date();\n    this.time.presets = event.value;\n    this.time.startDate = getRelativeBeginningDate(event.value);\n    this.timeChange.emit(this.time);\n  }\n\n  fillDateControls() {\n    this.beginDateControl = new UntypedFormControl(this.time.startDate);\n    this.endDateControl = new UntypedFormControl(this.time.endDate);\n  }\n\n  ngOnInit(): void {\n    if (!this.time.startDate) this.time.startDate = new Date();\n    if (!this.time.endDate) this.time.endDate = new Date();\n    this.fillDateControls();\n  }\n\n  quickTimeClicked(previous: boolean): void {\n    const min = moment(this.time.startDate);\n    const max = moment(this.time.endDate);\n    const range = max.diff(min, 'seconds') / 2;\n    this.time = { ...this.time };\n    if (previous) {\n      this.time.startDate = min.subtract(range, 'seconds').toDate();\n      this.time.endDate = max.subtract(range, 'seconds').toDate();\n    } else {\n      this.time.startDate = min.add(range, 'seconds').toDate();\n      this.time.endDate = max.add(range, 'seconds').toDate();\n    }\n    this.fillDateControls();\n\n    this.time.presets = 'interval';\n    this.timeChange.emit({ ...this.time });\n  }\n}\n","<div class=\"d-flex flex-wrap\">\n  <mat-form-field appearance=\"outline\">\n    <mat-label>\n      {{\"PeriodSelectComponent.interval_label\" | translate}}</mat-label>\n    <mat-select [(ngModel)]=\"time.presets\"\n                (selectionChange)=\"typeChanged($event)\">\n      <mat-option *ngFor=\"let interval of intervals\"\n                  [value]=\"interval\">\n        {{ intervalsTranslate[interval] | translate }}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <div class=\"d-flex a-center\"\n       *ngIf=\"showArrows\">\n    <button class=\"tiny-button mr-2 ml-2\"\n            mat-stroked-button\n            (click)=\"quickTimeClicked(true)\">\n      <mat-icon>chevron_left</mat-icon>\n    </button>\n  </div>\n  <mat-form-field appearance=\"outline\"\n                  class=\"mr-1\">\n    <mat-label>\n      {{ \"PeriodSelectComponent.begining_interval\" | translate }}</mat-label>\n    <input matInput\n           [ngxMatDatetimePicker]=\"beginPicker\"\n           (dateChange)=\"intervalDateChanged($event, 'startDate')\"\n           [formControl]=\"beginDateControl\" />\n    <mat-datepicker-toggle matSuffix\n                           [for]=\"$any(beginPicker)\">\n    </mat-datepicker-toggle>\n    <ngx-mat-datetime-picker #beginPicker\n                             [showSeconds]=\"true\">\n    </ngx-mat-datetime-picker>\n  </mat-form-field>\n\n  <mat-form-field appearance=\"outline\">\n    <mat-label>\n      {{ \"PeriodSelectComponent.ending_interval\" | translate }}\n    </mat-label>\n    <input matInput\n           [ngxMatDatetimePicker]=\"endPicker\"\n           (dateChange)=\"intervalDateChanged($event, 'endDate')\"\n           [formControl]=\"endDateControl\" />\n    <mat-datepicker-toggle matSuffix\n                           [for]=\"$any(endPicker)\">\n    </mat-datepicker-toggle>\n    <ngx-mat-datetime-picker #endPicker\n                             [showSeconds]=\"true\">\n    </ngx-mat-datetime-picker>\n  </mat-form-field>\n  <div class=\"d-flex a-center\"\n       *ngIf=\"showArrows\">\n    <button class=\"tiny-button ml-2\"\n            mat-stroked-button\n            (click)=\"quickTimeClicked(false)\">\n      <mat-icon>chevron_right</mat-icon>\n    </button>\n  </div>\n</div>","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\nimport { EChartsOption } from 'echarts';\n\n@Component({\n  selector: 'gauge',\n  templateUrl: './gauge.component.html',\n  styleUrls: ['./gauge.component.scss'],\n})\nexport class GaugeComponent {\n  @Input() options: EChartsOption;\n  @Input() date: string;\n  @Input() timeRangeLocked: boolean;\n  @Output() chartInit = new EventEmitter();\n}\n","<div class=\"d-flex flex-column w-100 h-100\">\n  <span class=\"date-span\"\n        *ngIf=\"date\">\n    {{ date }}\n    <mat-icon *ngIf=\"this.timeRangeLocked\">lock</mat-icon>\n  </span>\n\n  <div echarts\n       [options]=\"options\"\n       class=\"w-100 h-100\"\n       (chartInit)=\"chartInit.emit($event)\"></div>\n</div>","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport {\n  DEFAULT_SIZES,\n  GaugeSizes,\n  IndabaService,\n  InstantQueryDirection,\n  Metric,\n  ReportGaugeComponent,\n  ReportService,\n  TagComponentDescription\n} from '../../../api';\n\nimport { FormatterService } from '../../services/formatter.service';\nimport { RefreshComponent } from '../../models/refreshComponent.model';\n\n@Component({\n  selector: 'ngx-indasuite-gauge',\n  templateUrl: './indasuite-gauge.component.html',\n  styleUrls: ['./indasuite-gauge.component.scss'],\n})\nexport class IndasuiteGaugeComponent\n  implements OnInit, OnChanges, RefreshComponent {\n  @ViewChild('container') elementRef: ElementRef;\n\n  @Input() config: ReportGaugeComponent;\n  @Input() toolbox: any;\n  @Input() hideToolbox: boolean = false;\n  @Input() isDashboard: boolean = false;\n  @Input() gaugeSizes: GaugeSizes = DEFAULT_SIZES;\n  @Output() saveAsImage = new EventEmitter();\n  @Output() toggleFullscreen = new EventEmitter();\n\n  public chartInstance: ECharts;\n  public fileName: string;\n  public updateChart: any;\n  public chartOptions: EChartsOption;\n\n  get isGraphVisible() {\n    return (\n      this.chartOptions.series[0].data.length > 0 &&\n      this.config.metrics.length > 0\n    );\n  }\n\n  constructor(\n    public reportService: ReportService,\n    private indabaService: IndabaService\n  ) { }\n\n  ngOnInit(): void {\n    this.chartOptions = {\n      series: [\n        {\n          type: 'gauge',\n          progress: {\n            show: true,\n            width: this.gaugeSizes.axe ?? DEFAULT_SIZES.axe,\n          },\n          radius: '100%',\n          itemStyle: {\n            color: '#999'\n          },\n          center: ['50%', '55%'],\n          axisLine: {\n            lineStyle: {\n              width: this.gaugeSizes.axe ?? DEFAULT_SIZES.axe\n            }\n          },\n          axisTick: {\n            show: false,\n          },\n          splitLine: {\n            length: this.gaugeSizes.splitLine.length ?? DEFAULT_SIZES.splitLine.length,\n            lineStyle: {\n              width: this.gaugeSizes.splitLine.width ?? DEFAULT_SIZES.splitLine.width,\n              color: '#999'\n            }\n          },\n          axisLabel: {\n            distance: this.gaugeSizes.label.distance ?? DEFAULT_SIZES.label.distance,\n            color: '#999',\n            fontSize: this.gaugeSizes.label.font ?? DEFAULT_SIZES.label.font\n          },\n          anchor: {\n            show: true,\n            showAbove: true,\n            size: this.gaugeSizes.anchor ?? DEFAULT_SIZES.anchor,\n            itemStyle: {\n              borderWidth: 10\n            },\n          },\n          title: {\n            show: false,\n          },\n          detail: {\n            valueAnimation: true,\n            fontSize: this.gaugeSizes.value ?? DEFAULT_SIZES.value\n          },\n          pointer: {\n            length: \"60%\"\n          },\n          min: 0,\n          max: 100,\n          data: []\n        }\n      ]\n    };\n    if (!this.config) return;\n    this.provideOptions();\n    this.getData();\n    this.fileName = FormatterService.componentExportFileName(this.config);\n  }\n\n  ngOnChanges(): void {\n    this.ngOnInit();\n  }\n\n  public smoothRefresh(): void {\n    this.getData();\n  }\n\n  public onChartInit(ec) {\n    this.chartInstance = ec;\n  }\n\n  public onSaveAsImage() {\n    this.saveAsImage.emit(this.chartInstance.getDataURL({\n      pixelRatio: 2,\n      backgroundColor: '#fff'\n    }));\n  }\n\n  public getData() {\n    if (this.config.metrics[0]?.aggregation === 'auto' || this.config.metrics[0]?.aggregation === 'none')\n      this.refreshGaugeWithInstantValue();\n    else\n      this.refreshGaugeWithAggregate();\n  }\n\n  public fullscreen(): void {\n    if (!this.chartOptions?.series)\n      return;\n\n    const options = {\n      series: [\n        {\n          ...this.chartOptions.series[0],\n          progress: {\n            show: true,\n            width: DEFAULT_SIZES.axe\n          },\n          axisLine: {\n            lineStyle: {\n              width: DEFAULT_SIZES.axe\n            }\n          },\n          splitLine: {\n            length: DEFAULT_SIZES.splitLine.length,\n            lineStyle: {\n              width: DEFAULT_SIZES.splitLine.width,\n              color: '#999'\n            }\n          },\n          axisLabel: {\n            distance: DEFAULT_SIZES.label.distance,\n            color: '#999',\n            fontSize: DEFAULT_SIZES.label.font\n          },\n          anchor: {\n            show: true,\n            showAbove: true,\n            size: DEFAULT_SIZES.anchor,\n            itemStyle: {\n              borderWidth: 10,\n              borderColor: this.config.metrics[0].color\n            }\n          },\n          detail: {\n            valueAnimation: true,\n            fontSize: 40,\n            color: this.config.metrics[0].color\n          }\n        }\n      ]\n    };\n\n    options.series[0].detail.formatter = function (value) {\n      return FormatterService.formatValueWithDigits(\n        value,\n        this.config.metrics[0].unit,\n        this.config.parameters?.digits\n      );\n    }.bind(this);\n\n    this.toggleFullscreen.emit({\n      component: 'gauge',\n      startDate: this.getDate(),\n      options\n    });\n  }\n\n  public getDate() {\n    return `${FormatterService.dateToString(\n      this.config.timeRange.startDate\n    )} - ${FormatterService.dateToString(this.config.timeRange.endDate)}`;\n  }\n\n  private refreshGaugeWithInstantValue() {\n    const [tag] = this.config.metrics;\n    this.indabaService\n      .getInstant(\n        tag.name,\n        this.config.timeRange.endDate,\n        tag.datasource,\n        InstantQueryDirection.before\n      )\n      .subscribe((res) => {\n        const date = new Date(res.data[0].timestamp);\n        if (\n          !res ||\n          date.getTime() < this.config.timeRange.startDate.getTime()\n        ) {\n          this.chartOptions.series[0].data = [];\n          return;\n        }\n        this.provideValue.bind(this)(res.data[0].value);\n      });\n  }\n\n  private refreshGaugeWithAggregate() {\n    const metrics: Array<TagComponentDescription> = this.config.metrics\n      .map(m => {\n        if (m.aggregation === 'auto' || m.aggregation === 'none') return m;\n        return {\n          ...m,\n          aggregation: {\n            ...m.aggregation, interval: \"\", precision: undefined\n          }\n        } as TagComponentDescription;\n      });\n    this.reportService\n      .getSeries(\n        this.config.timeRange.startDate,\n        this.config.timeRange.endDate,\n        this.config.limit,\n        metrics,\n        false\n      )\n      .subscribe((requestResult: any) => {\n        let metrics: Metric[] = (Object.values(requestResult)[0] as any)?.data;\n        if (!metrics || metrics.length === 0) {\n          this.chartOptions.series[0].data = [];\n          this.chartInstance?.setOption(this.chartOptions, true);\n          return;\n        }\n\n        const metric = this.reportService\n          .getFlatValuesFromMetric(metrics)\n          .reduce((prev, current) => prev + (current.value as number), 0);\n        this.provideValue.bind(this)(metric);\n      });\n  }\n\n  private provideOptions() {\n    this.chartOptions.toolbox = this.toolbox;\n    this.chartOptions.series[0].min = this.config.parameters.min;\n    this.chartOptions.series[0].max = this.config.parameters.max;\n    const color = this.config.metrics[0]?.color ?? '#999';\n    this.chartOptions.series[0].splitLine.lineStyle.color = color;\n    this.chartOptions.series[0].axisLabel.color = color;\n    this.chartOptions.series[0].itemStyle.color = color;\n    this.chartOptions.series[0].detail.color = color;\n    this.chartOptions.series[0].anchor.itemStyle.borderColor = color;\n    this.chartOptions.series[0].detail.formatter = function (value) {\n      return FormatterService.formatValueWithDigits(\n        value,\n        this.config.metrics[0].unit,\n        this.config.parameters?.digits\n      );\n    }.bind(this);\n    this.chartOptions.series[0].detail.offsetCenter = ['0', '75%'];\n  }\n\n  private provideValue(value: number) {\n    const data = [\n      {\n        value\n      }\n    ];\n    this.chartOptions.series[0].data = data;\n    this.chartInstance?.setOption(this.chartOptions, true);\n  }\n}\n","<div class=\"gauge-container\"\n     [ngClass]=\"{'legend-bottom': !isDashboard}\"\n     [hidden]=\"!isGraphVisible\">\n  <div class=\"d-flex j-end a-center w-100 toolbox-container gap-1\"\n       [ngClass]=\"{'on-top': isDashboard}\"\n       *ngIf=\"!hideToolbox\">\n    <mat-icon (click)=\"this.onSaveAsImage()\"\n              color=\"primary\">file_download</mat-icon>\n    <mat-icon (click)=\"fullscreen()\"\n              color=\"primary\">open_in_full</mat-icon>\n  </div>\n\n  <gauge [options]=\"chartOptions\"\n         [date]=\"isDashboard ? getDate() : null\"\n         [timeRangeLocked]=\"config.timeRangeLocked\"\n         (chartInit)=\"onChartInit($event)\">\n  </gauge>\n</div>\n\n<ngx-indasuite-empty-state [text]=\"\n    config.metrics.length === 0\n      ? 'IndasuiteDataTableComponent.no_tags'\n      : 'IndasuiteDataTableComponent.no_data'\n  \"\n                           icon=\"speed\"\n                           *ngIf=\"!isGraphVisible\">\n</ngx-indasuite-empty-state>","import {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\n\n@Component({\n  selector: 'ngx-indasuite-refresh-interval',\n  templateUrl: './refresh-interval.component.html',\n  styleUrls: ['./refresh-interval.component.scss'],\n})\nexport class IndasuiteRefreshIntervalComponent {\n  @Input() activatedValue = false;\n  @Input() intervalValue = 10;\n\n  @Output() activatedChange = new EventEmitter();\n\n  onActivatedChange(event: MatSlideToggleChange) {\n    this.activatedChange.emit({\n      checked: event.checked,\n      interval: this.intervalValue,\n    });\n  }\n\n  get canActivate() {\n    return this.intervalValue >= 5;\n  }\n\n  @HostListener('document:visibilitychange', ['$event'])\n  visibilitychange(): void {\n    if (!this.activatedValue) return;\n\n    const event = {\n      checked: !document.hidden,\n      interval: this.intervalValue,\n    };\n    this.activatedChange.emit(event);\n  }\n}\n","<mat-form-field appearance=\"outline\">\n  <mat-label>Refresh (s)</mat-label>\n  <input\n    matInput\n    [(ngModel)]=\"intervalValue\"\n    type=\"number\"\n    min=\"5\"\n    [disabled]=\"activatedValue\"\n  />\n  <mat-slide-toggle\n    matSuffix\n    [(ngModel)]=\"activatedValue\"\n    (change)=\"onActivatedChange($event)\"\n    [disabled]=\"!canActivate\"\n  ></mat-slide-toggle>\n</mat-form-field>\n","import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport {\n  IndabaService,\n  Metric,\n  TagComponentDescription,\n} from '../../../api';\nimport { forkJoin } from 'rxjs';\nimport { FormatterService } from '../../services/formatter.service';\n\n@Component({\n  selector: 'ngx-indasuite-live-data-show',\n  templateUrl: './live-data-show.component.html',\n  styleUrls: ['./live-data-show.component.scss']\n})\nexport class IndasuiteLiveDataShowComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() tagDescriptions: Array<TagComponentDescription>;\n  @Input() graphTitle: string;\n  metrics: null | Array<any> = null;\n  autoRefreshTimeout = 10000;\n  displayedColumns = ['name', 'value', 'unit', 'timestamp'];\n  loading = true;\n  lastRefreshDate: Date = new Date();\n  interval: any = null;\n\n  displayDate(date: Date) {\n    return FormatterService.dateToString(date);\n  }\n\n  private loopRefresh() {\n    this.launchRefreshMetrics();\n    this.interval = setInterval(\n      this.launchRefreshMetrics.bind(this),\n      this.autoRefreshTimeout\n    );\n  }\n\n  constructor(private indabaService: IndabaService) { }\n  ngOnInit(): void {\n    if (!this.tagDescriptions) return;\n\n    this.loopRefresh();\n  }\n\n  ngOnChanges(): void {\n    this.loopRefresh();\n  }\n\n  autoRefreshChanged(event: any) {\n    const { checked, interval } = event;\n    if (this.interval) {\n      clearInterval(this.interval);\n    }\n    if (!checked) return;\n    this.autoRefreshTimeout = interval * 1000;\n    this.loopRefresh();\n  }\n\n  private launchRefreshMetrics() {\n    this.loading = true;\n\n    const tagsByDataSource = {};\n    const units: Array<string | undefined> = this.tagDescriptions.flatMap(tag => tag.unit);\n\n    this.tagDescriptions.forEach((desc) => {\n      if (tagsByDataSource[desc.datasource]) {\n        tagsByDataSource[desc.datasource] = [\n          ...tagsByDataSource[desc.datasource],\n          desc.name,\n        ];\n        return;\n      }\n      tagsByDataSource[desc.datasource] = [desc.name];\n    });\n\n    const requests = {};\n\n    Object.keys(tagsByDataSource).forEach((datasource) => {\n      requests[datasource] = this.indabaService.getLatest(\n        tagsByDataSource[datasource],\n        datasource\n      );\n    });\n\n    if (Object.keys(requests).length === 0) {\n      this.refresh([]);\n      return;\n    }\n\n    forkJoin(requests).subscribe((res) => {\n      let metrics: Array<any> = [];\n      Object.values(res).forEach((result: Array<Metric>) => {\n        metrics = [...metrics, ...result.map((r, i) => { return { ...r, unit: units[i] } })];\n      });\n      this.refresh(metrics);\n    });\n  }\n\n  private refresh(metrics) {\n    this.metrics = metrics;\n    this.lastRefreshDate = new Date();\n    this.loading = false;\n  }\n\n  public get lastRefreshDateFormatted() {\n    return this.displayDate(this.lastRefreshDate);\n  }\n\n  public getTagFormatedDate(timestamp: Date) {\n    return this.displayDate(new Date(timestamp));\n  }\n\n  public ngOnDestroy() {\n    if (this.interval) clearInterval(this.interval);\n  }\n}\n","<h3 class=\"indasuite-chart-title\">{{ graphTitle }}</h3>\n<table mat-table\n       *ngIf=\"metrics\"\n       [dataSource]=\"metrics\">\n  <ng-container matColumnDef=\"name\">\n    <th mat-header-cell\n        *matHeaderCellDef\n        id=\"tagNameHeader\">\n      {{ \"IndasuiteLiveDataShowComponent.tag\" | translate }}\n    </th>\n    <td mat-cell\n        *matCellDef=\"let element\">{{ element.name }}</td>\n  </ng-container>\n  <ng-container matColumnDef=\"value\">\n    <th mat-header-cell\n        *matHeaderCellDef\n        id=\"tagValueHeader\">\n      {{ \"IndasuiteLiveDataShowComponent.value\" | translate }}\n    </th>\n    <td mat-cell\n        *matCellDef=\"let element\">\n      {{ element.values[0].value }}\n    </td>\n  </ng-container>\n  <ng-container matColumnDef=\"unit\">\n    <th mat-header-cell\n        *matHeaderCellDef\n        id=\"tagUnitHeader\">\n      {{ \"IndasuiteLiveDataShowComponent.unit\" | translate }}\n    </th>\n    <td mat-cell\n        *matCellDef=\"let element\">{{ element.unit }}</td>\n  </ng-container>\n  <ng-container matColumnDef=\"timestamp\">\n    <th mat-header-cell\n        *matHeaderCellDef\n        id=\"tagTimestampHeader\">\n      {{ \"IndasuiteLiveDataShowComponent.timestamp\" | translate }}\n    </th>\n    <td mat-cell\n        *matCellDef=\"let element\">\n      {{ getTagFormatedDate(element.values[0].timestamp) }}\n    </td>\n  </ng-container>\n  <tr mat-header-row\n      *matHeaderRowDef=\"displayedColumns\"></tr>\n  <tr mat-row\n      *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>\n\n<span translate\n      [translateParams]=\"{ date: lastRefreshDateFormatted }\">\n  IndasuiteLiveDataShowComponent.last_refresh\n</span>\n\n<ngx-indasuite-refresh-interval [activatedValue]=\"true\"\n                                (activatedChange)=\"autoRefreshChanged($event)\"\n                                hidden></ngx-indasuite-refresh-interval>","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\n\n@Component({\n  selector: 'tag',\n  templateUrl: './tag.component.html',\n  styleUrls: ['./tag.component.scss'],\n})\nexport class TagComponent {\n  @Input() value: string;\n  @Input() date: string;\n  @Input() color: string;\n  @Input() lineHeight: string;\n  @Input() isFromMobile: boolean = false;\n  @Output() fontSizeChanged = new EventEmitter();\n}\n","<div class=\"d-flex a-center j-center flex-column flex-grow\">\n  <span class=\"date\">{{ date }} </span>\n  <span [ngStyle]=\"{ color: color, 'line-height': lineHeight }\"\n        class=\"value-container\"\n        [ngClass]=\"{'value-container-mobile': isFromMobile}\">{{ value }}</span>\n</div>","import { Component, ElementRef, Input } from '@angular/core';\n\nimport domtoimage from 'dom-to-image';\nimport { from, of } from 'rxjs';\nimport { switchMap, delay, map } from 'rxjs/operators';\n@Component({\n  selector: 'ngx-indasuite-download-to-img',\n  templateUrl: './download-to-img.component.html',\n  styleUrls: ['./download-to-img.component.scss'],\n})\nexport class IndasuiteDownloadToImgComponent {\n  @Input() elementRef: ElementRef;\n  @Input() fileName: string = 'fileName';\n\n  processing = false;\n\n  download() {\n    this.processing = true;\n\n    of({})\n      .pipe(\n        delay(1000),\n        switchMap(() =>\n          from(\n            domtoimage.toPng(this.elementRef.nativeElement, {\n              bgcolor: 'white',\n            })\n          ).pipe(\n            map((dataUrl: string) => {\n              const link = document.createElement('a');\n              link.download = `${this.fileName}.png`;\n              link.href = dataUrl;\n              link.click();\n              this.processing = false;\n            })\n          )\n        )\n      )\n      .subscribe();\n  }\n}\n","<button mat-icon-button\n        (click)=\"download()\">\n  <mat-icon>download</mat-icon>\n</button>","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { FormatterService } from '../../services/formatter.service';\nimport {\n  IndabaService,\n  InstantQueryDirection,\n  Metric,\n  ReportShowComponent,\n  ReportService,\n  TagComponentDescription\n} from '../../../api';\nimport { RefreshComponent } from '../../models/refreshComponent.model';\n\n@Component({\n  selector: 'ngx-indasuite-tag-show',\n  templateUrl: './tag-show.component.html',\n  styleUrls: ['./tag-show.component.scss'],\n})\nexport class IndasuiteTagShowComponent\n  implements OnInit, OnChanges, RefreshComponent {\n  @Input() config: ReportShowComponent;\n  @Input() hideToolbox: boolean = false;\n  @Input() isDashboard: boolean = false;\n  @Input() isFromMobile: boolean = false;\n\n  @Output() toggleFullscreen = new EventEmitter();\n\n  public value: number = null;\n  public fileName: string;\n  public tag: TagComponentDescription;\n  public unit: string;\n  public lineHeight: string = '16px';\n\n  @ViewChild('container') elementRef: ElementRef;\n\n  get displayDate() {\n    return `${FormatterService.dateToString(this.config.timeRange.startDate)} -\n      ${FormatterService.dateToString(this.config.timeRange.endDate)}`;\n  }\n\n  get displayValue() {\n    return FormatterService.formatValueWithDigits(\n      this.value,\n      this.unit,\n      this.config.parameters?.digits\n    );\n  }\n\n  constructor(\n    public indabaService: IndabaService,\n    private reportService: ReportService\n  ) { }\n\n  smoothRefresh(): void {\n    this.ngOnInit();\n  }\n\n  ngOnInit(): void {\n    if (!this.config) return;\n    this.getData.bind(this)();\n    this.fileName = FormatterService.componentExportFileName(this.config);\n  }\n\n  ngOnChanges() {\n    this.ngOnInit();\n  }\n\n  public getData() {\n    this.tag = this.config.metrics[0];\n    this.unit = this.tag.unit;\n    this.value = null;\n\n    if (this.config.metrics[0].aggregation === 'auto' || this.config.metrics[0].aggregation === 'none')\n      this.refreshWithInstantValue();\n    else\n      this.refreshWithAggregate();\n  }\n\n  public fullscreen() {\n    this.toggleFullscreen.emit({\n      component: 'tag',\n      startDate: this.displayDate,\n      value: this.displayValue,\n      title: this.config.title,\n      description: this.config.description,\n      date: this.displayDate,\n      color: this.tag.color,\n      lineHeight: this.lineHeight\n    });\n  }\n\n  private refreshWithInstantValue() {\n    const [tag] = this.config.metrics;\n    this.indabaService\n      .getInstant(\n        tag.name,\n        this.config.timeRange.endDate,\n        tag.datasource,\n        InstantQueryDirection.before\n      )\n      .subscribe((res) => {\n        if (!res) return;\n        this.value = res.data[0].value as number;\n      });\n  }\n\n  private refreshWithAggregate() {\n    const metrics: Array<TagComponentDescription> = this.config.metrics\n      .map(m => {\n        if (m.aggregation === 'auto' || m.aggregation === 'none') return m;\n        return {\n          ...m,\n          aggregation: {\n            ...m.aggregation, interval: \"\", precision: undefined\n          }\n        } as TagComponentDescription;\n      });\n    this.reportService\n      .getSeries(\n        this.config.timeRange.startDate,\n        this.config.timeRange.endDate,\n        this.config.limit,\n        metrics,\n        true\n      )\n      .subscribe((requestResult: any) => {\n        let metrics: Metric[] = (Object.values(requestResult)[0] as any)?.data;\n        if (!metrics || metrics.length === 0) {\n          this.value = null;\n          return;\n        }\n\n        const metric = this.reportService\n          .getFlatValuesFromMetric(metrics)\n          .reduce((prev, current) => prev + (current.value as number), 0);\n\n        this.value = metric;\n      });\n  }\n\n  public fontSizeChanged(size: number) {\n    this.lineHeight = `${size}px`;\n  }\n}\n","<div class=\"d-flex a-center j-center tag-show-container flex-column\"\n     #container>\n     <div class=\"d-flex a-center j-end w-100 gap-1\"\n          [ngClass]=\"{'on-top': isDashboard}\"\n          *ngIf=\"!hideToolbox\">\n          <ngx-indasuite-download-to-img [elementRef]=\"elementRef\"\n                                         [fileName]=\"fileName\"></ngx-indasuite-download-to-img>\n          <mat-icon (click)=\"fullscreen()\"\n                    color=\"primary\">open_in_full</mat-icon>\n     </div>\n     <div class=\"date\"\n          *ngIf=\"isDashboard\">{{displayDate}} <mat-icon *ngIf=\"this.config.timeRangeLocked\">lock</mat-icon></div>\n     <tag [value]=\"this.displayValue\"\n          [color]=\"this.tag.color\"\n          [lineHeight]=\"this.lineHeight\"\n          [isFromMobile]=\"this.isFromMobile\"\n          (fontSizeChanged)=\"fontSizeChanged($event)\">\n     </tag>\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { DatabaseService } from '../../api';\n\n@Component({\n  selector: 'ngx-indasuite-database-select-list',\n  templateUrl: './database-select-list.component.html'\n})\nexport class IndasuiteDatabaseSelectListComponent {\n  constructor(private databaseService: DatabaseService) {\n    this.databaseService.getDatabaseList$().subscribe((res) => {\n      this.dataBaseArray = res;\n      if (this.hideSystemDatasource)\n        this.dataBaseArray = this.dataBaseArray.filter(datasource => datasource !== \"system\")\n      this.initSelect();\n    });\n  }\n\n  @Input() label = 'DatabaseSelectListComponent.label';\n  @Input() defaultOption = 'DatabaseSelectListComponent.defaultOption';\n  @Input() filtered = false;\n  @Input() defaultValueNull = false;\n  @Input() hideSystemDatasource = false;\n  @Input() database: string | null = null;\n\n  dataBaseArray: null | Array<string> = null;\n\n\n  get loading(): boolean {\n    return this.dataBaseArray === null;\n  }\n\n  @Output() databaseSelected: EventEmitter<string> = new EventEmitter();\n  @Output() databaseChange = this.databaseSelected; // add two way binding and not break existing\n\n  onSelectDatabase({ value }: MatSelectChange) {\n    this.database = value;\n    this.databaseSelected.emit(this.database);\n  }\n\n  private initSelect = () => {\n    if (!this.dataBaseArray || this.dataBaseArray.length == 0 || this.defaultValueNull || this.database)\n      return;\n\n    const [value] = this.dataBaseArray;\n    this.database = value;\n    this.databaseSelected.emit(this.database);\n  };\n}\n","<ng-container *ngIf=\"!loading\">\n  <mat-form-field appearance=\"outline\"\n                  [ngClass]=\"{ filtered: filtered }\">\n    <mat-label translate>{{ label }}</mat-label>\n    <mat-select [(ngModel)]=\"database\"\n                (selectionChange)=\"onSelectDatabase($event)\">\n      <mat-option [value]=\"null\"\n                  disabled\n                  *ngIf=\"defaultOption\">\n        {{ defaultOption | translate }}\n      </mat-option>\n      <mat-option *ngFor=\"let db of dataBaseArray\"\n                  [value]=\"db\">\n        {{ db }}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n</ng-container>\n","import {\n  Directive,\n  Input,\n  OnInit,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { ProfileService } from '../../api';\n\n@Directive({\n  selector: '[appHasScope]',\n})\nexport class IndasuiteHasScopeDirective implements OnInit {\n  @Input() set appHasScope(scope: string) {\n    this.scope = scope?.split(' ');\n    this.updateView();\n  }\n  private scope: string[];\n  private roles: string[];\n  private hasView: boolean;\n\n  constructor(\n    private templateRef: TemplateRef<any>,\n    private viewContainer: ViewContainerRef,\n    private profileService: ProfileService\n  ) {}\n\n  ngOnInit(): void {\n    this.profileService.getAuthorization().subscribe((roles) => {\n      this.roles = roles?.split(' ');\n      this.updateView();\n    });\n  }\n\n  private updateView() {\n    const authorized = this.checkPermission();\n    if (authorized && !this.hasView) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n      this.hasView = true;\n      return;\n    }\n    if (!authorized && this.hasView) {\n      this.viewContainer.clear();\n      this.hasView = false;\n    }\n  }\n\n  private checkPermission(): boolean {\n    return (\n      !this.scope ||\n      (this.roles &&\n        this.scope.every((directiveScope) =>\n          this.roles.includes(directiveScope)\n        ))\n    );\n  }\n}\n","import {\n  trigger,\n  state,\n  style,\n  transition,\n  animate,\n} from '@angular/animations';\n\nexport const onSideNavChange = trigger('onSideNavChange', [\n  state(\n    'close',\n    style({\n      'min-width': '50px',\n      'max-width': '70px',\n    })\n  ),\n  state(\n    'open',\n    style({\n      'min-width': '240px',\n    })\n  ),\n  transition('close => open', animate('250ms ease-in')),\n  transition('open => close', animate('250ms ease-in')),\n]);\n\nexport const onMainContentChange = trigger('onMainContentChange', [\n  state(\n    'close',\n    style({\n      'margin-left': '62px',\n      'padding-left': '40px',\n      'padding-right': '20px',\n    })\n  ),\n  state(\n    'open',\n    style({\n      'margin-left': '240px',\n      'padding-left': '40px',\n      'padding-right': '20px',\n    })\n  ),\n  transition('close => open', animate('250ms ease-in')),\n  transition('open => close', animate('250ms ease-in')),\n]);\n\nexport const animateText = trigger('animateText', [\n  state(\n    'hide',\n    style({\n      display: 'none',\n      opacity: 0,\n    })\n  ),\n  state(\n    'show',\n    style({\n      display: 'block',\n      opacity: 1,\n    })\n  ),\n  transition('close => open', animate('350ms ease-in')),\n  transition('open => close', animate('200ms ease-out')),\n]);\n","import { Component, Input } from '@angular/core';\nimport { animateText } from '../animations/animations';\nimport { DrawerItem } from '../models/drawer.model';\n\n@Component({\n  selector: 'ngx-indasuite-drawer-item',\n  templateUrl: './drawer-item.component.html',\n  styleUrls: ['./drawer-item.component.scss'],\n  animations: [animateText],\n})\nexport class DrawerItemComponent {\n  @Input() item: DrawerItem;\n  @Input() linkText: boolean;\n}\n","<div class=\"itemDrawer\">\n  <div>\n    <mat-icon\n      mat-list-icon\n      [matTooltip]=\"item.label | translate\"\n      [matTooltipDisabled]=\"linkText\"\n      >{{ item.icon }}</mat-icon\n    >\n  </div>\n  <span [@animateText]=\"linkText ? 'show' : 'hide'\" class=\"ml-2\">{{\n    item.label | translate\n  }}</span>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SidenavService {\n  public sideNavState$: Subject<boolean> = new Subject();\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnDestroy } from '@angular/core';\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { filter, interval, Subscription, tap } from 'rxjs';\nimport { AdminStatusCodeToString, FormulaCodeToString, IndabaCodeToString, IndametaV2CodeToString, ToastrData, IndasuiteError, ToastrLevel, AlertingStatusCodeToString, UserScriptStatusCodeToString } from '../../api';\n\n@Component({\n  standalone: true,\n  selector: 'app-toastr',\n  templateUrl: './toastr.component.html',\n  styleUrls: ['./toastr.component.scss'],\n  imports: [MatButtonModule, MatDialogModule, MatExpansionModule, MatIconModule, TranslateModule, MatTooltipModule, CommonModule]\n})\nexport class IndasuiteToastrComponent implements OnDestroy {\n\n  private timerSubscription: Subscription;\n\n  // display variables with their default value if data is empty\n  public errorMessage = 'Error.Unknown';\n  public errors: Array<IndasuiteError> = [];\n  public numberOfErrorsLeft: number = 0;\n  public level: ToastrLevel = 'Error';\n\n  constructor(@Inject(MAT_BOTTOM_SHEET_DATA) public data: ToastrData, private mbsr: MatBottomSheetRef) {\n    if (!this.data)\n      return;\n\n    this.level = this.data.level;\n\n    switch (this.data.level) {\n      case 'Forbidden':\n        this.errorMessage = 'ForbiddenModal.title';\n        this.errors = [{\n          message: 'ForbiddenModal.text',\n          error: null,\n          statusCode: null\n        }];\n        break;\n\n      case 'TooManyRequests':\n        this.errorMessage = 'TooManyRequestsModal.title';\n        this.errors = [{\n          message: 'TooManyRequestsModal.text',\n          error: null,\n          statusCode: null\n        }];\n        break;\n\n      case 'ConflictRequests':\n        this.errorMessage = 'ConflictRequestsModal.title';\n        this.errors = [];\n        this.numberOfErrorsLeft = 0;\n        break;\n\n      case 'Info':\n        this.errorMessage = this.data.title;\n        break;\n\n      default:\n        let codeToString = this.getDictFromAPI(this.data.api);\n        this.numberOfErrorsLeft = this.data.error?.length - 9 || 0;\n        this.errors = this.data.error?.splice(0, 9) || [];\n        if (codeToString && this.data.errorCode)\n          this.errorMessage = 'Error.'.concat(this.data.api, '.', codeToString[this.data.errorCode]);\n        break;\n    }\n\n    if (this.data.timer > 0) {\n      this.timerSubscription = interval(1000)\n        .pipe(\n          tap(() => this.data.timer--),\n          filter(() => this.data.timer <= 0)\n        ).subscribe(() => this.close());\n    }\n\n  }\n\n  ngOnDestroy(): void {\n    this.timerSubscription?.unsubscribe();\n  }\n\n  public stopTimer() {\n    if (!this.data.timer)\n      return;\n    this.timerSubscription?.unsubscribe();\n    this.data.timer = null;\n  }\n\n  public close(): void {\n    this.mbsr.dismiss();\n  }\n\n  private getDictFromAPI(api: string): Record<number, string> {\n    switch (api) {\n      case 'Admin':\n        return AdminStatusCodeToString;\n      case 'Alerting':\n        return AlertingStatusCodeToString;\n      case 'Formulas':\n        return FormulaCodeToString;\n      case 'Indaba':\n        return IndabaCodeToString;\n      case 'IndametaV2':\n        return IndametaV2CodeToString;\n      case 'UserScript':\n        return UserScriptStatusCodeToString;\n      default:\n        return null;\n    }\n  }\n}\n","<div class=\"toastr\">\n  <container-element [ngSwitch]=\"this.level\"\n                     class=\"a-self-bottom\">\n    <mat-icon *ngSwitchCase=\"'Warning'\"\n              class=\"icon orange-icon\">warning</mat-icon>\n    <mat-icon *ngSwitchCase=\"'Info'\"\n              class=\"icon blue-icon\">info</mat-icon>\n    <mat-icon *ngSwitchDefault\n              class=\"icon red-icon\">error</mat-icon>\n  </container-element>\n  <mat-expansion-panel class=\"flex-grow w-100\"\n                       [disabled]=\"this.errors?.length === 0\"\n                       (opened)=\"stopTimer()\">\n    <mat-expansion-panel-header>\n      <mat-panel-title translate>\n        {{this.errorMessage}}\n      </mat-panel-title>\n    </mat-expansion-panel-header>\n    <ng-container *ngFor=\"let e of this.errors\">\n      <div class=\"grid gap-4 d-flex\">\n        <mat-icon class=\"intext-icon\">chevron_right</mat-icon>\n        {{e.message | translate}}\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"this.numberOfErrorsLeft > 0\"\n                  class=\"d-flex gap-4\">\n      <mat-icon>chevron-right</mat-icon>\n      {{this.numberOfErrorsLeft}} {{'IndasuiteToastrComponent.more' | translate}}\n    </ng-container>\n  </mat-expansion-panel>\n\n  <button id=\"close-btn\"\n          class=\"a-self-bottom\"\n          mat-raised-button\n          color=\"primary\"\n          (click)=\"close()\">\n    {{'close' | translate}}\n    <span *ngIf=\"this.data.timer > 0\">({{this.data.timer}})</span>\n  </button>\n\n</div>\n","import {\n  Component,\n  Input\n} from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { FormatterService } from '../../services/formatter.service';\n\ninterface TableData {\n  name: string;\n  value: string;\n  date: Date;\n}\n\n@Component({\n  selector: 'data-table',\n  templateUrl: './data-table.component.html',\n  styleUrls: ['./data-table.component.scss'],\n})\nexport class DataTableComponent {\n  @Input() datasource: MatTableDataSource<TableData>;\n\n  displayedColumns = ['name', 'value', 'date'];\n\n  displayDate(date: Date) {\n    return FormatterService.dateToString(date);\n  }\n}\n","<table mat-table\n       [dataSource]=\"datasource\"\n       class=\"mat-elevation-z8 w-100\">\n  <ng-container matColumnDef=\"name\">\n    <th mat-header-cell\n        *matHeaderCellDef>Nom</th>\n    <td mat-cell\n        *matCellDef=\"let data\"\n        class=\"break-word\">\n      {{ data.name }}\n    </td>\n  </ng-container>\n  <ng-container matColumnDef=\"value\">\n    <th mat-header-cell\n        *matHeaderCellDef\n        class=\"text-center\">Valeur</th>\n    <td mat-cell\n        *matCellDef=\"let data\"\n        class=\"break-word text-center\">\n      {{ data.value }}\n    </td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"date\">\n    <th mat-header-cell\n        *matHeaderCellDef\n        class=\"text-center\">Horodatage</th>\n    <td mat-cell\n        *matCellDef=\"let data\"\n        class=\"break-word text-center\">\n      {{ displayDate(data.date) }}\n    </td>\n  </ng-container>\n  <tr mat-header-row\n      *matHeaderRowDef=\"displayedColumns\"></tr>\n  <tr mat-row\n      *matRowDef=\"let row; columns: displayedColumns\"></tr>\n</table>","import {\r\n  Component,\r\n  Inject\r\n} from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ECharts } from 'echarts';\r\nimport { ExplorerGraph, ExplorerService, RelativeTimeRangeTypes } from '../../../api';\r\n\r\n@Component({\r\n  selector: 'indaboard-fullscreen',\r\n  templateUrl: './indaboard-fullscreen.component.html',\r\n  styleUrls: ['./indaboard-fullscreen.component.scss']\r\n})\r\nexport class IndaboardFullscreenComponent {\r\n  public chartsInstance: ECharts;\r\n  public link: string;\r\n\r\n  constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }\r\n\r\n  public chartInitiated(instance: ECharts) {\r\n    if (this.data.hasLink) {\r\n      this.data.componentData.metrics = this.data.componentData.metrics.map(metric => { return { ...metric, hidden: false } });\r\n      this.buildLink();\r\n      this.chartsInstance = instance;\r\n      this.chartsInstance.on('legendselectchanged', this.onLegendSelectChanged.bind(this));\r\n    }\r\n  }\r\n\r\n  private onLegendSelectChanged(tag: any) {\r\n    if (this.data?.component === 'graph' && this.data.environment && this.data.componentData) {\r\n      const index = this.data.componentData.metrics.map(g => g.displayName).indexOf(tag.name);\r\n      if (index >= 0 && index < this.data.componentData.metrics.length && this.data.componentData.metrics[index]) {\r\n        this.data.componentData.metrics[index].hidden = !this.data.componentData.metrics[index].hidden;\r\n      }\r\n      this.buildLink();\r\n    }\r\n  }\r\n\r\n  private buildLink() {\r\n    const params = JSON.stringify(ExplorerService.formatUrlParams(\r\n      this.data.componentData.metrics.map(metric => { return { ...metric, tag: metric.name, source: metric.datasource } as ExplorerGraph }),\r\n      this.data.componentData.parameters.axes,\r\n      this.data.componentData.timeRange.startDate,\r\n      this.data.componentData.timeRange.endDate,\r\n      'interval',\r\n      true,\r\n      false\r\n    ));\r\n    this.link = `${window.location.origin}/home/chart?params=${encodeURIComponent(params)}`;\r\n  }\r\n}\r\n","<button class=\"close-button\"\r\n        mat-icon-button\r\n        aria-label=\"close dialog\"\r\n        mat-dialog-close>\r\n     <mat-icon>close</mat-icon>\r\n</button>\r\n\r\n<div class=\"title\">\r\n     <div class=\"ellipsis\">{{this.data.title}}</div>\r\n     <a *ngIf=\"this.link\"\r\n        class=\"link\"\r\n        [href]=\"this.link\"\r\n        target=\"_blank\">\r\n          <mat-icon>open_in_new</mat-icon>\r\n     </a>\r\n</div>\r\n<div class=\"description\">{{this.data.description}}</div>\r\n<p class=\"date\">\r\n     {{this.data.startDate}} <ng-container *ngIf=\"this.data.endDate\">- {{this.data.endDate}}</ng-container>\r\n     <mat-icon *ngIf=\"this.data.timeRangeLocked\">lock</mat-icon>\r\n</p>\r\n\r\n<div class=\"component\">\r\n     <tag *ngIf=\"this.data.component === 'tag'\"\r\n          [value]=\"this.data.value\"\r\n          [color]=\"this.data.color\"\r\n          [lineHeight]=\"this.data.lineHeight\">\r\n     </tag>\r\n\r\n     <gauge *ngIf=\"this.data.component === 'gauge'\"\r\n            [options]=\"this.data.options\">\r\n     </gauge>\r\n\r\n     <ngx-indasuite-chart-graph *ngIf=\"this.data.component === 'graph'\"\r\n                                class=\"-mt\"\r\n                                [options]=\"this.data.options\"\r\n                                [loading]=\"this.data.loading\"\r\n                                (chartInit)=\"this.chartInitiated($event)\">\r\n     </ngx-indasuite-chart-graph>\r\n\r\n     <data-table *ngIf=\"this.data.component === 'table'\"\r\n                 [datasource]=\"this.data.datasource\">\r\n     </data-table>\r\n</div>","import { ComponentFactoryResolver, createComponent, createEnvironmentInjector, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport {\n  ConfirmOptionsModal,\n  DialogData,\n  SimpleDialogData,\n  TextTranslation\n} from '../models/modal.models';\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\nimport { IndasuiteToastrComponent } from '../toastr/toastr.component';\nimport { ToastrData } from '../../api';\nimport { MatDialog } from '@angular/material/dialog';\nimport { IndaboardFullscreenComponent } from '../modals/indaboard-fullscreen/indaboard-fullscreen.component';\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IndasuiteModalService {\n  public readonly openDialogSubject = new Subject<DialogData>();\n  public readonly afterClosedSubject = new Subject<any>();\n\n  public readonly openSimpleDialogSubject = new Subject<SimpleDialogData>();\n\n  constructor(private mbs: MatBottomSheet, private dialog: MatDialog) { }\n\n  openDialog(data: DialogData): Observable<any> {\n    this.openDialogSubject.next(data);\n    return this.afterClosedSubject.pipe(first());\n  }\n\n  openDeleteDialog(text: TextTranslation): Observable<any> {\n    return this.openSimpleDialog('DeleteModal.title', text, 'delete_forever', {\n      confirm: 'DeleteModal.confirm',\n      cancel: 'DeleteModal.cancel',\n    });\n  }\n\n  openSimpleDialog(\n    title: string,\n    text: TextTranslation,\n    icon: string,\n    options: ConfirmOptionsModal\n  ) {\n    this.openSimpleDialogSubject.next({\n      text,\n      icon,\n      title,\n      options,\n    });\n    return this.afterClosedSubject.pipe(first());\n  }\n\n  openImportDialog(text: TextTranslation): Observable<any> {\n    return this.openSimpleDialog('ImportModal.title', text, 'publish', {\n      confirm: 'ImportModal.confirm',\n      cancel: 'ImportModal.cancel',\n    });\n  }\n\n  openInfoDialog(rightSide: TemplateRef<any>): Observable<any> {\n    return this.openDialog.bind(this)({\n      rightSide,\n      icon: 'info',\n    });\n  }\n\n  dialogClosed(result: any) {\n    this.afterClosedSubject.next(result);\n  }\n\n  openToastr(data: ToastrData): void {\n    let panelClass: 'bottom-sheet-error' | 'bottom-sheet-warning' | 'bottom-sheet-info' = 'bottom-sheet-info';\n\n    switch (data.level) {\n      case 'Error':\n      case 'Forbidden':\n        panelClass = 'bottom-sheet-error';\n        break;\n      case 'Warning':\n      case 'TooManyRequests':\n      case 'ConflictRequests':\n        panelClass = 'bottom-sheet-warning';\n    }\n\n    this.mbs.open(IndasuiteToastrComponent, {\n      hasBackdrop: false,\n      closeOnNavigation: false,\n      disableClose: false,\n      panelClass,\n      data\n    })\n  }\n\n  // data contains at least the component to display\n  // remaining properties depend on called component, so we can't define them precisely\n  fullscreen(data: any): void {\n    this.dialog.open(\n      IndaboardFullscreenComponent,\n      {\n        height: \"98%\",\n        width: \"98%\",\n        disableClose: false,\n        data\n      }\n    );\n  }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatAccordion } from '@angular/material/expansion';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { animateText, onSideNavChange } from '../animations/animations';\nimport { DrawerItem } from '../models/drawer.model';\nimport { SidenavService } from '../services/sidenav.service';\nimport { IndasuiteModalService } from '../services/indasuite-modal.service';\n\n@Component({\n  selector: 'ngx-indasuite-drawer',\n  templateUrl: './drawer.component.html',\n  styleUrls: ['./drawer.component.scss'],\n  animations: [onSideNavChange, animateText],\n})\nexport class IndasuiteDrawerComponent implements OnInit, OnDestroy {\n  constructor(private router: Router, private sidenavService: SidenavService, private modalService: IndasuiteModalService) { }\n\n  @Input() items: Array<DrawerItem> = [];\n\n  @ViewChild(MatAccordion) accordion: MatAccordion;\n\n  private _flatItems: DrawerItem[] = null;\n\n  selected: DrawerItem = null;\n  sideNavState: boolean = false;\n  linkText: boolean = false;\n  routerSubscription: Subscription;\n\n  readonly menuItem: DrawerItem = {\n    label: '',\n    icon: 'menu',\n    behavior: 'currentTab',\n    children: [],\n    value: '',\n  };\n\n  selectionChange(item: DrawerItem) {\n    const { value, behavior } = item;\n    switch (behavior) {\n      case 'currentTab':\n        this.router.navigateByUrl(value);\n        return;\n      case 'download':\n        fetch(value)\n          .then((response) => {\n            response.blob()\n              .then((blob) => {\n                const link = document.createElement(\"a\");\n                link.href = URL.createObjectURL(blob);\n                link.download = value.split('/')[value.split('/').length - 1];\n                link.click();\n              });\n          })\n          .catch((e) => {\n            this.modalService.openToastr({ api: 'Other', error: [{ error: 'File Unavailable', message: 'IndasuiteDrawerComponent.fileUnavailableError', statusCode: \"1\" }], errorCode: 1, level: 'Error', timer: 10 });\n          });\n        return;\n      case 'newTab':\n        window.open(value, '_blank');\n        return;\n    }\n  }\n\n  onSidenavToggle() {\n    this.sideNavState = !this.sideNavState;\n\n    if (!this.sideNavState) this.accordion.closeAll();\n\n    setTimeout(() => {\n      this.linkText = this.sideNavState;\n    }, 200);\n    this.sidenavService.sideNavState$.next(this.sideNavState);\n  }\n\n  private getFlatItems() {\n    if (this._flatItems !== null) return;\n\n    const childrenItems = this.items\n      .filter((item) => item.children.length > 0)\n      .map((item) => item.children);\n\n    this._flatItems = [...this.items];\n\n    childrenItems.forEach(\n      (childrenItem) =>\n        (this._flatItems = [...this._flatItems, ...childrenItem])\n    );\n  }\n\n  private refreshSelected() {\n    this.getFlatItems();\n    this.selected = this._flatItems.find((item) =>\n      this.router.url.startsWith(item.value)\n    );\n  }\n\n  isChildSelected(item: DrawerItem) {\n    return (\n      !!this.selected &&\n      !!item.children.find((child) => child.value === this.selected?.value)\n    );\n  }\n\n  expansionPanelOpened() {\n    if (this.sideNavState) return;\n    this.onSidenavToggle();\n  }\n\n  ngOnInit(): void {\n    this.refreshSelected();\n    this.routerSubscription = this.router.events\n      .pipe(filter((event) => event instanceof NavigationEnd))\n      .subscribe(this.refreshSelected.bind(this));\n  }\n\n  ngOnDestroy(): void {\n    this.routerSubscription.unsubscribe();\n  }\n}\n","<div [@onSideNavChange]=\"sideNavState ? 'open' : 'close'\">\n  <mat-accordion #accordion>\n    <ngx-indasuite-drawer-item\n      [item]=\"menuItem\"\n      [linkText]=\"linkText\"\n      class=\"mat-expansion-panel-header list-entry\"\n      (click)=\"onSidenavToggle()\"\n    ></ngx-indasuite-drawer-item>\n    <ng-container *ngFor=\"let item of items\">\n      <ngx-indasuite-drawer-item\n        [item]=\"item\"\n        [linkText]=\"linkText\"\n        *ngIf=\"!item.children?.length\"\n        [ngClass]=\"{\n          'mat-expansion-panel-header': true,\n          'list-entry': true,\n          'list-entry-selected': selected?.value === item.value,\n          'icon-alone': true\n        }\"\n        (click)=\"selectionChange(item)\"\n      ></ngx-indasuite-drawer-item>\n      <mat-expansion-panel\n        hideToggle\n        (opened)=\"expansionPanelOpened()\"\n        *ngIf=\"item.children?.length\"\n      >\n        <mat-expansion-panel-header\n          [ngClass]=\"{\n            'list-entry': true,\n            'list-entry-selected': isChildSelected(item)\n          }\"\n        >\n          <mat-panel-title>\n            <ngx-indasuite-drawer-item\n              [item]=\"item\"\n              [linkText]=\"linkText\"\n            ></ngx-indasuite-drawer-item>\n          </mat-panel-title>\n        </mat-expansion-panel-header>\n        <ng-container *ngFor=\"let child of item.children\">\n          <ngx-indasuite-drawer-item\n            [item]=\"child\"\n            [linkText]=\"linkText\"\n            [ngClass]=\"{\n              'mat-expansion-panel-header': true,\n              'list-entry': true,\n              'list-entry-selected': selected?.value === child.value\n            }\"\n            class=\"mat-expansion-panel-header list-entry\"\n            (click)=\"selectionChange(child)\"\n          ></ngx-indasuite-drawer-item>\n        </ng-container>\n      </mat-expansion-panel>\n    </ng-container>\n    <mat-expansion-panel class=\"hidden-panel\">\n      <mat-expansion-panel-header\n        ><mat-panel-title></mat-panel-title>\n      </mat-expansion-panel-header>\n    </mat-expansion-panel>\n  </mat-accordion>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { PaginationModel } from '../../api';\n\n@Component({\n  selector: 'ngx-indasuite-hashed-pagination',\n  templateUrl: './hashed-pagination.component.html',\n  styleUrls: ['./hashed-pagination.component.scss'],\n})\nexport class IndasuiteHashedPaginationComponent {\n  @Input() pageSizeOptions: Array<number> = [5, 10, 20, 50];\n  @Input() pageSize = 50;\n  @Output() pageSizeChange = new EventEmitter<number>();\n  @Output() nextPage = new EventEmitter<PaginationModel>();\n\n  @ViewChild('paginator') paginator: MatPaginator;\n\n  currentPage;\n  length;\n\n  hashStack: PaginationModel[];\n\n  constructor() {\n    this.init();\n  }\n\n  get currentPaginationModel() {\n    if (!this.hashStack?.length && this.hashStack.length <= 1) return undefined;\n    return this.hashStack[this.hashStack.length - 2];\n  }\n\n  pageChanged(event: PageEvent) {\n    if (this.pageSize !== event.pageSize) {\n      this.pageSize = event.pageSize;\n      this.pageSizeChange.emit(event.pageSize);\n      this.init();\n      return;\n    }\n\n    if (event.pageIndex > event.previousPageIndex) {\n      this.nextPage.emit(this.hashStack[this.hashStack.length - 1]);\n      return;\n    }\n    this.hashStack = this.hashStack.slice(0, this.hashStack.length - 2);\n    this.nextPage.emit(this.hashStack[this.hashStack.length - 1]);\n  }\n\n  private updatePaginator() {\n    if (!this.paginator) return;\n    this.paginator.pageIndex = this.currentPage;\n    this.paginator.pageSize = this.pageSize;\n    this.paginator.length = this.length;\n  }\n\n  addNextPage(pagination: PaginationModel) {\n    this.hashStack = [...this.hashStack, pagination];\n\n    if (!pagination.isComplete) {\n      if (this.hashStack.length > 1) {\n        this.length = this.pageSize * 3;\n        this.currentPage = 1;\n        this.updatePaginator();\n        return;\n      }\n      this.length = this.pageSize * 3;\n      this.currentPage = 0;\n      this.updatePaginator();\n      return;\n    }\n\n    if (this.hashStack.length > 1) {\n      this.length = this.pageSize * 3;\n      this.currentPage = 2;\n      this.updatePaginator();\n      return;\n    }\n\n    this.length = 0;\n    this.currentPage = 0;\n    this.updatePaginator();\n  }\n\n  updateLastPage(pagination: PaginationModel) {\n    this.hashStack = this.hashStack.slice(0, this.hashStack.length - 1);\n    this.addNextPage(pagination);\n  }\n\n  init() {\n    this.currentPage = 0;\n    this.length = 0;\n    this.updatePaginator();\n\n    this.hashStack = [];\n  }\n}\n","<mat-paginator #paginator\n               [pageSizeOptions]=\"pageSizeOptions\"\n               [pageSize]=\"pageSize\"\n               [length]=\"length\"\n               [pageIndex]=\"currentPage\"\n               (page)=\"pageChanged($event)\"\n               class=\"hashed-paginator\">\n</mat-paginator>","import { Component, Input, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { EnvironmentService } from '../services/environment.service';\n\n@Component({\n  selector: 'ngx-indasuite-header2',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.scss'],\n})\nexport class IndasuiteHeaderComponent2 implements OnInit {\n  public now: Date = new Date();\n\n  EnvironmentService = EnvironmentService;\n\n  @Input() homeUrl = '/home';\n  viewName: string;\n\n  constructor(private router: Router, public titleService: Title) { }\n\n  navigate(): void {\n    const absoluteRegex = new RegExp('^(?:[a-z]+:)?//', 'i');\n\n    if (absoluteRegex.test(this.homeUrl)) {\n      document.location.href = this.homeUrl;\n      return;\n    }\n    this.router.navigate([this.homeUrl]);\n  }\n\n  ngOnInit() {\n    this.router.events\n      .pipe(\n        filter((event) => event instanceof NavigationEnd),\n        map(() => this.router)\n      )\n      .subscribe(() => {\n        this.viewName = this.titleService.getTitle();\n      });\n  }\n}\n","<div class=\"header-container\">\n  <div class=\"logo pointer mobile-hidden\" (click)=\"navigate()\">\n    <img [src]=\"EnvironmentService.ApplicationLogo\" alt=\"Logo io-base\" />\n  </div>\n  <div class=\"container\">\n    <div class=\"header-menu\">\n      <h2 translate class=\"text-primary\">application_short_name</h2>\n      <div class=\"vertical-divider-large mobile-hidden\"></div>\n      <h2 class=\"text-primary\">{{ titleService.getTitle().toUpperCase() }}</h2>\n    </div>\n  </div>\n  <div class=\"d-flex a-center\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { ApiInfoService, ApiInfo } from '../../api';\nimport { Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { EnvironmentService } from '../services/environment.service';\n\n@Component({\n  selector: 'ngx-indasuite-versions',\n  templateUrl: './indasuite-versions.component.html',\n  styleUrls: ['./indasuite-versions.component.scss'],\n})\nexport class IndasuiteVersionsComponent {\n  appVersion: string;\n\n  environment = EnvironmentService;\n\n  applications = {\n    indabaVersion: {\n      label: 'INDABA API',\n      version: '',\n      obs: this.apiInfoService.getIndabaInfo(),\n      loading: false,\n    },\n    formulasVersion: {\n      label: 'FORMULAS API',\n      version: '',\n      obs: this.apiInfoService.getFormulaInfo(),\n      loading: false,\n    },\n    indametaVersion: {\n      label: 'INDAMETA API',\n      version: '',\n      obs: this.apiInfoService.getIndametaInfo(),\n      loading: false,\n    },\n    adminVersion: {\n      label: 'ADMIN API',\n      version: '',\n      obs: this.apiInfoService.getAdminInfo(),\n      loading: false,\n    },\n    alertingVersion: {\n      label: 'ALERTING API',\n      version: '',\n      obs: this.apiInfoService.getAlertingInfo(),\n      loading: false,\n    },\n  };\n\n  constructor(\n    private apiInfoService: ApiInfoService,\n    @Inject(MAT_DIALOG_DATA) public data: any\n  ) {\n    this.appVersion = data.appVersion;\n\n    Object.keys(this.applications).forEach((key) => {\n      this.applications[key].loading = true;\n      this.pipeObservable(this.applications[key].obs, key).subscribe();\n    });\n  }\n\n  private handleInfoResponse(key: string, info: ApiInfo) {\n    this.applications[key].version = info.applicationVersion;\n    this.applications[key].loading = false;\n  }\n\n  private handleInfoErrorResponse(key: string) {\n    this.applications[key].version = null;\n    this.applications[key].loading = false;\n    return of(undefined);\n  }\n\n  private pipeObservable(obs: Observable<ApiInfo>, key: string) {\n    return obs.pipe(\n      catchError(() => this.handleInfoErrorResponse.bind(this)(key)),\n      tap((res) => {\n        if (!res) return;\n        this.handleInfoResponse.bind(this)(key, res);\n      })\n    );\n  }\n}\n","<ngx-indasuite-dialog-title\n  label=\"IndasuiteVersionsComponent.title\"\n></ngx-indasuite-dialog-title>\n\n<div mat-dialog-content>\n  <div class=\"logo\">\n    <img\n      src=\"/lib/indasuite-ui/img/io-base-logo.png\"\n      alt=\"io-base logo\"\n      class=\"mr-2\"\n    />\n    <img [src]=\"environment.CustomerLogoUrl\" alt=\"Customer logo\" />\n  </div>\n  <mat-list role=\"list\">\n    <mat-list-item role=\"listitem\"\n      >{{ \"application_name\" | translate }} v{{ appVersion }}</mat-list-item\n    >\n    <ng-container *ngFor=\"let item of applications | keyvalue\">\n      <mat-divider></mat-divider>\n      <mat-list-item role=\"listitem\">\n        {{ item.value.label }}\n        <mat-spinner\n          class=\"ml-2\"\n          *ngIf=\"item.value.loading\"\n          [diameter]=\"14\"\n        ></mat-spinner>\n        <mat-icon\n          color=\"warn\"\n          class=\"ml-2\"\n          *ngIf=\"!item.value.loading && item.value.version === null\"\n          [matTooltip]=\"'IndasuiteVersionsComponent.error_tooltip' | translate\"\n          >error</mat-icon\n        >\n        <span *ngIf=\"!item.value.loading && item.value.version !== null\"\n          >&nbsp;v{{ item.value.version }}</span\n        >\n      </mat-list-item>\n    </ng-container>\n    <mat-divider></mat-divider>\n  </mat-list>\n</div>\n\n<div mat-dialog-actions>\n  <button matDialogClose mat-raised-button color=\"primary\">\n    {{ \"close\" | translate }}\n  </button>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-indasuite-intercom-helper',\n  templateUrl: './intercom-helper.component.html',\n})\nexport class IndasuiteIntercomHelperComponent {\n  @Input() articleId: number;\n\n  showHelp() {\n    const myWindow = window as any;\n    myWindow.Intercom('showArticle', this.articleId);\n  }\n}\n","<button mat-icon-button\n        color=\"primary\"\n        (click)=\"showHelp()\"\n        type=\"button\">\n  <mat-icon>help</mat-icon>\n</button>\n","import { Component, Inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n  selector: 'ngx-indasuite-loading-snackbar-content',\n  templateUrl: './indasuite-loading-snackbar.component.html',\n})\nexport class IndasuiteLoadingSnackbarContentComponent {\n\n  constructor(\n    @Inject(MAT_SNACK_BAR_DATA) public data\n  ) { }\n}\n","<div class=\"d-flex a-center j-between\">\n  <div class=\"d-flex a-center mr-3\">\n    <mat-spinner [diameter]=\"24\"\n                 class=\"mr-2\">\n    </mat-spinner>\n    <span>{{ data | translate }}</span>\n  </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AuthService } from '@auth0/auth0-angular';\n\n@Component({\n  selector: 'ngx-indasuite-logout-button',\n  templateUrl: './logout-button.component.html',\n  styleUrls: ['./logout-button.component.scss'],\n})\nexport class IndasuiteLogoutButtonComponent {\n  @Input() label;\n\n  constructor(public authService: AuthService) {}\n\n  logout(): void {\n    this.authService.logout({ returnTo: window.location.origin });\n  }\n}\n","<button mat-raised-button color=\"primary\" class=\"mt-3\" (click)=\"logout()\">\n  {{ (label ? label : \"LogoutButtonComponent.default_logout\") | translate }}\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ConfirmOptionsModal } from '../../models/modal.models';\n\n@Component({\n  selector: 'ngx-indasuite-modal-frame-confirmation',\n  templateUrl: './modal-frame-confirmation.component.html',\n  styleUrls: ['./modal-frame-confirmation.component.scss'],\n})\nexport class ModalFrameConfirmationComponent {\n  @Input() canValidate = true;\n  @Input() options: ConfirmOptionsModal = { confirm: 'yes', cancel: 'no' };\n  @Input() shouldClose = true;\n\n  @Output() confirm: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  click(choice: boolean) {\n    this.confirm.emit(choice);\n  }\n}\n","<div class=\"actions-container\">\n  <button\n    mat-raised-button\n    [mat-dialog-close]=\"false\"\n    class=\"cancel-button mr-2\"\n    (click)=\"click(false)\"\n  >\n    {{ options.cancel | translate }}\n  </button>\n  <ng-container *ngIf=\"shouldClose\">\n    <button\n      mat-raised-button\n      color=\"primary\"\n      [disabled]=\"!canValidate\"\n      [mat-dialog-close]=\"true\"\n      class=\"confirm-button\"\n      (click)=\"click(true)\"\n    >\n      {{ options.confirm | translate }}\n    </button>\n  </ng-container>\n  <ng-container *ngIf=\"!shouldClose\">\n    <button\n      mat-raised-button\n      color=\"primary\"\n      [disabled]=\"!canValidate\"\n      class=\"confirm-button\"\n      (click)=\"click(true)\"\n    >\n      {{ options.confirm | translate }}\n    </button>\n  </ng-container>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { SimpleDialogData } from '../../models/modal.models';\n\n@Component({\n  selector: 'lib-simple-modal',\n  templateUrl: './simple-modal.component.html',\n  styleUrls: ['./simple-modal.component.scss'],\n})\nexport class SimpleModalComponent {\n  @Input() data: SimpleDialogData;\n  @Input() simpleClose = false;\n}\n","<ng-container *ngIf=\"data\">\n  <div class=\"dialog-container\">\n    <div class=\"dialog-content\">\n      <mat-icon class=\"modal-icon\" [color]=\"data.iconColor ?? 'primary'\">{{\n        data.icon\n      }}</mat-icon>\n      <h2 translate class=\"modal-title\">{{ data.title }}</h2>\n      <p\n        translate\n        [translateParams]=\"data.text.params\"\n        class=\"message mat-body-1\"\n      >\n        {{ data.text.key }}\n      </p>\n    </div>\n    <div mat-dialog-actions>\n      <ngx-indasuite-modal-frame-confirmation\n        [options]=\"data.options\"\n        *ngIf=\"!simpleClose\"\n      ></ngx-indasuite-modal-frame-confirmation>\n      <button\n        mat-raised-button\n        mat-dialog-close\n        color=\"primary\"\n        *ngIf=\"simpleClose\"\n      >\n        {{ \"close\" | translate }}\n      </button>\n    </div>\n  </div>\n</ng-container>\n","import { Component, TemplateRef, ViewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogData, SimpleDialogData } from '../../models/modal.models';\nimport { IndasuiteModalService } from '../../services/indasuite-modal.service';\n\n@Component({\n  selector: 'ngx-indasuite-modal-frame',\n  templateUrl: './modal-frame.component.html',\n  styleUrls: ['./modal-frame.component.scss'],\n})\nexport class ModalFrameComponent {\n  leftSide: TemplateRef<any>;\n  rightSide: TemplateRef<any>;\n\n  @ViewChild('leftSideIcon') leftSideIcon: TemplateRef<any>;\n  iconString: string;\n  subtitleIconString: string;\n\n  deleteString: string;\n\n  @ViewChild('dialog') dialogRef: TemplateRef<any>;\n\n  @ViewChild('simpleDialog') simpleDialogRef: TemplateRef<any>;\n  simpleDialogData: SimpleDialogData;\n\n  @ViewChild('leftSideImg') leftSideImg: TemplateRef<any>;\n  imgSrc: string;\n\n  @ViewChild('rightSideError') rightSideError: TemplateRef<any>;\n  errors;\n  simpleClose: boolean;\n\n  constructor(\n    public dialog: MatDialog,\n    public modalService: IndasuiteModalService\n  ) {\n    this.modalService.openDialogSubject.subscribe(this.openDialog.bind(this));\n    this.modalService.openSimpleDialogSubject.subscribe(\n      this.openSimpleDialog.bind(this)\n    );\n  }\n\n  private openDialog(data: DialogData) {\n    this.populateLeftSide.bind(this)(data);\n    this.rightSide = data.rightSide;\n    const options = {\n      height: '400px',\n      width: '800px',\n      panelClass: 'modal-frame-panel',\n      ...data.options,\n    };\n    const dialogRef = this.dialog.open(this.dialogRef, options);\n\n    dialogRef.afterClosed().subscribe(this.afterClosed.bind(this));\n  }\n\n  public afterClosed(result: any) {\n    this.modalService.afterClosedSubject.next(result);\n  }\n\n  private populateLeftSide(data: DialogData) {\n    if (data.leftSide) {\n      this.leftSide = data.leftSide;\n      return;\n    }\n\n    if (data.img) {\n      this.imgSrc = data.img;\n      this.leftSide = this.leftSideImg;\n      return;\n    }\n\n    if (data.icon) {\n      this.iconString = data.icon;\n      this.subtitleIconString = data.subtitle ? data.subtitle : '';\n      this.leftSide = this.leftSideIcon;\n      return;\n    }\n\n    this.iconString = 'info';\n    this.subtitleIconString = '';\n    this.leftSide = this.leftSideIcon;\n  }\n\n  private openSimpleDialog(data: SimpleDialogData, simpleClose = false) {\n    this.simpleDialogData = data;\n    this.simpleClose = simpleClose;\n\n    const dialogRef = this.dialog.open(this.simpleDialogRef, {\n      height: '400px',\n      width: '300px',\n    });\n\n    dialogRef.afterClosed().subscribe(this.afterClosed.bind(this));\n  }\n}\n","<ng-template #dialog\n             class=\"modal-frame\">\n  <div class=\"modal-error-contianer\">\n    <div class=\"modal-error-picture-container\">\n      <ng-container *ngTemplateOutlet=\"leftSide\"> </ng-container>\n    </div>\n    <div class=\"modal-error-right-side-container\">\n      <ng-container *ngTemplateOutlet=\"rightSide\"> </ng-container>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #leftSideIcon>\n  <mat-icon>{{ iconString }}</mat-icon>\n  <h1>{{ subtitleIconString | translate }}</h1>\n</ng-template>\n\n<ng-template #leftSideImg>\n  <img [src]=\"imgSrc\"\n       alt=\"img_modal\" />\n</ng-template>\n\n<ng-template #simpleDialog>\n  <lib-simple-modal [data]=\"simpleDialogData\"\n                    [simpleClose]=\"simpleClose\">\n  </lib-simple-modal>\n</ng-template>","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Title } from '@angular/platform-browser';\nimport { Menu, Section, Submenu } from '../app-header/menu.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TitleTranslationService {\n  private lastTitle: Array<Menu | Section | Submenu> = [];\n  private breadcrumbsTrail: string = \"\";\n\n  constructor(\n    private title: Title,\n    private translateService: TranslateService\n  ) {\n    this.translateService.onLangChange.subscribe(() => {\n      this.setTitleFromMenus(this.lastTitle);\n    });\n  }\n\n  public getTitle(): string {\n    return this.title.getTitle();\n  }\n\n  public getBreadcrumbsTrail(): string {\n    return this.breadcrumbsTrail;\n  }\n\n  public setTitle(titleKey: string) {\n    this.translateService.get(titleKey).subscribe((translate) => {\n      this.breadcrumbsTrail = \"\";\n      if (this.getTitle() === translate) return;\n      this.title.setTitle(translate);\n    });\n  }\n\n  public setTitleFromMenus(menus: Array<Menu | Submenu | Section>) {\n    const translations = menus.filter(m => m?.title).flatMap(m => m?.title && this.translateService.instant(m.title));\n    this.breadcrumbsTrail = translations.join(\" > \");\n    this.title.setTitle(translations.join(\" - \"));\n    this.lastTitle = menus;\n  }\n}\n","import { Component } from '@angular/core';\nimport { TitleTranslationService } from '../services/title.service';\n\n@Component({\n  selector: 'ngx-indasuite-not-found',\n  templateUrl: './not-found.component.html',\n})\nexport class IndasuiteNotFoundComponent {\n  constructor(private titleService: TitleTranslationService) {\n    this.titleService.setTitle('IndasuiteNotFoundComponent.text');\n  }\n}\n","<ngx-indasuite-empty-state\n  text=\"IndasuiteNotFoundComponent.text\"\n  icon=\"wrong_location\"\n>\n</ngx-indasuite-empty-state>\n","import { Component } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { take } from 'rxjs/operators';\nimport { PreferencesService } from '../../../api';\nimport { LanguageElement } from '../../models/LanguageElement.model';\nimport { EnvironmentService } from '../../services/environment.service';\n\n@Component({\n  selector: 'ngx-indasuite-select-lang',\n  templateUrl: './select-lang.component.html',\n  styleUrls: ['./select-lang.component.scss']\n})\nexport class IndasuiteSelectLangComponent {\n  languageList: Array<LanguageElement> = EnvironmentService.languageList;\n\n  constructor(\n    public translationService: TranslateService,\n    private preferencesService: PreferencesService\n  ) { }\n\n  changeLanguage(lang: any) {\n    this.preferencesService.setLanguage$(lang.code).pipe(take(1)).subscribe();\n    this.translationService.use(lang.code);\n    window.document.documentElement.setAttribute('lang', lang.code);\n  }\n\n  getFlag(code) {\n    return this.languageList.filter((lang) => lang.code === code)[0]?.flag;\n  }\n\n  get currentLang(): string {\n    return this.translationService.currentLang\n      ? this.translationService.currentLang\n      : this.translationService.defaultLang;\n  }\n}\n","<div class=\"container\"\n     [matMenuTriggerFor]=\"menu\">\n  <div class=\"label\">\n    {{currentLang}}\n  </div>\n</div>\n\n<mat-menu #menu=\"matMenu\"\n          xPosition=\"before\">\n  <button mat-menu-item\n          *ngFor=\"let lang of languageList\"\n          (click)=\"changeLanguage(lang)\">\n    <div class=\"d-flex a-center\">\n      <span>{{ lang.label }}</span>\n    </div>\n  </button>\n</mat-menu>","import { Component, Input } from '@angular/core';\nimport { onMainContentChange } from '../animations/animations';\nimport { DrawerItem } from '../models/drawer.model';\n\n@Component({\n  selector: 'ngx-indasuite-sidenav-container',\n  templateUrl: './indasuite-sidenav-container.component.html',\n  styleUrls: ['./indasuite-sidenav-container.component.scss'],\n  animations: [onMainContentChange]\n})\nexport class IndasuiteSidenavContainerComponent {\n  @Input() drawerItems: Array<DrawerItem> = [];\n  @Input() noPadding: boolean = false;\n\n  drawerOpened: boolean = false;\n}\n","<mat-sidenav-container class=\"mat-sidenav-container\"\n                       autosize>\n  <mat-sidenav #sidenav\n               mode=\"side\"\n               opened>\n    <ngx-indasuite-drawer [items]=\"drawerItems\"></ngx-indasuite-drawer>\n  </mat-sidenav>\n  <mat-sidenav-content [@onMainContentChange]=\"drawerOpened ? 'open' : 'close'\"\n                       [ngClass]=\"{'no-padding': noPadding}\">\n    <ng-content></ng-content>\n  </mat-sidenav-content>\n</mat-sidenav-container>","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatTableDataSource } from '@angular/material/table';\nimport {\n  Metric,\n  ReportTableComponent,\n  ReportService,\n  CalendarTimeRangeTypes,\n  getCalendarBeginningDate,\n  getCalendarEndingDate\n} from '../../../api';\nimport { RefreshComponent } from '../../models/refreshComponent.model';\nimport { FormatterService } from '../../services/formatter.service';\n\ninterface TableData {\n  name: string;\n  value: string;\n  date: Date;\n}\n\n@Component({\n  selector: 'ngx-indasuite-data-table',\n  templateUrl: './indasuite-data-table.component.html',\n  styleUrls: ['./indasuite-data-table.component.scss']\n})\nexport class IndasuiteDataTableComponent\n  implements OnInit, OnChanges, AfterViewInit, RefreshComponent {\n  @Input() isDashboard: boolean = false;\n  @Input() config: ReportTableComponent = {\n    id: '',\n    title: '',\n    type: null,\n    description: '',\n    metrics: [],\n    limit: 10000,\n    timeRange: { presets: 'CurrentDay', startDate: getCalendarBeginningDate('CurrentDay'), endDate: getCalendarEndingDate('CurrentDay') },\n    timeRangeLocked: false,\n    parameters: {\n      digits: null,\n      pageSize: null\n    }\n  };\n  @Input() displayActions: boolean = true;\n  @Output() toggleFullscreen = new EventEmitter<any>();\n  public dataSource: MatTableDataSource<TableData> = new MatTableDataSource([]);\n  public fileName: string;\n\n  @ViewChild('ref') elementRef!: ElementRef;\n  @ViewChild(MatPaginator) paginator: MatPaginator;\n\n  public readonly displayedColumns = ['name', 'value', 'date'];\n\n  constructor(private reportService: ReportService) { }\n\n  public smoothRefresh(): void {\n    this.refreshTable();\n  }\n\n  ngOnInit(): void {\n    this.refreshTable();\n    this.fileName = FormatterService.componentExportFileName(this.config);\n  }\n\n  ngOnChanges(): void {\n    this.ngOnInit();\n  }\n\n  ngAfterViewInit(): void {\n    this.dataSource.paginator = this.paginator;\n  }\n\n  public fullscreen(): void {\n    this.toggleFullscreen.emit({ component: 'table', datasource: this.dataSource });\n  }\n\n  public refreshTable() {\n    if (this.config.metrics.length === 0) {\n      this.dataSource = new MatTableDataSource([]);\n      this.ngAfterViewInit();\n      return;\n    }\n\n    this.reportService\n      .getSeries(\n        this.config.timeRange.startDate,\n        this.config.timeRange.endDate,\n        this.config.limit,\n        this.config.metrics,\n        false\n      )\n      .subscribe(this.fillTable.bind(this));\n  }\n\n  private fillTable(requestResults: any) {\n    let res = [];\n    Object.keys(requestResults).forEach((requestName) => {\n      const metrics = this.reportService.getFlatValuesFromMetric(\n        requestResults[requestName].data as Array<Metric>\n      );\n\n      const data: TableData[] = metrics.map((metric) => ({\n        name: requestName,\n        value: this.getValue(\n          metric.value as number,\n          this.getUnit(requestName)\n        ),\n        date: new Date(metric.timestamp),\n      }));\n\n      res = [...res, ...data];\n    });\n\n    this.dataSource = new MatTableDataSource(res);\n    this.ngAfterViewInit();\n  }\n\n  private getUnit(displayName: string) {\n    return this.config.metrics.find(\n      (metric) => metric.displayName === displayName\n    )?.unit;\n  }\n\n  private getValue(value: number, unit: string) {\n    return FormatterService.formatValueWithDigits(\n      value,\n      unit,\n      this.config.parameters?.digits\n    );\n  }\n}\n","<div #ref>\n  <div class=\"d-flex j-between a-center\">\n    <div class=\"legends\"\n         [ngClass]=\"{'on-top': isDashboard}\"\n         *ngIf=\"displayActions\">\n      <ngx-indasuite-download-to-img [elementRef]=\"elementRef\"\n                                     [fileName]=\"fileName\"\n                                     *ngIf=\"dataSource.data.length > 0\"></ngx-indasuite-download-to-img>\n      <mat-icon (click)=\"fullscreen()\"\n                color=\"primary\">open_in_full</mat-icon>\n    </div>\n  </div>\n\n  <data-table [datasource]=\"dataSource\"></data-table>\n\n  <ngx-indasuite-empty-state [text]=\"\n      config.metrics.length === 0\n        ? 'IndasuiteDataTableComponent.no_tags'\n        : 'IndasuiteDataTableComponent.no_data'\n    \"\n                             icon=\"tag\"\n                             *ngIf=\"dataSource.data.length === 0\">\n  </ngx-indasuite-empty-state>\n\n  <mat-paginator [pageSizeOptions]=\"[5, 10, 25, 100]\"\n                 [pageSize]=\"config.parameters.pageSize\"\n                 (page)=\"refreshTable()\"></mat-paginator>\n</div>","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthService } from '@auth0/auth0-angular';\nimport { IndasuiteVersionsComponent } from '../../indasuite-versions/indasuite-versions.component';\nimport { ProfileService, Profile } from '../../../api';\nimport { FormatterService } from '../../services/formatter.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'ngx-indasuite-user-menu',\n  templateUrl: './user-menu.component.html',\n  styleUrls: ['./user-menu.component.scss']\n})\nexport class IndasuiteUserMenuComponent implements OnDestroy {\n  @Input() appVersion: string;\n  @Input() logo: string;\n  @Output() myProfileClick = new EventEmitter();\n\n  private userSub: Subscription;\n\n  public profile: Profile = null;\n  public get fullName() {\n    return FormatterService.getUserFullName(this.profile);\n  }\n\n  constructor(\n    public authService: AuthService,\n    public profileService: ProfileService,\n    private dialog: MatDialog\n  ) {\n    this.userSub = this.profileService.profileChanged.subscribe(profile => this.profile = profile);\n  }\n\n  ngOnDestroy(): void {\n    this.userSub?.unsubscribe();\n  }\n\n  public openApplicationInfos() {\n    this.dialog.open(IndasuiteVersionsComponent, {\n      data: { appVersion: this.appVersion },\n    });\n  }\n}\n","<div class=\"container\"\n     [matMenuTriggerFor]=\"menu\">\n     <ng-container *ngIf=\"profile\">\n          <div class=\"logo mobile-hidden\">\n               <img class=\"logo\"\n                    [src]=\"logo\"\n                    height=\"36px\"\n                    alt=\"Logo client\" />\n          </div>\n          <div mat-icon-button\n               class=\"d-flex a-center flex-column user-logo pointer\"\n               id=\"user-menu-button\">\n               <img [src]=\"profile?.picture\"\n                    class=\"user-img\"\n                    width=\"36px\"\n                    height=\"36px\"\n                    alt=\"Logo\" />\n          </div>\n     </ng-container>\n</div>\n\n<mat-menu #menu=\"matMenu\"\n          xPosition=\"before\">\n     <div class=\"d-flex a-center flex-column\"\n          (click)=\"$event.stopPropagation()\">\n          <img [src]=\"profile?.picture\"\n               class=\"user-img\"\n               width=\"40px\"\n               height=\"40px\"\n               alt=\"Logo\" />\n          <span class=\"mt-2 user-name-menu mat-body-2\">{{ fullName }}</span>\n          <span class=\"mt-2 mat-body-1\">{{ profile?.email }}</span>\n          <span class=\"mt-2\">\n               <button mat-button\n                       color=\"primary\"\n                       (click)=\"myProfileClick.emit()\">\n                    {{ \"UserMenuComponent.my_profile_link\" | translate }}\n               </button>\n          </span>\n          <ngx-indasuite-logout-button></ngx-indasuite-logout-button>\n          <span class=\"mt-2 mat-overline\"\n                *ngIf=\"appVersion\"\n                (click)=\"openApplicationInfos()\">{{ \"application_name\" | translate }}\n               {{ \"UserMenuComponent.version\" | translate }}{{ appVersion }}</span>\n     </div>\n</mat-menu>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ngx-indasuite-user',\r\n  templateUrl: './user.component.html',\r\n  styleUrls: ['./user.component.scss'],\r\n})\r\nexport class IndasuiteUserComponent {\r\n  @Input() appVersion: string;\r\n  @Input() logo: string;\r\n  @Output() myProfileClick = new EventEmitter();\r\n}","<ngx-indasuite-select-lang></ngx-indasuite-select-lang>\r\n<ngx-indasuite-user-menu [appVersion]=\"appVersion\"\r\n                         [logo]=\"logo\"\r\n                         (myProfileClick)=\"myProfileClick.emit()\">\r\n</ngx-indasuite-user-menu>","// copied from https://github.com/nigrosimone/ng-let\n\nimport { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\ninterface DeclareContext<T> {\n  appDeclare: T;\n  $implicit: T;\n}\n\n@Directive({\n  selector: '[appDeclare]'\n})\nexport class DeclareDirective<T> {\n  private context: DeclareContext<T | null> = { appDeclare: null, $implicit: null };\n  private hasView: boolean;\n\n  constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<DeclareContext<T>>) { }\n\n  @Input() set appDeclare(value: T) {\n    this.context.$implicit = this.context.appDeclare = value;\n    if (!this.hasView) {\n      this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n      this.hasView = true;\n    }\n  }\n\n  /** @internal */\n  public static appDeclareUseIfTypeGuard: void;\n\n  /**\n   * Assert the correct type of the expression bound to the `NgLet` input within the template.\n   *\n   * The presence of this static field is a signal to the Ivy template type check compiler that\n   * when the `NgLet` structural directive renders its template, the type of the expression bound\n   * to `NgLet` should be narrowed in some way. For `NgLet`, the binding expression itself is used to\n   * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgLet`.\n   */\n  static ngTemplateGuard_appDeclare: 'binding';\n\n  /**\n   * Asserts the correct type of the context for the template that `NgLet` will render.\n   *\n   * The presence of this method is a signal to the Ivy template type-check compiler that the\n   * `NgLet` structural directive renders its template with a specific context type.\n   */\n  static ngTemplateContextGuard<T>(dir: DeclareDirective<T>, ctx: any): ctx is DeclareContext<Exclude<T, false | 0 | '' | null | undefined>> {\n    return true;\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild\n} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { IndametaItemMetric, IndametaPaginatedResponse, Indametav2Service, PaginationModel } from '../../../api';\nimport { IndasuiteHashedPaginationComponent } from '../../hashed-pagination/hashed-pagination.component';\nimport { Tag } from '../../../api/models/indaba-models/tag.model';\n\nexport const MAX_GRAPH_NUMBER = 50;\n\n@Component({\n  selector: 'ngx-indasuite-search-metric-input',\n  templateUrl: './search-metric-input.component.html',\n  styleUrls: ['./search-metric-input.component.scss']\n})\nexport class IndasuiteSearchMetricInputComponent implements OnInit, OnDestroy {\n  @Input() selectedMetrics: Array<Tag & { type?: string }> = [];\n  @Input() disableInputUnit: boolean = false;\n  @Input() canDelete: boolean = true;\n  @Output() tagAdded = new EventEmitter<Tag & { type?: string }>();\n  @Output() tagRemoved = new EventEmitter<Tag & { type?: string }>();\n\n  @ViewChild('paginator') paginator: IndasuiteHashedPaginationComponent;\n\n  public isLoading: boolean;\n  public selectedSource: string;\n  public searchTag: string = '';\n  public displayedColumns = ['metric', 'description', 'unit', 'action'];\n  public pageSize = 20;\n\n  public form: FormGroup;\n  public formSubscription: Subscription;\n\n  public metrics: Array<Tag>;\n\n  constructor(private fb: FormBuilder, private indaMetaService: Indametav2Service) {\n    this.form = this.fb.group({\n      name: ['', []],\n      description: ['', []],\n      unit: ['', []]\n    });\n  }\n\n  ngOnInit() {\n    this.getMetrics();\n\n    this.formSubscription = this.form.valueChanges\n      .pipe(\n        debounceTime(750),\n        distinctUntilChanged(),\n        switchMap(() => this.getMetricsObservable())\n      )\n      .subscribe({\n        next: resp => this.handleResponse(resp, true),\n        error: () => this.isLoading = false\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.formSubscription?.unsubscribe();\n  }\n\n  public tagIsSelected(selected: Tag): boolean {\n    return this.canDelete && !!this.selectedMetrics.find(m => m.api === selected.api && m.tag_indaba === selected.tag_indaba);\n  }\n\n  public sourceSelected() {\n    this.getMetrics();\n  }\n\n  public pageSizeChange(size: number): void {\n    this.pageSize = size;\n    this.getMetrics();\n  }\n\n  public nextPage(page: PaginationModel): void {\n    this.getMetrics(page);\n  }\n\n  public addTag(element: Tag): void {\n    if (!element) return;\n    if (!this.tagIsSelected(element))\n      this.tagAdded.emit(element);\n    else\n      this.tagRemoved.emit(element);\n  }\n\n\n  private getMetrics(page?: PaginationModel) {\n    return this.getMetricsObservable(page).subscribe({\n      next: resp => this.handleResponse(resp, !page),\n      error: () => this.isLoading = false\n    });\n  }\n\n  private getMetricsObservable(page?: PaginationModel): Observable<IndametaPaginatedResponse<IndametaItemMetric>> {\n    this.isLoading = true;\n\n    return this.indaMetaService.searchMetrics(\n      this.selectedSource,\n      this.form.value.name,\n      this.form.value.description,\n      this.form.value.unit,\n      this.pageSize,\n      page\n    );\n  }\n\n  private handleResponse(response: IndametaPaginatedResponse<IndametaItemMetric>, initPaginator = false) {\n    if (initPaginator) {\n      this.paginator.init();\n      this.paginator.addNextPage(response.paginationInfo);\n    }\n    else if (this.paginator.currentPaginationModel && this.paginator.currentPaginationModel?.paginationKey === response.paginationInfo.paginationKey)\n      this.paginator.updateLastPage(response.paginationInfo);\n    else\n      this.paginator.addNextPage(response.paginationInfo);\n\n    this.metrics = response.data.map(d => ({ tag_indaba: d.name, description: d.description, api: d.datasource, unit: d.unit, type: d.type } as Tag & { type?: string }));\n    this.isLoading = false;\n  }\n}\n","<ngx-indasuite-loading-spinner *ngIf=\"isLoading\"></ngx-indasuite-loading-spinner>\n\n<div class=\"d-flex flex-wrap filters a-center\">\n  <ngx-indasuite-database-select-list [(database)]=\"selectedSource\"\n                                      [label]=\"'IndasuiteSearchComponent.datasource' | translate\"\n                                      (databaseChange)=\"sourceSelected()\">\n  </ngx-indasuite-database-select-list>\n\n  <form [formGroup]=\"form\">\n    <mat-form-field appearance=\"outline\"\n                    class=\"ml-2\">\n      <mat-label>\n        {{ 'IndasuiteSearchComponent.metric_name' | translate }}\n      </mat-label>\n      <input type=\"text\"\n             matInput\n             formControlName=\"name\" />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"outline\"\n                    class=\"ml-2\">\n      <mat-label>\n        {{ 'IndasuiteSearchComponent.description' | translate }}\n      </mat-label>\n      <input type=\"text\"\n             matInput\n             formControlName=\"description\" />\n    </mat-form-field>\n\n    <mat-form-field appearance=\"outline\"\n                    class=\"ml-2\">\n      <mat-label>\n        {{ 'IndasuiteSearchComponent.unit' | translate }}\n      </mat-label>\n      <input type=\"text\"\n             matInput\n             formControlName=\"unit\" />\n    </mat-form-field>\n  </form>\n</div>\n\n<div class=\"mt-2 w-100\">\n  <div class=\"grid\">\n\n    <div class=\"header\">{{ 'IndasuiteSearchComponent.metric' | translate }}</div>\n    <div class=\"header\">{{ 'IndasuiteSearchComponent.description' | translate }}</div>\n    <div class=\"header\">{{ 'IndasuiteSearchComponent.unit' | translate }}</div>\n    <div class=\"header text-center\">{{ 'IndasuiteSearchComponent.action' | translate }}</div>\n\n    <ng-container *ngFor=\"let element of metrics\">\n      <div class=\"element\"\n           [matTooltip]=\"element.tag_indaba\"\n           matTooltipClass=\"tooltip-default tooltip-no-break\">{{ element.tag_indaba }}\n      </div>\n      <div class=\"element\"\n           [matTooltip]=\"element.description\"\n           matTooltipClass=\"tooltip-default tooltip-no-break\">{{ element.description }}\n      </div>\n      <div>\n        <mat-form-field appearance=\"outline\"\n                        class=\"w-5\">\n          <input type=\"text\"\n                 [disabled]=\"tagIsSelected(element)\"\n                 matInput\n                 [(ngModel)]=\"element.unit\"\n                 placeholder=\"{{ 'IndasuiteSearchComponent.unit' | translate }}\" />\n        </mat-form-field>\n      </div>\n      <div class=\"action\">\n        <button *ngIf=\"!tagIsSelected(element); else removeTag\"\n                mat-icon-button\n                color=\"primary\"\n                (click)=\"addTag(element)\">\n          <mat-icon>add_circle_outline</mat-icon>\n        </button>\n        <ng-template #removeTag>\n          <button mat-icon-button\n                  color=\"warn\"\n                  (click)=\"addTag(element)\">\n            <mat-icon>remove_circle_outline</mat-icon>\n          </button>\n        </ng-template>\n      </div>\n    </ng-container>\n  </div>\n\n  <ngx-indasuite-empty-state text=\"IndasuiteSearchComponent.no_metric\"\n                             icon=\"search\"\n                             *ngIf=\"metrics?.length < 1\">\n  </ngx-indasuite-empty-state>\n\n  <ngx-indasuite-hashed-pagination [pageSize]=\"pageSize\"\n                                   (pageSizeChange)=\"pageSizeChange($event)\"\n                                   (nextPage)=\"nextPage($event)\"\n                                   #paginator>\n  </ngx-indasuite-hashed-pagination>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { FormatTyped, SearchableProperty } from '../../../api';\n\n@Component({\n  selector: 'ngx-indasuite-indameta-search-properties',\n  templateUrl: './search-properties.component.html',\n  styleUrls: ['./search-properties.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IndametaSearchPropertiesComponent implements OnChanges {\n  @Input() searchables: SearchableProperty[] = [];\n  @Input() showTitle = true;\n  @Input() searchQuery = new Map<SearchableProperty, FormatTyped>();\n  @Output() searchQueryChange = new EventEmitter<Map<SearchableProperty, FormatTyped>>();\n\n  public queries;\n\n  constructor(private fb: FormBuilder) {\n    this.queries = this.fb.array([\n      this.fb.control<FormatTyped | null>(null)\n    ]);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes.searchables?.currentValue)\n      return;\n\n    this.queries.clear({ emitEvent: false });\n    this.searchables = [...this.searchables];\n\n    for (const searchable of this.searchables) {\n      if (!this.searchQuery.has(searchable)) {\n        this.queries.push(this.fb.control(null), { emitEvent: false });\n        continue;\n      }\n      const value = this.searchQuery.get(searchable);\n      this.queries.push(this.fb.control(value), { emitEvent: false });\n    }\n\n    this.queries.valueChanges.pipe(debounceTime(750), distinctUntilChanged()).subscribe(() => this.startSearch());\n  }\n\n  public startSearch() {\n    const map = new Map<SearchableProperty, FormatTyped | null>();\n\n    for (let i = 0; i < this.searchables.length; i++) {\n      const value = this.queries.controls[i].value;\n      if (typeof value === \"string\" && value === \"\") {\n        map.set(this.searchables[i], null);\n        continue;\n      }\n      map.set(this.searchables[i], value ?? null);\n    }\n\n    this.searchQueryChange.emit(map);\n  }\n}\n","<mat-card-title *ngIf=\"showTitle\"\n                translate>\n  IndametaSearchPropertiesComponent.title\n</mat-card-title>\n\n<ngx-indasuite-empty-state *ngIf=\"searchables.length <= 0\"\n                           icon=\"search_off\"\n                           text=\"IndametaSearchPropertiesComponent.no_properties\">\n</ngx-indasuite-empty-state>\n<ng-container *ngFor=\"let search of searchables; let index = index\">\n  <ng-container [ngSwitch]=\"search.searchableType\">\n    <mat-form-field *ngSwitchCase=\"['Id', 'Label'].includes(search.searchableType) ? search.searchableType : !search.searchableType\"\n                    appearance=\"outline\">\n      <mat-label>{{search.displayName}}</mat-label>\n      <input matInput\n             type=\"text\"\n             [formControl]=\"queries.controls[index]\" />\n    </mat-form-field>\n\n    <ng-container *ngSwitchCase=\"'Custom'\"\n                  [ngSwitch]=\"search.property.format\">\n      <mat-form-field *ngSwitchCase=\"'Text'\"\n                      appearance=\"outline\">\n        <mat-label>{{search.displayName}}</mat-label>\n        <input matInput\n               type=\"text\"\n               [formControl]=\"queries.controls[index]\" />\n      </mat-form-field>\n      <mat-form-field *ngSwitchCase=\"'Number'\"\n                      appearance=\"outline\">\n        <input matInput\n               type=\"number\"\n               [formControl]=\"queries.controls[index]\" />\n        <mat-label>{{search.displayName}}</mat-label>\n      </mat-form-field>\n      <mat-form-field *ngSwitchCase=\"'Boolean'\"\n                      appearance=\"outline\">\n        <mat-label>{{search.displayName}}</mat-label>\n        <mat-select [formControl]=\"queries.controls[index]\">\n          <mat-option [value]=\"null\">--</mat-option>\n          <mat-option [value]=\"true\">{{'IndametaSearchPropertiesComponent.true' | translate}}</mat-option>\n          <mat-option [value]=\"false\">{{'IndametaSearchPropertiesComponent.false' | translate}}</mat-option>\n        </mat-select>\n      </mat-form-field>\n    </ng-container>\n  </ng-container>\n</ng-container>","import { Component, OnInit, AfterViewInit, Input, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { switchMap, tap, filter, catchError } from 'rxjs/operators';\nimport { Observable, of } from 'rxjs';\nimport { IndasuiteHashedPaginationComponent } from '../../hashed-pagination/hashed-pagination.component';\nimport { DataStructure, FormatTyped, IndametaItem, IndametaItemMetric, IndametaPaginatedResponse, Indametav2Service, PaginationModel, SearchableProperty } from '../../../api';\n\ntype Parent = Record<string, {}>;\ntype IndametaItemWithParents = IndametaItem & { parents: Parent[] };\n\n@Component({\n  selector: 'ngx-indasuite-indameta-search',\n  templateUrl: './indameta-search.component.html',\n  styleUrls: ['./indameta-search.component.scss']\n})\nexport class IndametaSearchComponent implements OnInit, AfterViewInit {\n  @Input() showDataStructures = false;\n  @Input() showActions = false;\n  @Input() selectedMetrics: IndametaItemMetric[] = [];\n  @Input() searchQuery: Map<SearchableProperty, FormatTyped> = new Map<SearchableProperty, FormatTyped>();\n  @Input() dataStructure: DataStructure;\n  @Input() canDelete: boolean = true;\n\n  @Output() toggleSelectMetric = new EventEmitter<IndametaItemMetric>();\n\n  public dataStructures: DataStructure[] = [];\n\n  public searchables: SearchableProperty[] = [];\n  public items: IndametaItemWithParents[] = [];\n\n  @ViewChild(IndasuiteHashedPaginationComponent) paginator: IndasuiteHashedPaginationComponent;\n  public pageSize = 20;\n  public showTotalItems = false;\n  public get totalItemsText(): string {\n    if (!this.showTotalItems)\n      return '';\n    const currentPage = this.paginator.hashStack.length - 1;\n    const startingItem = this.totalItems !== 0 ? currentPage * this.pageSize + 1 : 0;\n    let endingItem = startingItem + this.pageSize;\n    if (endingItem > this.totalItems)\n      endingItem = this.totalItems;\n    return `${startingItem} - ${endingItem} sur ${this.totalItems}`;\n  }\n  private totalItems: number;\n\n  public columns: { name: string, searchable: SearchableProperty }[] = [];\n\n  public isLoading = false;\n\n  private _columnsKeys: string[];\n  public get columnsKeys(): string[] {\n    return this._columnsKeys;\n  }\n\n  constructor(private indametaService: Indametav2Service) { }\n\n  ngOnInit(): void {\n\n    if (this.showDataStructures)\n      return;\n\n    this.searchables = [...this.searchQuery.keys()];\n    for (const key of this.searchQuery.keys()) {\n      this.columns.push({\n        name: key.displayName,\n        searchable: key\n      });\n      this._columnsKeys = this.columns.map((_, index) => `${index}`);\n    }\n    if (this.showActions)\n      this.columns.push({ name: 'Actions', searchable: null });\n    return;\n  }\n\n  ngAfterViewInit(): void {\n    this.isLoading = true;\n    this.indametaService.getDataStructures()\n      .pipe(\n        filter(resp => {\n          if (!resp || resp.length === 0) {\n            this.isLoading = false\n            return false;\n          }\n          return true;\n        }),\n        tap(resp => {\n          this.dataStructures = resp;\n          if (!this.dataStructure)\n            this.dataStructure = resp[0];\n          else\n            this.dataStructure = this.dataStructures.find(ds => ds.id === this.dataStructure.id);\n        }),\n        switchMap(() => this.getSearchablesObservable()),\n        switchMap(resp => {\n          this.handleSearchablesResult(resp);\n          return this.searchItems();\n        })\n      )\n      .subscribe((resp) => {\n        this.handleSearchResults(resp);\n        this.isLoading = false;\n      });\n  }\n\n  public onDataStructureChange() {\n    this.isLoading = true;\n    this.getSearchablesObservable()\n      .pipe(\n        switchMap(resp => {\n          this.handleSearchablesResult(resp);\n          this.paginator.init();\n          return this.searchItems();\n        })\n      )\n      .subscribe(resp => this.handleSearchResults(resp));\n  }\n\n  public restartSearch(size?: number): void {\n    this.isLoading = true;\n    this.paginator.init();\n    if (size)\n      this.pageSize = size;\n    this.searchItems().subscribe(resp => this.handleSearchResults(resp));\n  }\n\n  public searchNext(nextPage: PaginationModel): void {\n    this.isLoading = true;\n    this.searchItems(nextPage).subscribe(resp => this.handleSearchResults(resp));\n  }\n\n  private searchItems(nextPage?: PaginationModel): Observable<IndametaPaginatedResponse<IndametaItem>> {\n    return this.indametaService.\n      searchItems(this.dataStructure, this.searchQuery, this.pageSize, nextPage)\n      .pipe(\n        catchError(() => {\n          this.isLoading = false;\n          return of<IndametaPaginatedResponse<IndametaItem>>({\n            resultCode: 0,\n            message: '',\n            data: [],\n            paginationInfo: null,\n            info: null\n          })\n        })\n      );\n  }\n\n  private handleSearchResults(results: IndametaPaginatedResponse<IndametaItem>): void {\n    this.items = results.data as IndametaItemWithParents[] ?? [];\n    if (results.paginationInfo)\n      this.paginator.addNextPage(results.paginationInfo);\n    this.totalItems = results.paginationInfo.total;\n    this.isLoading = false;\n    this.showTotalItems = true;\n\n    for (const item of this.items)\n      if (!item.parents)\n        item.parents = null;\n  }\n\n  private getSearchablesObservable(): Observable<SearchableProperty[]> {\n    return this.indametaService.getSearchableProperties(this.dataStructure);\n  }\n\n  private handleSearchablesResult(searchables: SearchableProperty[]): void {\n    const tempQuery: typeof this.searchQuery = new Map();\n    const tempSearch: typeof this.searchables = [];\n    const tempColumns: typeof this.columns = [];\n    for (const search of searchables) {\n      tempQuery.set(search, null);\n      tempSearch.push(search);\n      tempColumns.push({\n        name: search.displayName,\n        searchable: search\n      });\n    }\n    if (this.showActions)\n      tempColumns.push({ name: 'Actions', searchable: null });\n    this.searchQuery = tempQuery;\n    this.searchables = tempSearch;\n    this.columns = tempColumns;\n    this._columnsKeys = tempColumns.map((_, index) => `${index}`);\n  }\n\n}\n","<ngx-indasuite-loading-spinner *ngIf=\"isLoading\">\n</ngx-indasuite-loading-spinner>\n\n<mat-form-field *ngIf=\"showDataStructures\"\n                appearance=\"outline\">\n  <mat-label translate>IndasuiteSearchComponent.tree</mat-label>\n  <mat-select [(value)]=\"dataStructure\"\n              (valueChange)=\"onDataStructureChange()\">\n    <mat-option *ngFor=\"let struct of dataStructures\"\n                [value]=\"struct\">\n      {{struct.name}}\n    </mat-option>\n  </mat-select>\n</mat-form-field>\n\n<br />\n\n<ngx-indasuite-indameta-search-properties *ngIf=\"searchables.length > 0\"\n                                          [(searchQuery)]=\"searchQuery\"\n                                          [searchables]=\"searchables\"\n                                          [showTitle]=\"false\"\n                                          (searchQueryChange)=\"restartSearch()\">\n</ngx-indasuite-indameta-search-properties>\n\n<table *ngIf=\"!isLoading\"\n       mat-table\n       [dataSource]=\"items\"\n       class=\"w-100\">\n  <ng-container *ngFor=\"let column of columns; let index = index\">\n\n    <ng-container [matColumnDef]=\"'' + index\">\n      <th mat-header-cell\n          *matHeaderCellDef>\n        {{column.name}}\n      </th>\n      <td mat-cell\n          *matCellDef=\"let item\">\n        <ng-container *ngIf=\"column.searchable; else actions\">\n          <ng-container *ngIf=\"!column.searchable.isTypeMetric && item.parents[column.searchable?.typeId]\">\n            <ng-container *ngFor=\"let type of item?.parents[column.searchable?.typeId];let last = last\">\n              {{type[(column.searchable?.property?.name ?? column.searchable?.searchableType) | lowercase]}}\n              <span *ngIf=\"!last\"> / </span>\n            </ng-container>\n          </ng-container>\n          <ng-container *ngIf=\"column.searchable.isTypeMetric\"\n                        [ngSwitch]=\"column.searchable.searchableType\">\n            <ng-container *ngSwitchCase=\"'Custom'\">\n              <ng-container *ngIf=\"item?.metric && item?.metric[(column.searchable?.property?.name | lowercase)]\">\n                {{item?.metric[(column.searchable?.property?.name | lowercase)]}}\n              </ng-container>\n              <ng-container\n                            *ngIf=\"item?.properties && item?.properties[(column.searchable?.property?.name | lowercase)]\">\n                {{item?.properties[(column.searchable?.property?.name | lowercase)]}}\n              </ng-container>\n            </ng-container>\n            <ng-container *ngSwitchCase=\"'Id'\">\n              {{item?.id}}\n            </ng-container>\n            <ng-container *ngSwitchCase=\"'Label'\">\n              {{item?.label}}\n            </ng-container>\n          </ng-container>\n        </ng-container>\n\n        <ng-template #actions>\n          <button *ngIf=\"item.metric.datasource\"\n                  (click)=\"toggleSelectMetric.emit(item.metric)\"\n                  mat-icon-button>\n            <mat-icon *ngIf=\"!(selectedMetrics | metricInArray:item) || !canDelete; else remove\">\n              add_circle_outline\n            </mat-icon>\n            <ng-template #remove>\n              <mat-icon color=\"warn\">\n                remove_circle_outline\n              </mat-icon>\n            </ng-template>\n          </button>\n          <span *ngIf=\"!item.metric.datasource\"\n                translate>\n            IndametaSearchComponent.error\n          </span>\n        </ng-template>\n      </td>\n    </ng-container>\n\n  </ng-container>\n\n  <tr mat-header-row\n      *matHeaderRowDef=\"columnsKeys\">\n  </tr>\n  <tr mat-row\n      *matRowDef=\"let row; columns: columnsKeys\">\n  </tr>\n</table>\n\n<ngx-indasuite-empty-state *ngIf=\"items.length === 0 && !isLoading\"\n                           icon=\"search\"\n                           text=\"IndametaSearchComponent.no_items\">\n</ngx-indasuite-empty-state>\n\n<div class=\"paginator-container\">\n  <ngx-indasuite-hashed-pagination [pageSize]=\"pageSize\"\n                                   (pageSizeChange)=\"restartSearch($event)\"\n                                   (nextPage)=\"searchNext($event)\">\n  </ngx-indasuite-hashed-pagination>\n  <span *ngIf=\"showTotalItems\">\n    {{totalItemsText}}\n  </span>\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { SearchMetric } from '../../../api/models/search.model';\r\nimport { DataStructure, IndametaItemMetric } from '../../../api';\r\nimport { TreeDisplay } from '../../indametav2/models';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Tag } from '../../../api/models/indaba-models/tag.model';\r\n\r\n@Component({\r\n  selector: 'ngx-indasuite-search-metric-menu',\r\n  templateUrl: './search-metric-menu.component.html',\r\n  styleUrls: ['./search-metric-menu.component.scss']\r\n})\r\nexport class IndasuiteSearchMetricMenuComponent implements AfterViewInit {\r\n  @Input() selectedMetrics: Array<SearchMetric> = [];\r\n  @Input() uniqueMetric: boolean = false;\r\n  @Input() maxGraphNumber: number;\r\n  @Input() disableInputUnit: boolean = false;\r\n  @Input() canDelete: boolean = true;\r\n  @Input() dataStructure: DataStructure;\r\n  @Input() currentTab: number = 0;\r\n  @Input() isInModal: boolean = false;\r\n  @Input() hideMetric: boolean = false;\r\n  @Input() hideTree: boolean = false;\r\n  @Input() hideMetadata: boolean = false;\r\n  @Input() hasHeader: boolean = false;\r\n  @Output() selectedMetricsChange = new EventEmitter<Array<SearchMetric>>();\r\n\r\n  public selectedTreeviewgroup: string;\r\n  public readonly treeSearchIndex = 0;\r\n  public readonly metaSearchIndex = 1;\r\n  public readonly tagSearchIndex = 2;\r\n  public treeDisplayMode = TreeDisplay.SelectMetrics;\r\n\r\n  @ViewChild('container') containerView: ElementRef;\r\n  public treeHeight: number;\r\n\r\n  get indametaSelectedMetrics() {\r\n    return this.selectedMetrics.map((el) => new Tag(el.name, el.datasource));\r\n  }\r\n\r\n  get indametaItems(): IndametaItemMetric[] {\r\n    return this.selectedMetrics.map((el) => ({\r\n      name: el.name,\r\n      datasource: el.datasource,\r\n      id: `${el.datasource}@${el.name}`,\r\n      description: el.description,\r\n      type: el.type\r\n    } as IndametaItemMetric));\r\n  }\r\n\r\n  constructor(public translationService: TranslateService) { }\r\n\r\n  public ngAfterViewInit(): void {\r\n    // height - padding - datasource selector height - mat group header height\r\n    this.treeHeight = this.containerView.nativeElement.offsetHeight - 16 - 58.25 - 48;\r\n  }\r\n\r\n  public selectedMetricChange(item: { metric: IndametaItemMetric, selected: boolean } | IndametaItemMetric) {\r\n    let metric: IndametaItemMetric;\r\n    let selected: boolean;\r\n    if (\"metric\" in item) {\r\n      metric = item.metric;\r\n      selected = item.selected;\r\n    }\r\n    else {\r\n      metric = item;\r\n      selected = !this.selectedMetrics.some(el => el.name === metric.name && el.datasource === metric.datasource);\r\n    }\r\n\r\n    if (selected || !this.canDelete) {\r\n      this.updateSelectedTag({\r\n        name: metric.name,\r\n        datasource: metric.datasource,\r\n        unit: metric.unit,\r\n        description: metric.description,\r\n        type: metric.type,\r\n        tag: metric.name\r\n      });\r\n    } else {\r\n      this.selectedMetricsChange.emit(\r\n        this.selectedMetrics.filter(\r\n          (el) => el.datasource !== metric.datasource || el.name !== metric.name\r\n        )\r\n      );\r\n    }\r\n  }\r\n\r\n  public tagInputSelected(tag: Tag & { type?: string }, added: boolean) {\r\n    if (added || !this.canDelete) {\r\n      this.updateSelectedTag({\r\n        name: tag.tag_indaba,\r\n        datasource: tag.api,\r\n        unit: tag.unit,\r\n        description: '',\r\n        type: tag.type,\r\n        tag: tag.tag_indaba\r\n      });\r\n    } else {\r\n      this.selectedMetricsChange.emit(this.selectedMetrics.filter(\r\n        (el) => el.name !== tag.tag_indaba || el.datasource !== tag.api\r\n      ));\r\n    }\r\n  }\r\n\r\n  private updateSelectedTag(element: {\r\n    name: string;\r\n    datasource: string;\r\n    unit: string;\r\n    description: string;\r\n    type?: string,\r\n    tag: string\r\n  }) {\r\n    if (this.uniqueMetric)\r\n      this.selectedMetrics = [element];\r\n    else {\r\n      this.selectedMetrics = [...this.selectedMetrics, element];\r\n\r\n      if (this.maxGraphNumber && this.maxGraphNumber > 0 && this.selectedMetrics.length > this.maxGraphNumber)\r\n        this.selectedMetrics = this.selectedMetrics.slice(this.selectedMetrics.length - this.maxGraphNumber);\r\n    }\r\n    this.selectedMetricsChange.emit(this.selectedMetrics);\r\n  }\r\n}\r\n","<div class=\"new h-100\"\r\n     #container>\r\n    <mat-tab-group mat-align-tabs=\"center\"\r\n                   class=\"body-overflow\"\r\n                   [class.h-100]=\"this.hideTree || (currentTab !== 1 && !this.hideMetric) || (currentTab !== 0 && this.hideMetric)\"\r\n                   [(selectedIndex)]=\"currentTab\">\r\n        <mat-tab label=\"{{ 'IndasuiteSearchComponent.search_metric' | translate }}\"\r\n                 *ngIf=\"!this.hideMetric\">\r\n            <ngx-indasuite-search-metric-input class=\"overflow\"\r\n                                               [selectedMetrics]=\"indametaSelectedMetrics\"\r\n                                               [disableInputUnit]=\"disableInputUnit\"\r\n                                               [canDelete]=\"canDelete\"\r\n                                               (tagAdded)=\"tagInputSelected($event, true)\"\r\n                                               (tagRemoved)=\"tagInputSelected($event, false)\">\r\n            </ngx-indasuite-search-metric-input>\r\n        </mat-tab>\r\n        <mat-tab label=\"{{ 'IndasuiteSearchComponent.search_tree' | translate }}\"\r\n                 *ngIf=\"!this.hideTree\">\r\n            <ng-template matTabContent>\r\n                <ngx-indasuite-indameta-tree class=\"treeview-container\"\r\n                                             [treeDisplayMode]=\"treeDisplayMode\"\r\n                                             [selectedMetrics]=\"indametaItems\"\r\n                                             [canDelete]=\"canDelete\"\r\n                                             [hasHeader]=\"hasHeader\"\r\n                                             [isInModal]=\"isInModal\"\r\n                                             [height]=\"treeHeight\"\r\n                                             (selectMetric)=\"selectedMetricChange($event)\">\r\n                </ngx-indasuite-indameta-tree>\r\n            </ng-template>\r\n        </mat-tab>\r\n        <mat-tab label=\"{{ 'IndasuiteSearchComponent.search_metadata' | translate }}\"\r\n                 *ngIf=\"!this.hideMetadata\">\r\n            <ngx-indasuite-indameta-search class=\"overflow\"\r\n                                           [selectedMetrics]=\"indametaItems\"\r\n                                           [showActions]=\"true\"\r\n                                           [dataStructure]=\"dataStructure\"\r\n                                           [showDataStructures]=\"!dataStructure\"\r\n                                           [canDelete]=\"canDelete\"\r\n                                           (toggleSelectMetric)=\"selectedMetricChange($event)\">\r\n            </ngx-indasuite-indameta-search>\r\n        </mat-tab>\r\n    </mat-tab-group>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SearchMetric } from '../../../api/models/search.model';\n\n@Component({\n  selector: 'ngx-indasuite-search-metric-list',\n  templateUrl: './search-metric-list.component.html',\n  styleUrls: ['./search-metric-list.component.scss']\n})\nexport class IndasuiteSearchMetricListComponent {\n  readonly displayedColumns = ['tag', 'datasource', 'unit', 'actions'];\n\n  @Input() selectedMetrics: Array<SearchMetric>;\n  @Output() selectedMetricsChange = new EventEmitter<Array<SearchMetric>>();\n\n  removeMetric(metric: SearchMetric) {\n    this.selectedMetricsChange.emit([...this.selectedMetrics.filter(\n      (el) => el.datasource !== metric.datasource || el.name !== metric.name\n    )]);\n  }\n}\n","<div class=\"table-container\">\n  <table mat-table\n         [dataSource]=\"selectedMetrics\"\n         class=\"mat-elevation-z8 w-100\">\n    <ng-container matColumnDef=\"tag\">\n      <th mat-header-cell\n          *matHeaderCellDef>\n        {{ 'IndasuiteSearchComponent.metric' | translate }}\n      </th>\n      <td mat-cell\n          *matCellDef=\"let element\">\n        {{ element.name }}\n      </td>\n    </ng-container>\n\n    <ng-container matColumnDef=\"datasource\">\n      <th mat-header-cell\n          *matHeaderCellDef\n          class=\"text-center\">\n        {{ 'IndasuiteSearchComponent.datasource' | translate }}\n      </th>\n      <td mat-cell\n          *matCellDef=\"let element\"\n          class=\"text-center\">\n        {{ element.datasource }}\n      </td>\n    </ng-container>\n\n    <ng-container matColumnDef=\"unit\">\n      <th mat-header-cell\n          *matHeaderCellDef\n          class=\"text-center\">\n        {{ 'IndasuiteSearchComponent.unit' | translate }}\n      </th>\n      <td mat-cell\n          *matCellDef=\"let element\"\n          class=\"text-center\">\n        {{ element.unit }}\n      </td>\n    </ng-container>\n\n    <ng-container matColumnDef=\"actions\">\n      <th mat-header-cell\n          *matHeaderCellDef>\n        {{ 'IndasuiteSearchComponent.actions' | translate }}\n      </th>\n      <td mat-cell\n          *matCellDef=\"let element\">\n        <button mat-mini-fab\n                color=\"warn\"\n                (click)=\"removeMetric(element)\">\n          <mat-icon>delete_forever</mat-icon>\n        </button>\n      </td>\n    </ng-container>\n\n    <tr mat-header-row\n        *matHeaderRowDef=\"displayedColumns\">\n    </tr>\n    <tr mat-row\n        *matRowDef=\"let row; columns: displayedColumns\">\n    </tr>\n  </table>\n\n  <ngx-indasuite-empty-state *ngIf=\"selectedMetrics.length === 0\"\n                             icon=\"tag\"\n                             text=\"IndasuiteSearchComponent.no_metric\">\n  </ngx-indasuite-empty-state>\n</div>","import {\r\n  Component,\r\n  Input\r\n} from '@angular/core';\r\n@Component({\r\n  selector: 'ngx-indasuite-subtitle',\r\n  templateUrl: './subtitle.component.html',\r\n  styleUrls: ['./subtitle.component.scss']\r\n})\r\nexport class IndasuiteSubtitleComponent {\r\n  @Input() text: string;\r\n  @Input() translate: boolean = true;\r\n}\r\n","<div class=\"subtitle\">\r\n  <div class=\"border\"></div>\r\n  <span translate\r\n        *ngIf=\"translate\">{{this.text}}</span>\r\n  <span *ngIf=\"!translate\">{{this.text}}</span>\r\n  <div class=\"border\"></div>\r\n</div>","import { Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport {DataStructure, SearchMetric, SearchMetricModalData} from '../../../api';\nimport { FormControl } from '@angular/forms';\nimport { TagComponentDescription } from '../../../api';\n\n@Component({\n  selector: 'ngx-indasuite-search-metric-modal',\n  templateUrl: './search-metric-modal.component.html',\n  styleUrls: ['./search-metric-modal.component.scss']\n})\nexport class IndasuiteSearchMetricModalComponent {\n  // Inputs\n  public selectedMetrics: Array<SearchMetric> = [];\n  public metricFieldControl: FormControl;\n\n  // behavior\n  public uniqueMetric: boolean = false;\n  public maxPickableMetrics: number = 0;\n  public dataStructure: DataStructure;\n\n  // display\n  public currentTab: number;\n  public hideList: boolean;\n  public hideMetric: boolean;\n  public hideTree: boolean;\n  public hideMetadata: boolean;\n  public hasHeader: boolean;\n\n  @ViewChild('exprArea') expressionArea: ElementRef<HTMLTextAreaElement>;\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) private data: SearchMetricModalData,\n    private dialogRef: MatDialogRef<any>\n  ) {\n    this.selectedMetrics = this.data.selectedMetrics;\n    this.maxPickableMetrics = this.data.maxPickableMetrics;\n    this.uniqueMetric = this.data.uniqueMetric;\n    this.dataStructure = this.data.dataStructure;\n    this.currentTab = this.data.currentTab;\n    this.hideList = this.data.hideList;\n    this.hideMetric = this.data.hideMetric;\n    this.hideTree = this.data.hideTree;\n    this.hideMetadata = this.data.hideMetadata;\n    this.hasHeader = this.data.hasHeader;\n    if (this.data.expression !== null && this.data.expression !== undefined)\n      this.metricFieldControl = new FormControl({ value: this.data.expression, disabled: false });\n  }\n\n  public save() {\n    if (this.metricFieldControl)\n      this.dialogRef.close(this.metricFieldControl.value);\n    else\n      this.dialogRef.close(this.selectedMetrics);\n  }\n\n  public close() {\n    this.dialogRef.close();\n  }\n\n  public selectedMetricsChange(selectedMetrics: Array<SearchMetric>) {\n    if (this.metricFieldControl)\n      this.generateExpression(`${selectedMetrics[selectedMetrics.length - 1].datasource}@${selectedMetrics[selectedMetrics.length - 1].tag}`);\n    else\n      this.selectedMetrics = selectedMetrics;\n\n    if (this.uniqueMetric)\n      this.save();\n  }\n\n  private generateExpression(toAdd: string): void {\n    const textArea = this.expressionArea;\n    const cursorStart = textArea.nativeElement.selectionStart;\n    const cursorEnd = textArea.nativeElement.selectionEnd;\n\n    const exprArray = Array.from(this.metricFieldControl.value);\n    exprArray.splice(cursorStart, cursorEnd - cursorStart, toAdd);\n    this.metricFieldControl.setValue(exprArray.join(''));\n  }\n\n  public static reportTagsToSearchTags(tagList: Array<TagComponentDescription>) {\n    const res: Array<SearchMetric> = [];\n\n    const alreadyAdded = new Set<string>();\n\n    tagList.forEach((tag) => {\n      const id = `${tag.name}@${tag.datasource}`;\n      if (alreadyAdded.has(id)) return;\n\n      alreadyAdded.add(id);\n\n      res.push({\n        name: tag.name,\n        datasource: tag.datasource,\n        unit: tag.unit,\n        description: '',\n        tag: ''\n      });\n    });\n\n    return res;\n  }\n}\n","<div class=\"content new\"\n     mat-dialog-content\n     [ngClass]=\"{'overflow-y': this.metricFieldControl}\">\n  <div class=\"header\">\n    <div class=\"empty\"></div>\n    <p translate>IndasuiteSearchComponent.title</p>\n\n    <div class=\"action\">\n      <button *ngIf=\"!uniqueMetric\"\n              color=\"accent\"\n              class=\"btn-save\"\n              mat-raised-button\n              (click)=\"save()\">\n        {{ 'select' | translate }}\n      </button>\n\n      <div class=\"btn-close\"\n           (click)=\"this.close()\">\n      </div>\n    </div>\n  </div>\n\n  <div class=\"expression\"\n       *ngIf=\"this.metricFieldControl\">\n    <mat-form-field appearance=\"outline\">\n      <mat-label>Expression</mat-label>\n      <textarea matInput\n                #exprArea\n                cdkTextareaAutosize\n                [formControl]=\"metricFieldControl\">\n      </textarea>\n    </mat-form-field>\n  </div>\n\n  <div class=\"body\"\n       [ngClass]=\"{'body-height-expression': this.metricFieldControl}\">\n    <div class=\"d-flex flex-column gap-1 card ai-center\"\n         [ngClass]=\"{'w-50': !this.hideList, 'w-100': this.hideList}\">\n      <ngx-indasuite-subtitle *ngIf=\"!this.hideList\"\n                              text=\"IndasuiteSearchComponent.metrics_selection\"></ngx-indasuite-subtitle>\n      <ngx-indasuite-search-metric-menu class=\"w-100\"\n                                        [class.search-with-subtitle]=\"!hideList\"\n                                        [uniqueMetric]=\"uniqueMetric || maxPickableMetrics === 1\"\n                                        [maxGraphNumber]=\"maxPickableMetrics\"\n                                        [selectedMetrics]=\"selectedMetrics\"\n                                        [canDelete]=\"!this.metricFieldControl\"\n                                        [dataStructure]=\"this.dataStructure\"\n                                        [currentTab]=\"this.currentTab\"\n                                        [isInModal]=\"true\"\n                                        [hideTree]=\"this.hideTree\"\n                                        [hideMetadata]=\"this.hideMetadata\"\n                                        [hideMetric]=\"this.hideMetric\"\n                                        [hasHeader]=\"hasHeader\"\n                                        (selectedMetricsChange)=\"selectedMetricsChange($event)\">\n      </ngx-indasuite-search-metric-menu>\n    </div>\n\n    <div *ngIf=\"!this.hideList\"\n         class=\"d-flex flex-column gap-1 w-50 card ai-center\">\n      <ngx-indasuite-subtitle text=\"IndasuiteSearchComponent.metrics_selected\"></ngx-indasuite-subtitle>\n      <ngx-indasuite-search-metric-list class=\"w-100 overflow-y\"\n                                        [selectedMetrics]=\"selectedMetrics\"\n                                        (selectedMetricsChange)=\"selectedMetricsChange($event)\">\n      </ngx-indasuite-search-metric-list>\n    </div>\n  </div>\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Menu, Submenu } from '../menu.model';\r\n\r\n@Component({\r\n  selector: 'ngx-indasuite-menu-card',\r\n  templateUrl: './menu-card.component.html',\r\n  styleUrls: ['./menu-card.component.scss']\r\n})\r\nexport class IndasuiteMenuCardComponent {\r\n  @Input() menu: Menu;\r\n  @Input() selectedSubmenu: Submenu;\r\n  @Output() submenuClicked = new EventEmitter<Submenu>();\r\n}\r\n","<div class=\"submenu-card\">\r\n  <div class=\"section\"\r\n       *ngFor=\"let section of menu.sections\">\r\n    <span>{{section.title | translate}}</span>\r\n    <div class=\"child\"\r\n         *ngFor=\"let child of section.children\"\r\n         (click)=\"this.submenuClicked.emit(child)\">\r\n      <div><mat-icon>{{child.logo}}</mat-icon></div>\r\n      <div>{{child.title | translate}}</div>\r\n    </div>\r\n  </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Menu, Submenu } from '../menu.model';\r\n\r\n@Component({\r\n  selector: 'ngx-indasuite-menu-button',\r\n  templateUrl: './menu-button.component.html',\r\n  styleUrls: ['./menu-button.component.scss']\r\n})\r\nexport class IndasuiteMenuButtonComponent {\r\n  @Input() menu: Menu;\r\n  @Input() isSelected: boolean;\r\n  @Input() selectedSubmenu: Submenu;\r\n\r\n  @Output() menuClicked = new EventEmitter<Menu>();\r\n  @Output() submenuClicked = new EventEmitter<Submenu>();\r\n  @Output() actionClicked = new EventEmitter<string>();\r\n  @Output() downloadClicked = new EventEmitter<string>();\r\n\r\n  public menuClick(): void {\r\n    if (this.menu.behavior) {\r\n      if (this.menu.behavior === 'currentTab')\r\n        this.menuClicked.emit(this.menu);\r\n      if (this.menu.behavior === 'newTab')\r\n        this.actionClicked.emit(this.menu.url);\r\n      if (this.menu.behavior === 'download')\r\n        this.downloadClicked.emit(this.menu.url);\r\n    }\r\n  }\r\n}\r\n","<div class=\"button\"\r\n     [ngClass]=\"{'selected': isSelected}\"\r\n     (click)=\"this.menuClick()\">\r\n  <mat-icon>{{this.menu.logo}}</mat-icon>\r\n  <span class=\"text\">{{this.menu.title | translate}}</span>\r\n\r\n  <ngx-indasuite-menu-card *ngIf=\"menu.sections.length > 0\"\r\n                           class=\"shadow\"\r\n                           [menu]=\"menu\"\r\n                           [selectedSubmenu]=\"selectedSubmenu\"\r\n                           (submenuClicked)=\"this.submenuClicked.emit($event)\">\r\n  </ngx-indasuite-menu-card>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Menu, Section, Submenu } from '../menu.model';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ProfileService } from '../../../api';\r\nimport { IndasuiteModalService } from '../../services/indasuite-modal.service';\r\nimport { TitleTranslationService } from '../../services/title.service';\r\nimport { filter } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'ngx-indasuite-header',\r\n  templateUrl: './header.component.html',\r\n  styleUrls: ['./header.component.scss']\r\n})\r\nexport class IndasuiteHeaderComponent implements OnInit {\r\n  @Input() menus: Array<Menu>;\r\n  @Input() hasMenus: boolean = true;\r\n  @Input() hasHomePage: boolean = true;\r\n  @Input() logo: string;\r\n  @Input() appVersion: string;\r\n  @Input() defaultTitle: string;\r\n  @Input() linkToProfile: string;\r\n  @Input() isFromPortal: boolean = false;\r\n\r\n  @Output() selectedMenuChange = new EventEmitter<Array<Menu | Submenu>>();\r\n\r\n  public userScopes: string = \"\";\r\n  public userMenus: Array<Menu> = [];\r\n  public selectedMenu: Menu;\r\n  public selectedSubmenu: Submenu;\r\n\r\n  constructor(\r\n    public router: Router,\r\n    public translate: TranslateService,\r\n    private profileService: ProfileService,\r\n    private modalService: IndasuiteModalService,\r\n    private titleTranslationService: TitleTranslationService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.router.events\r\n      .pipe(filter(event => event instanceof NavigationEnd))\r\n      .subscribe((event: NavigationEnd) => {\r\n        this.setMenuSubmenu(event.urlAfterRedirects);\r\n      });\r\n\r\n    this.getUserScopes();\r\n\r\n    for (const menuModule of this.menus) {\r\n      const menuSection: Array<Section> = [];\r\n      for (const section of menuModule.sections) {\r\n        const menuChildren: Array<Submenu> = [];\r\n        for (const submenu of section.children)\r\n          if (submenu.scopes.length === 0 || this.hasRight(submenu.scopes))\r\n            menuChildren.push(submenu);\r\n\r\n        if (menuChildren.length > 0)\r\n          menuSection.push({ title: section.title, children: menuChildren });\r\n      }\r\n\r\n      if (menuSection.length > 0 || menuModule.behavior)\r\n        this.userMenus.push({ ...menuModule, sections: menuSection });\r\n    }\r\n\r\n    if (!this.hasMenus) {\r\n      this.selectedMenu = null;\r\n      this.userMenus = [];\r\n    }\r\n\r\n    this.setMenuSubmenu(this.router.url);\r\n  }\r\n\r\n  public menuClicked(menuClicked: Menu): void {\r\n    this.selectedMenu = menuClicked;\r\n    this.router.navigate([menuClicked.url]);\r\n  }\r\n\r\n  public submenuClick(submenuClicked: Submenu): void {\r\n    switch (submenuClicked.behavior) {\r\n      case 'currentTab':\r\n        this.router.navigate([submenuClicked.url]);\r\n        break;\r\n      case 'newTab':\r\n        window.open(submenuClicked.url, '_blank');\r\n        break;\r\n      case 'download':\r\n        this.download(submenuClicked.url);\r\n        break;\r\n    }\r\n  }\r\n\r\n  public downloadClicked(url: string): void {\r\n    this.download(url);\r\n  }\r\n\r\n  public navigateToHome(): void {\r\n    const url = window.location.origin;\r\n    const portal = url.replace('.explorer.', '.portal.');\r\n    window.open(portal);\r\n  }\r\n\r\n  public newTab(url: string): void {\r\n    window.open(url);\r\n  }\r\n\r\n  public myProfileClick(): void {\r\n    this.selectedMenu = null;\r\n    this.selectedSubmenu = null;\r\n\r\n    if (this.isFromPortal) {\r\n      this.router.navigate(['/app/users/current-user']);\r\n      this.titleTranslationService.setTitle('Titles.My_profile');\r\n      this.selectedMenuChange.emit([]);\r\n    } else window.open(this.linkToProfile);\r\n  }\r\n\r\n  private getUserScopes() {\r\n    this.profileService.getAuthorization()\r\n      .subscribe((v) => this.userScopes = v);\r\n  }\r\n\r\n  private hasRight(scopes: Array<string>): boolean {\r\n    return scopes.every(scope => this.userScopes.includes(scope));\r\n  }\r\n\r\n  private download(url: string): void {\r\n    fetch(url)\r\n      .then((response) => {\r\n        response.blob()\r\n          .then((blob) => {\r\n            const link = document.createElement('a');\r\n            link.href = URL.createObjectURL(blob);\r\n            link.download = url.split('/')[url.split('/').length - 1];\r\n            link.click();\r\n          });\r\n      })\r\n      .catch((e) => {\r\n        this.modalService.openToastr({\r\n          api: 'Other',\r\n          error: [{ error: 'File Unavailable', message: 'IndasuiteDrawerComponent.fileUnavailableError', statusCode: '1' }],\r\n          errorCode: 1,\r\n          level: 'Error',\r\n          timer: 10\r\n        });\r\n      });\r\n  }\r\n\r\n  private setMenuSubmenu(url: string): void {\r\n    this.selectedSubmenu = this.userMenus.flatMap(m => m.sections.flatMap(s => s.children)).find(c => c.url === url);\r\n    if (this.selectedSubmenu)\r\n      this.selectedMenu = this.userMenus.find(m => m.sections.flatMap(s => s.children).some(c => c === this.selectedSubmenu));\r\n    else\r\n      this.selectedMenu = this.userMenus.find(m => url.startsWith(m.url));\r\n\r\n    if (this.selectedMenu) {\r\n      this.titleTranslationService.setTitleFromMenus([this.selectedMenu, this.selectedSubmenu]);\r\n      this.selectedMenuChange.emit([this.selectedMenu, this.selectedSubmenu]);\r\n    } else if (this.defaultTitle) {\r\n      this.titleTranslationService.setTitle(this.defaultTitle);\r\n    }\r\n  }\r\n}","<div class=\"d-flex j-between border-b p-x-1\">\r\n  <div (click)=\"navigateToHome()\"\r\n       class=\"logo-io mobile-hidden as-center pointer\">\r\n    <img src=\"/lib/indasuite-ui/img/io-base-logo2.png\"\r\n         alt=\"Logo client\" />\r\n  </div>\r\n\r\n  <div class=\"menu\">\r\n    <ngx-indasuite-menu-button *ngFor=\"let menu of this.userMenus\"\r\n                               [menu]=\"menu\"\r\n                               [isSelected]=\"selectedMenu?.title === menu.title\"\r\n                               [selectedSubmenu]=\"selectedSubmenu\"\r\n                               (menuClicked)=\"this.menuClicked($event)\"\r\n                               (submenuClicked)=\"this.submenuClick($event)\"\r\n                               (actionClicked)=\"this.newTab($event)\"\r\n                               (downloadClicked)=\"this.downloadClicked($event)\">\r\n    </ngx-indasuite-menu-button>\r\n  </div>\r\n\r\n\r\n  <div class=\"d-flex gap-1 p-1 ai-center\">\r\n    <div *ngIf=\"!this.hasMenus\"\r\n         class=\"action\"\r\n         (click)=\"newTab('/app/admin/status')\">\r\n      <mat-icon>settings</mat-icon>\r\n    </div>\r\n\r\n    <div *ngIf=\"this.hasMenus && this.hasHomePage\"\r\n         class=\"action\"\r\n         (click)=\"newTab('/app/home')\">\r\n      <mat-icon>grid_view</mat-icon>\r\n    </div>\r\n\r\n    <div class=\"action\"\r\n         (click)=\"newTab('https://intercom.help/io-base/fr')\">\r\n      <mat-icon>help</mat-icon>\r\n    </div>\r\n\r\n    <ngx-indasuite-user [appVersion]=\"appVersion\"\r\n                        [logo]=\"logo\"\r\n                        (myProfileClick)=\"myProfileClick()\">\r\n    </ngx-indasuite-user>\r\n  </div>\r\n\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AccessType, AccessZone, StoragePrecision } from '../../api/models';\nimport { Group } from '../../api/models/group.model';\n\n@Pipe({\n  name: 'ngxIndasuiteTechnicalNameDisplay'\n})\nexport class TechnicalNameDisplayPipe implements PipeTransform {\n\n  private prefix = 'TechnicalNameDisplayPipe.';\n\n  constructor(private translate: TranslateService) { }\n\n  transform(toDisplay: AccessZone | Group | StoragePrecision): string {\n\n    if (!toDisplay)\n      return '';\n\n    if ('accessType' in toDisplay)\n      return this.getAccessZoneName(toDisplay);\n\n    if ('defaultGroup' in toDisplay)\n      return this.getGroupName(toDisplay);\n\n    if ('validityInSecond' in toDisplay)\n      return this.getStorageRuleName(toDisplay);\n\n    return '';\n  }\n\n  private getAccessZoneName(accessZone: AccessZone): string {\n    if (!accessZone.isDefault)\n      return accessZone.name;\n\n    if (accessZone.accessType === AccessType.Read)\n      return this.translate.instant(`${this.prefix}_default_access_zone_read`);\n    if (accessZone.accessType === AccessType.Write)\n      return this.translate.instant(`${this.prefix}_default_access_zone_write`);\n\n    return accessZone.name;\n  }\n\n  private getGroupName(group: Group): string {\n\n    if (group.defaultGroup === 'Application')\n      return this.translate.instant(`${this.prefix}_default_group_apps`);\n\n    if (group.defaultGroup === 'User')\n      return this.translate.instant(`${this.prefix}_default_group_users`);\n\n    return group.name;\n  }\n\n  private getStorageRuleName(storageRule: StoragePrecision): string {\n    if (storageRule.isDefault)\n      return this.translate.instant(`${this.prefix}_default_storage_role`);\n    return storageRule.name;\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\ntype OperatorType = 'common' | 'advanced' | 'indaba' | 'date' | 'maths';\ntype Operator = {\n  value: string,\n  type: OperatorType;\n};\n\n@Component({\n  selector: 'ngx-indasuite-formula-operators',\n  templateUrl: './formula-operators.component.html',\n  styleUrls: ['./formula-operators.component.scss']\n})\nexport class FormulaOperatorsComponent {\n\n  @Input() showSearchTags = false;\n  @Input() operatorTypes: OperatorType[] = [\n    'common',\n    'advanced',\n    'indaba',\n    'date',\n    'maths'\n  ];\n  @Output() addOperator = new EventEmitter<string>();\n  @Output() showSearchMetrics = new EventEmitter();\n\n  public filteredOperatorType: OperatorType = this.operatorTypes[0];\n\n  public readonly msdnMathDocUrl = `https://docs.microsoft.com/${this.translateService.currentLang}/dotnet/api/system.math`;\n\n  public readonly operators: Readonly<Operator[]> = [\n    { value: '(', type: 'common' },\n    { value: ')', type: 'common' },\n    { value: '+', type: 'common' },\n    { value: '-', type: 'common' },\n    { value: '*', type: 'common' },\n    { value: '/', type: 'common' },\n    { value: '%', type: 'common' },\n    { value: '^', type: 'common' },\n    { value: '=', type: 'common' },\n    { value: '>', type: 'common' },\n    { value: '<>', type: 'common' },\n    { value: 'And', type: 'common' },\n    { value: 'Or', type: 'common' },\n    { value: 'Xor', type: 'common' },\n    { value: '<<', type: 'common' },\n    { value: '>>', type: 'common' },\n    { value: 'if', type: 'advanced' },\n    { value: 'ifthen', type: 'advanced' },\n    { value: 'watchdog', type: 'advanced' },\n    { value: 'previousValue', type: 'advanced' },\n    { value: 'rand', type: 'advanced' },\n    { value: 'idb.min', type: 'indaba' },\n    { value: 'idb.max', type: 'indaba' },\n    { value: 'idb.avg', type: 'indaba' },\n    { value: 'idb.sum', type: 'indaba' },\n    { value: 'idb.count', type: 'indaba' },\n    { value: 'idb.firstValueBefore', type: 'indaba' },\n    { value: 'idb.firstValueAfter', type: 'indaba' },\n    { value: 'now', type: 'date' },\n    { value: 'now.startOfDay', type: 'date' },\n    { value: 'now.endOfDay', type: 'date' },\n    { value: 'now.startOfYear', type: 'date' },\n    { value: 'now.endOfYear', type: 'date' },\n    { value: 'now.startOfMonth', type: 'date' },\n    { value: 'now.endOfMonth', type: 'date' },\n    { value: 'now.startOfWeek', type: 'date' },\n    { value: 'now.endOfWeek', type: 'date' },\n    { value: 'dateFromString', type: 'date' },\n    { value: 'abs', type: 'maths' },\n    { value: 'cos', type: 'maths' },\n    { value: 'exp', type: 'maths' },\n    { value: 'log', type: 'maths' },\n    { value: 'min', type: 'maths' },\n    { value: 'max', type: 'maths' },\n    { value: 'pow', type: 'maths' },\n    { value: 'round', type: 'maths' },\n    { value: 'sin', type: 'maths' },\n    { value: 'tan', type: 'maths' },\n    { value: 'sqrt', type: 'maths' },\n    { value: 'pi', type: 'maths' }\n  ] as const;\n\n  private operatorsAutoTyping: Record<string, string> = {\n    if: this.translateService.instant('FormulaOperatorsComponent.if'),\n    ifthen: this.translateService.instant(\n      'FormulaOperatorsComponent.ifthen'\n    ),\n    watchdog: this.translateService.instant(\n      'FormulaOperatorsComponent.watchdog'\n    ),\n    previousValue: this.translateService.instant(\n      'FormulaOperatorsComponent.previous'\n    ),\n    'idb.min': this.translateService.instant(\n      'FormulaOperatorsComponent.range',\n      { type: 'min' }\n    ),\n    'idb.max': this.translateService.instant(\n      'FormulaOperatorsComponent.range',\n      { type: 'max' }\n    ),\n    'idb.avg': this.translateService.instant(\n      'FormulaOperatorsComponent.range',\n      { type: 'avg' }\n    ),\n    'idb.sum': this.translateService.instant(\n      'FormulaOperatorsComponent.range',\n      { type: 'sum' }\n    ),\n    'idb.count': this.translateService.instant(\n      'FormulaOperatorsComponent.range',\n      { type: 'count' }\n    ),\n    'idb.firstValueBefore': this.translateService.instant(\n      'FormulaOperatorsComponent.instant',\n      { type: 'firstValueBefore' }\n    ),\n    'idb.firstValueAfter': this.translateService.instant(\n      'FormulaOperatorsComponent.instant',\n      { type: 'firstValueAfter' }\n    ),\n    'now.startOfWeek': this.translateService.instant(\n      'FormulaOperatorsComponent.week',\n      { type: 'start' }\n    ),\n    'now.endOfWeek': this.translateService.instant(\n      'FormulaOperatorsComponent.week',\n      { type: 'end' }\n    ),\n    'dateFromString': this.translateService.instant(\n      'FormulaOperatorsComponent.date_from_string'\n    ),\n    'abs': this.translateService.instant('FormulaOperatorsComponent.abs'),\n    'cos': this.translateService.instant('FormulaOperatorsComponent.cos'),\n    'exp': this.translateService.instant('FormulaOperatorsComponent.exp'),\n    'log': this.translateService.instant('FormulaOperatorsComponent.log'),\n    'min': this.translateService.instant('FormulaOperatorsComponent.min'),\n    'max': this.translateService.instant('FormulaOperatorsComponent.max'),\n    'pow': this.translateService.instant('FormulaOperatorsComponent.pow'),\n    'round': this.translateService.instant('FormulaOperatorsComponent.round'),\n    'sin': this.translateService.instant('FormulaOperatorsComponent.sin'),\n    'tan': this.translateService.instant('FormulaOperatorsComponent.tan'),\n    'sqrt': this.translateService.instant('FormulaOperatorsComponent.sqrt')\n  };\n\n  constructor(private translateService: TranslateService) { }\n\n  public operatorClick(operator: string): void {\n    const operatorAutoTyping = this.operatorsAutoTyping[operator] ?? operator;\n    this.addOperator.emit(operatorAutoTyping);\n  }\n}\n","<div class=\"grid-op-search my-2\">\n  <mat-form-field appearance=\"outline\">\n    <mat-label translate>FormulaOperatorsComponent.operators</mat-label>\n    <mat-select [(value)]=\"filteredOperatorType\">\n      <mat-option *ngFor=\"let type of operatorTypes\"\n                  [value]=\"type\">\n        {{('FormulaOperatorsComponent.' + type)| translate}}\n      </mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <button *ngIf=\"showSearchTags\"\n          mat-stroked-button\n          class=\"my-1\"\n          type=\"button\"\n          color=\"primary\"\n          (click)=\"showSearchMetrics.emit()\">\n    <mat-icon>search</mat-icon>\n    {{ \"FormulaOperatorsComponent.tag_search\" | translate }}\n  </button>\n</div>\n\n<mat-chip-list class=\"operators\">\n  <ng-container *ngFor=\"let operator of operators\">\n    <mat-chip *ngIf=\"operator.type === filteredOperatorType\"\n              (click)=\"operatorClick(operator.value)\">\n      {{ operator.value }}\n    </mat-chip>\n  </ng-container>\n</mat-chip-list>\n\n<a *ngIf=\"filteredOperatorType === 'maths'\"\n   [href]=\"msdnMathDocUrl\"\n   target=\"_blank\"\n   class=\"mt-2 d-block\">\n  {{ \"FormulaOperatorsComponent.maths_doc\" | translate }}\n  <mat-icon class=\"vertical-bottom\"\n            [inline]=\"true\">\n    open_in_new\n  </mat-icon>\n</a>\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DateTime } from 'luxon';\n\n@Pipe({\n  name: 'ngxIndasuiteDatetime',\n})\nexport class DateTimePipe implements PipeTransform {\n\n  private translate = inject(TranslateService);\n\n  public transform(date: DateTime | string, format: DateTimeFormatsName): string {\n    if (!date)\n      return null;\n\n    if (typeof date === 'string')\n      date = DateTime.fromISO(date);\n\n    return date\n      .setLocale(this.translate.currentLang)\n      .toLocaleString({ ...DateTime[format], timeZoneName: undefined });\n  }\n}\n\ntype DateTimeFormats = {\n  [K in keyof typeof DateTime]: (typeof DateTime)[K] extends Intl.DateTimeFormatOptions ? K : never;\n};\n\ntype DateTimeFormatsName = DateTimeFormats[keyof DateTimeFormats];\n\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Duration } from 'luxon';\n\n@Pipe({\n  name: 'ngxIndasuiteDuration'\n})\nexport class DurationPipe implements PipeTransform {\n\n  private translate = inject(TranslateService);\n  \n  transform(duration: string | Duration): string {\n    if (!duration) \n      return null;\n    \n    if (typeof duration === 'string')    \n      duration = Duration.fromISOTime(duration, {locale: this.translate.currentLang}).rescale();\n    \n    if (duration.toMillis() === 0)\n      return ' < 1 ms'\n    \n    return duration.toHuman({unitDisplay: 'short', listStyle: 'narrow'});\n  }\n\n}\n","import { Component, Inject, TemplateRef } from \"@angular/core\";\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\n\nexport type IndasuiteConfirmModalData = {\n  title: string,\n  content: TemplateRef<any>,\n  context?: any;\n  falseText: string,\n  trueText: string\n}\n\n@Component({\n  templateUrl: './confirm-modal.component.html'\n})\nexport class IndasuiteConfirmModalComponent {\n  public title: string = \"\";\n  public content: TemplateRef<any>;\n  public context: any;\n  public falseText: string = \"\";\n  public trueText: string = \"\";\n\n  constructor(\n    public dialogRef: MatDialogRef<IndasuiteConfirmModalComponent>,\n    @Inject(MAT_DIALOG_DATA) data: IndasuiteConfirmModalData) {\n    if (data) {\n      this.title = data.title;\n      this.content = data.content;\n      this.context = data.context;\n      this.falseText = data.falseText;\n      this.trueText = data.trueText;\n    }\n  }\n}\n","<div class=\"modal\">\n  <div class=\"title-2\"\n       translate>\n    {{title}}\n  </div>\n  <ng-container *ngTemplateOutlet=\"content; context: context\">\n  </ng-container>\n  <div class=\"footer\">\n    <div class=\"btn secondary-white\"\n         (click)=\"this.dialogRef.close(false)\"\n         translate>{{falseText}}</div>\n    <div class=\"btn primary\"\n         (click)=\"this.dialogRef.close(true)\"\n         translate>{{trueText}}</div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PaginationModel } from '../../api';\n\nexport type PaginatorAction = 'refresh' | 'next' | 'reset' | 'previous';\n\n@Component({\n  selector: 'ngx-indasuite-paginator',\n  templateUrl: './paginator.component.html',\n  styleUrls: ['./paginator.component.scss']\n})\nexport class IndasuitePaginatorComponent {\n\n  @Input() pageSizeOptions: Array<number> = [5, 10, 20, 50];\n  @Input() pageSize = 10;\n  @Output() pageSizeChange = new EventEmitter<number>();\n  @Output() nextPageClick = new EventEmitter<PaginationModel>();\n  @Output() previousPageClick = new EventEmitter<PaginationModel>();\n\n  public allPages: PaginationModel[] = [];\n  public currentPage: PaginationModel = null;\n  public nextPage: PaginationModel = null;\n\n  public setPage(page: PaginationModel, paginationAction: PaginatorAction): void {\n\n    if (paginationAction === 'refresh') {\n      this.allPages[this.allPages.length - 1] = page;\n      this.nextPage = page;\n      return;\n    }\n\n    if (paginationAction === 'previous')\n      this.allPages.length -= 2;\n\n    if (paginationAction === 'reset')\n      this.reset();\n\n    this.currentPage = this.allPages.length > 0 ? this.allPages[this.allPages.length - 1] : null;\n    this.nextPage = page;\n    this.allPages.push(page);\n  }\n\n  public goToPreviousPage(): void {\n    const previous = this.allPages.length >= 3 ? this.allPages[this.allPages.length - 3] : null;\n    this.previousPageClick.emit(previous);\n  }\n\n  public reset(): void {\n    this.allPages = [];\n    this.currentPage = null;\n    this.nextPage = null;\n  }\n\n  public onPageSizeChange(): void {\n    this.reset();\n    this.pageSizeChange.emit(this.pageSize);\n  }\n\n}\n","<div class=\"d-flex align-baseline justify-end\">\n  <span class=\"mr-2\"\n        translate>IndasuitePaginatorComponent.ITEMS_PER_PAGE</span>\n  <mat-select [(ngModel)]=\"pageSize\"\n              (ngModelChange)=\"onPageSizeChange()\">\n    <mat-option *ngFor=\"let size of pageSizeOptions\"\n                [value]=\"size\">\n      {{size}}\n    </mat-option>\n  </mat-select>\n\n  <button [disabled]=\"nextPage === allPages[0]\"\n          (click)=\"goToPreviousPage()\"\n          mat-icon-button>\n    <mat-icon>navigate_before</mat-icon>\n  </button>\n  <button [disabled]=\"nextPage?.isComplete\"\n          (click)=\"nextPageClick.emit(nextPage)\"\n          mat-icon-button>\n    <mat-icon>navigate_next</mat-icon>\n  </button>\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { AmpPlugin, easepick, LockPlugin, RangePlugin, TimePlugin } from '@easepick/bundle';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DateTime, Duration } from 'luxon';\n\ntype RangeDetail = { start: Date; end: Date };\ntype SelectEvent = { detail: RangeDetail };\n\nexport type DateTimePeriod = {\n  start: DateTime,\n  end: DateTime\n}\n\n@Component({\n  selector: 'ngx-indasuite-date-range-picker',\n  templateUrl: './date-range-picker.component.html',\n  styleUrls: ['./date-range-picker.component.scss'],\n})\nexport class IndasuiteDateRangePickerComponent {\n  @Input() dateTimePeriod: DateTimePeriod;\n  @Output() dateTimePeriodChange = new EventEmitter<DateTimePeriod>();\n\n  @ViewChild('anchor') anchor: ElementRef;\n  public datePicker: easepick.Core;\n\n  public isOpen = false;\n\n  public startTime: string;\n  public endTime: string;\n\n  private localPeriod: DateTimePeriod;\n\n  constructor(private translate: TranslateService) { }\n\n  public setDate(dates: RangeDetail): void {\n    this.localPeriod = {\n      start: DateTime.fromJSDate(dates.start).plus(Duration.fromISOTime(this.startTime)),\n      end: DateTime.fromJSDate(dates.end).plus(Duration.fromISOTime(this.endTime))\n    };\n  }\n\n  public setTime(time: 'start' | 'end') {\n    if (time === 'start')\n      this.localPeriod.start = this.localPeriod.start.startOf('day').plus(Duration.fromISOTime(this.startTime));\n    else\n      this.localPeriod.end = this.localPeriod.end.startOf('day').plus(Duration.fromISOTime(this.endTime));\n  }\n\n  public openPicker(): void {\n\n    this.localPeriod = { ...this.dateTimePeriod };\n\n    if (this.isOpen)\n      return;\n\n    this.isOpen = true;\n    setTimeout(() => {\n      this.initDatePicker();\n    }, 5);\n  }\n\n  public confirm(): void {\n    this.dateTimePeriodChange.emit(this.localPeriod);\n    this.isOpen = false;\n  }\n\n  private initDatePicker(): void {\n    this.datePicker = new easepick.create({\n      element: \"#anchor_start\",\n      css: ['/assets/styles/datepicker.css'],\n      inline: true,\n      grid: 2,\n      calendars: 2,\n      lang: this.translate.currentLang,\n      plugins: [\n        RangePlugin,\n        LockPlugin,\n        AmpPlugin,\n      ],\n      RangePlugin: {\n        tooltip: false,\n        elementEnd: \"#anchor_end\"\n      },\n      LockPlugin: {\n        maxDate: DateTime.now().toISODate()\n      },\n      AmpPlugin: {\n        dropdown: {\n          months: true,\n          years: true\n        },\n        darkMode: false,\n      }\n    });\n\n    this.datePicker.setStartDate(this.dateTimePeriod.start.toISO());\n    this.startTime = this.dateTimePeriod.start.toLocaleString(DateTime.TIME_WITH_SECONDS);\n\n    this.datePicker.setEndDate(this.dateTimePeriod.end.toISO());\n    this.endTime = this.dateTimePeriod.end.toLocaleString(DateTime.TIME_WITH_SECONDS);\n\n    this.datePicker.on('select', (evt: SelectEvent) => this.setDate(evt.detail));\n  }\n}\n","<div class=\"picker-container\"\n     cdkOverlayOrigin\n     #trigger=\"cdkOverlayOrigin\">\n  <span (click)=\"openPicker()\">\n    {{ dateTimePeriod.start | ngxIndasuiteDatetime:'DATETIME_MED_WITH_SECONDS' }} -\n    {{ dateTimePeriod.end | ngxIndasuiteDatetime:'DATETIME_MED_WITH_SECONDS' }}\n  </span>\n  <button (click)=\"openPicker()\"\n          mat-icon-button>\n    <mat-icon>calendar_month</mat-icon>\n  </button>\n</div>\n\n<ng-template cdkConnectedOverlay\n             [cdkConnectedOverlayOrigin]=\"trigger\"\n             [cdkConnectedOverlayOpen]=\"isOpen\"\n             [cdkConnectedOverlayHasBackdrop]=\"true\">\n  <div class=\"overlay new modal\">\n    <span id=\"anchor_start\"></span>\n    <span id=\"anchor_end\"></span>\n    <div class=\"d-flex jc-even mt-3\">\n      <mat-form-field appearance=\"outline\"\n                      class=\"time-input\">\n        <mat-label translate>IndasuiteDateRangePickerComponent.begin</mat-label>\n        <input matInput\n               type=\"time\"\n               step=\"1\"\n               [(ngModel)]=\"startTime\"\n               (ngModelChange)=\"setTime('start')\" />\n      </mat-form-field>\n      <mat-form-field appearance=\"outline\"\n                      class=\"time-input\">\n        <mat-label translate>IndasuiteDateRangePickerComponent.end</mat-label>\n        <input matInput\n               type=\"time\"\n               step=\"1\"\n               [(ngModel)]=\"endTime\"\n               (ngModelChange)=\"setTime('end')\" />\n      </mat-form-field>\n    </div>\n\n    <div class=\"footer d-flex jc-end mt-3 flex-g-10\">\n      <div class=\"btn w-fit\"\n           translate\n           (click)=\"isOpen = false\">\n        cancel\n      </div>\n      <div class=\"btn primary w-fit\"\n           translate\n           (click)=\"confirm()\">\n        confirm\n      </div>\n    </div>\n  </div>\n</ng-template>\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output\r\n} from '@angular/core';\r\n@Component({\r\n  selector: 'ngx-indasuite-switch',\r\n  templateUrl: './switch.component.html',\r\n  styleUrls: ['./switch.component.scss'],\r\n})\r\nexport class IndasuiteSwitchComponent {\r\n  @Input() value: boolean;\r\n  @Input() textFalse: string;\r\n  @Input() iconFalse?: string;\r\n  @Input() textTrue: string;\r\n  @Input() iconTrue?: string;\r\n  @Input() keepOrange: boolean = false;\r\n  @Input() disabled: boolean = false;\r\n  @Input() isHorizontal: boolean = true;\r\n\r\n  @Output() switch = new EventEmitter<boolean>();\r\n}\r\n","<div [ngClass]=\"{'horizontal': isHorizontal, 'vertical': !isHorizontal}\">\r\n  <div class=\"switch-container\"\r\n       translate>\r\n    <div class=\"d-flex flex-column a-center\">\r\n      <mat-icon *ngIf=\"iconFalse\">{{iconFalse}}</mat-icon>\r\n      <p translate\r\n         [ngClass]=\"{'disabled': disabled}\">{{textFalse}}</p>\r\n    </div>\r\n    <label class=\"switch input-orange\">\r\n      <input type=\"checkbox\"\r\n             (click)=\"this.switch.emit(!value)\"\r\n             [disabled]=\"disabled\"\r\n             [checked]=\"value\">\r\n      <span class=\"slider round\"\r\n            [ngClass]=\"{'bg-orange': keepOrange, 'bg-grey': disabled}\"></span>\r\n    </label>\r\n    <div class=\"d-flex flex-column ai-center\">\r\n      <mat-icon *ngIf=\"iconTrue\">{{iconTrue}}</mat-icon>\r\n      <p translate\r\n         [ngClass]=\"{'disabled': disabled}\">{{textTrue}}</p>\r\n    </div>\r\n  </div>\r\n</div>","import {\n  NgxMatDateFormats,\n  NgxMatDatetimePickerModule,\n  NgxMatTimepickerModule,\n  NGX_MAT_DATE_FORMATS\n} from '@angular-material-components/datetime-picker';\nimport { NgxMatMomentModule } from '@angular-material-components/moment-adapter';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Ng2FittextModule } from 'ng2-fittext';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { NgxJsonViewerModule } from 'ngx-json-viewer';\nimport { IndasuiteApplicationCardFrameComponent } from './application-card-frame/application-card-frame.component';\nimport { IndasuiteApplicationLoadingComponent } from './application-loading/application-loading.component';\nimport { BlockPasteDirective } from './block-paste/block-paste.directive';\nimport { IndasuiteAggregationIntervalInput } from './chart/aggregation-interval-input/aggregation-interval-input.component';\nimport { IndasuiteAggregationSelectComponent } from './chart/aggregation-select/aggregation-select.component';\nimport { IndasuiteChartTypeSelectComponent } from './chart/chart-type-select/indasuite-chart-type-select.component';\nimport { IndasuiteChartComponent } from './chart/line-chart/line-chart.component';\nimport { IndasuiteChartArrayComponent } from './chart/chart-array/chart-array.component';\nimport { IndasuitePeriodSelectComponent } from './chart/period-select/period-select.component';\nimport { IndasuiteGaugeComponent } from './data-show/indasuite-gauge/indasuite-gauge.component';\nimport { IndasuiteLiveDataShowComponent } from './data-show/live-data-show/live-data-show.component';\nimport { IndasuiteTagShowComponent } from './data-show/tag-show/tag-show.component';\nimport { IndasuiteDatabaseSelectListComponent } from './database-select-list/database-select-list.component';\nimport { IndasuiteHasScopeDirective } from './directive/has-scope.directive';\nimport { IndasuiteDownloadToImgComponent } from './download-to-img/download-to-img.component';\nimport { DrawerItemComponent } from './drawer-item/drawer-item.component';\nimport { IndasuiteDrawerComponent } from './drawer/drawer.component';\nimport { IndasuiteEmptyStateComponent } from './empty-state/empty-state.component';\nimport { IndasuiteHashedPaginationComponent } from './hashed-pagination/hashed-pagination.component';\nimport { IndasuiteHeaderComponent2 } from './header/header.component';\nimport { AddDataStructureDialogComponent } from './indametav2/components/dialogs/add-data-structure-dialog/add-data-structure-dialog.component';\nimport { AddItemDialogComponent } from './indametav2/components/dialogs/add-item-dialog/add-item-dialog.component';\nimport { DeleteItemDialogComponent } from './indametav2/components/dialogs/delete-item-dialog/delete-item-dialog.component';\nimport { IndametaTreeComponent } from './indametav2/components/indameta-tree/indameta-tree.component';\nimport { TreeDisplayComponent } from './indametav2/components/indameta-tree/tree-display/tree-display.component';\nimport { MetricInArrayPipe } from './indametav2/pipes/metric-in-array.pipe';\nimport { IndasuiteVersionsComponent } from './indasuite-versions/indasuite-versions.component';\nimport { IndasuiteIntercomHelperComponent } from './intercom-helper/intercom-helper.component';\nimport { IndasuiteLoadingSnackbarContentComponent } from './loading-snackbar/indasuite-loading-snackbar.component';\nimport { IndasuiteLoadingSpinnerComponent } from './loading-spinner/loading-spinner.component';\nimport { IndasuiteLogoutButtonComponent } from './logout-button/logout-button.component';\nimport { IndasuiteDialogTitleComponent } from './modals/indasuite-dialog-title/indasuite-dialog-title.component';\nimport { ModalFrameConfirmationComponent } from './modals/modal-frame-confirmation/modal-frame-confirmation.component';\nimport { ModalFrameComponent } from './modals/modal-frame/modal-frame.component';\nimport { SimpleModalComponent } from './modals/simple-modal/simple-modal.component';\nimport { IndasuiteNotFoundComponent } from './not-found/not-found.component';\nimport { IndasuiteRefreshIntervalComponent } from './refresh-interval/refresh-interval.component';\nimport { IndasuiteSelectLangComponent } from './app-header/select-lang/select-lang.component';\nimport { EnvironmentService } from './services/environment.service';\nimport { FormatterService } from './services/formatter.service';\nimport { IndasuiteSidenavContainerComponent } from './sidenav-container/indasuite-sidenav-container.component';\nimport { IndasuiteDataTableComponent } from './table/indasuite-data-table/indasuite-data-table.component';\nimport { IndasuiteUserMenuComponent } from './app-header/user-menu/user-menu.component';\nimport { IndasuiteUserComponent } from './app-header/user/user.component';\nimport { IndasuiteToastrComponent } from './toastr/toastr.component';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DeclareDirective } from './directive/declare.directive';\nimport { IndasuiteChartGraphComponent } from './chart/chart-graph/chart-graph.component';\nimport { GaugeComponent } from './data-show/gauge/gauge.component';\nimport { TagComponent } from './data-show/tag/tag.component';\nimport { DataTableComponent } from './table/data-table/data-table.component';\nimport { IndaboardFullscreenComponent } from './modals/indaboard-fullscreen/indaboard-fullscreen.component';\nimport { IndasuiteSearchMetricInputComponent } from './search/search-metric-input/search-metric-input.component';\nimport { IndasuiteSearchMetricMenuComponent } from './search/search-metric-menu/search-metric-menu.component';\nimport { IndasuiteSearchMetricModalComponent } from './search/search-metric-modal/search-metric-modal.component';\nimport { IndasuiteSearchMetricListComponent } from './search/search-metric-list/search-metric-list.component';\nimport { IndametaSearchPropertiesComponent } from './search/search-properties/search-properties.component';\nimport { IndametaSearchComponent } from './search/indameta-search/indameta-search.component';\nimport { IndasuiteMenuCardComponent } from './app-header/menu-card/menu-card.component';\nimport { IndasuiteMenuButtonComponent } from './app-header/menu-button/menu-button.component';\nimport { IndasuiteHeaderComponent } from './app-header/header/header.component';\nimport { IndasuiteSubtitleComponent } from './subtitle/subtitle.component';\nimport { TechnicalNameDisplayPipe } from './pipes/technical-display-name.pipe';\nimport { FormulaOperatorsComponent } from './formula-operators/formula-operators.component';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { DateTimePipe } from './pipes';\nimport { IndasuiteConfirmModalComponent } from './modals/confirm-modal/confirm-modal.component';\nimport { IndasuitePaginatorComponent } from './paginator/paginator.component';\nimport { IndasuiteDateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { IndasuiteSwitchComponent } from './switch/switch.component';\nimport { DurationPipe } from './pipes/duration.pipe';\n\ninterface UiConfig {\n  customerLogoUrl: string;\n  applicationLogo?: string;\n}\n\nexport const INDASUITE_DATE_FORMATS: NgxMatDateFormats = {\n  parse: {\n    dateInput: FormatterService.DateFormat,\n  },\n  display: {\n    dateInput: FormatterService.DateFormat,\n    monthYearLabel: 'MMM YYYY',\n    dateA11yLabel: 'LL',\n    monthYearA11yLabel: 'MMMM YYYY',\n  },\n};\n\n@NgModule({\n  declarations: [\n    IndasuiteLogoutButtonComponent,\n    IndasuiteChartComponent,\n    IndasuiteChartArrayComponent,\n    IndasuiteChartGraphComponent,\n    IndasuiteAggregationSelectComponent,\n    IndasuitePeriodSelectComponent,\n    IndasuiteAggregationIntervalInput,\n    IndasuiteChartTypeSelectComponent,\n    IndasuiteTagShowComponent,\n    TagComponent,\n    IndasuiteRefreshIntervalComponent,\n    IndasuiteLiveDataShowComponent,\n    IndasuiteGaugeComponent,\n    GaugeComponent,\n    ModalFrameComponent,\n    ModalFrameConfirmationComponent,\n    SimpleModalComponent,\n    IndasuiteDrawerComponent,\n    IndasuiteSidenavContainerComponent,\n    IndasuiteHashedPaginationComponent,\n    IndasuiteDatabaseSelectListComponent,\n    IndasuiteLoadingSpinnerComponent,\n    IndasuiteEmptyStateComponent,\n    DrawerItemComponent,\n    IndasuiteDialogTitleComponent,\n    BlockPasteDirective,\n    IndasuiteLoadingSnackbarContentComponent,\n    IndasuiteApplicationLoadingComponent,\n    IndasuiteIntercomHelperComponent,\n    IndasuiteVersionsComponent,\n    IndasuiteApplicationCardFrameComponent,\n    IndasuiteDataTableComponent,\n    DataTableComponent,\n    IndasuiteDownloadToImgComponent,\n    IndasuiteNotFoundComponent,\n    IndasuiteHasScopeDirective,\n    IndametaTreeComponent,\n    AddDataStructureDialogComponent,\n    AddItemDialogComponent,\n    DeleteItemDialogComponent,\n    TreeDisplayComponent,\n    MetricInArrayPipe,\n    IndametaSearchPropertiesComponent,\n    IndametaSearchComponent,\n    TreeDisplayComponent,\n    IndaboardFullscreenComponent,\n    DeclareDirective,\n    IndasuiteSearchMetricMenuComponent,\n    IndasuiteSearchMetricModalComponent,\n    IndasuiteSearchMetricInputComponent,\n    IndasuiteSearchMetricListComponent,\n    IndasuiteHeaderComponent,\n    IndasuiteHeaderComponent2,\n    IndasuiteMenuButtonComponent,\n    IndasuiteMenuCardComponent,\n    IndasuiteSelectLangComponent,\n    IndasuiteUserComponent,\n    IndasuiteUserMenuComponent,\n    IndasuiteSubtitleComponent,\n    TechnicalNameDisplayPipe,\n    FormulaOperatorsComponent,\n    DateTimePipe,\n    IndasuiteConfirmModalComponent,\n    IndasuitePaginatorComponent,\n    IndasuiteDateRangePickerComponent,\n    IndasuiteSwitchComponent,\n    DurationPipe\n  ],\n  imports: [\n    CommonModule,\n    TranslateModule.forChild(),\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule,\n    Ng2FittextModule,\n    MatMenuModule,\n    MatButtonModule,\n    MatTooltipModule,\n    MatListModule,\n    MatDatepickerModule,\n    MatInputModule,\n    MatCardModule,\n    MatTableModule,\n    MatPaginatorModule,\n    MatDividerModule,\n    MatProgressBarModule,\n    MatIconModule,\n    MatSnackBarModule,\n    MatProgressSpinnerModule,\n    MatSlideToggleModule,\n    MatSnackBarModule,\n    NgxMatTimepickerModule,\n    NgxMatDatetimePickerModule,\n    NgxMatMomentModule,\n    MatSelectModule,\n    MatTreeModule,\n    NgxEchartsModule.forRoot({\n      echarts: () => import('echarts'),\n    }),\n    NgxJsonViewerModule,\n    MatDialogModule,\n    MatExpansionModule,\n    MatSidenavModule,\n    ScrollingModule,\n    MatCheckboxModule,\n    IndasuiteToastrComponent,\n    MatTabsModule,\n    MatChipsModule,\n    OverlayModule\n  ],\n  exports: [\n    IndaboardFullscreenComponent,\n    IndasuiteLogoutButtonComponent,\n    IndasuiteChartComponent,\n    IndasuiteChartArrayComponent,\n    IndasuiteChartGraphComponent,\n    IndasuiteAggregationSelectComponent,\n    IndasuitePeriodSelectComponent,\n    IndasuiteAggregationIntervalInput,\n    IndasuiteChartTypeSelectComponent,\n    IndasuiteTagShowComponent,\n    TagComponent,\n    IndasuiteRefreshIntervalComponent,\n    IndasuiteLiveDataShowComponent,\n    IndasuiteGaugeComponent,\n    GaugeComponent,\n    IndasuiteDrawerComponent,\n    IndasuiteSidenavContainerComponent,\n    IndasuiteHashedPaginationComponent,\n    IndasuiteDatabaseSelectListComponent,\n    IndasuiteLoadingSpinnerComponent,\n    IndasuiteEmptyStateComponent,\n    IndasuiteLoadingSnackbarContentComponent,\n    IndasuiteDialogTitleComponent,\n    ModalFrameComponent,\n    ModalFrameConfirmationComponent,\n    SimpleModalComponent,\n    IndasuiteApplicationLoadingComponent,\n    BlockPasteDirective,\n    IndasuiteIntercomHelperComponent,\n    IndasuiteVersionsComponent,\n    IndasuiteApplicationCardFrameComponent,\n    IndasuiteDataTableComponent,\n    DataTableComponent,\n    IndasuiteNotFoundComponent,\n    IndasuiteHasScopeDirective,\n    IndametaSearchComponent,\n    IndametaTreeComponent,\n    IndametaSearchPropertiesComponent,\n    IndasuiteToastrComponent,\n    TreeDisplayComponent,\n    DeclareDirective,\n    IndasuiteSearchMetricMenuComponent,\n    IndasuiteSearchMetricModalComponent,\n    IndasuiteSearchMetricInputComponent,\n    IndasuiteSearchMetricListComponent,\n    IndasuiteHeaderComponent,\n    IndasuiteHeaderComponent2,\n    IndasuiteMenuButtonComponent,\n    IndasuiteMenuCardComponent,\n    IndasuiteSelectLangComponent,\n    IndasuiteUserComponent,\n    IndasuiteUserMenuComponent,\n    IndasuiteSubtitleComponent,\n    TechnicalNameDisplayPipe,\n    FormulaOperatorsComponent,\n    DateTimePipe,\n    IndasuiteConfirmModalComponent,\n    IndasuitePaginatorComponent,\n    IndasuiteDateRangePickerComponent,\n    IndasuiteSwitchComponent,\n    DurationPipe\n  ],\n  providers: [\n    { provide: NGX_MAT_DATE_FORMATS, useValue: INDASUITE_DATE_FORMATS }\n  ],\n})\nexport class NgxIndasuiteUiModule {\n\n  constructor(public matIconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {\n    matIconRegistry.addSvgIcon(\n      \"formula_template\",\n      sanitizer.bypassSecurityTrustResourceUrl(\"/lib/indasuite-ui/img/icon/formula_template.svg\")\n    );\n  }\n\n  static forRoot(config: UiConfig): ModuleWithProviders<NgxIndasuiteUiModule> {\n    EnvironmentService.CustomerLogoUrl = config.customerLogoUrl;\n    if (config.applicationLogo)\n      EnvironmentService.ApplicationLogo = config.applicationLogo;\n    return {\n      ngModule: NgxIndasuiteUiModule,\n    };\n  }\n}\n","import {\n  HttpRequest,\n  HttpHandler,\n  HttpEvent,\n  HttpErrorResponse,\n  HttpInterceptor\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { IndasuiteModalService } from '../../services/indasuite-modal.service';\nimport { APIUtils, ToastrAPI, ApiUrlService, IndasuiteError } from '../../../api';\n\n@Injectable()\nexport class ErrorCatchingInterceptor implements HttpInterceptor {\n\n  constructor(private readonly injector: Injector) { }\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    return next.handle(req).pipe(\n      catchError((response: HttpErrorResponse) => {\n        if (req.context.get(APIUtils.isByPassed))\n          return throwError(() => response);\n\n        const modalService = this.injector.get(IndasuiteModalService);\n\n        if (response.status === 403)\n          modalService.openToastr({\n            level: 'Forbidden',\n            timer: 15\n          });\n        else if (response.status === 429) {\n          modalService.openToastr({\n            level: 'TooManyRequests',\n            timer: 15\n          });\n        }\n        else if (response.status === 409) {\n          modalService.openToastr({\n            level: 'ConflictRequests',\n            timer: 15\n          });\n        }\n        else {\n          let errors: IndasuiteError[] = null;\n          let errorCode: number = null;\n\n          if (response.error) {\n            if (response.error.errors) {\n              errors = response.error.errors;\n            } else if (response.error.error) {\n              errors = [response.error.error];\n            }\n            errorCode = response.error.statusCode ?? response.error.resultCode ?? response.error.errorCode;\n          }\n\n          modalService.openToastr(\n            {\n              level: 'Error',\n              timer: 15,\n              error: errors,\n              errorCode: errorCode,\n              api: this.getAPIFromURL(response.url)\n            }\n          );\n        }\n\n        return throwError(() => response);\n      })\n    );\n  }\n\n  private getAPIFromURL(url: string): ToastrAPI {\n    switch (true) {\n      case url.startsWith(ApiUrlService.IndabaBaseUrl):\n        return 'Indaba';\n      case url.startsWith(ApiUrlService.IndametaV2BaseUrl):\n        return 'IndametaV2';\n      case url.startsWith(ApiUrlService.IndametaBaseUrl):\n        return 'Indameta';\n      case url.startsWith(ApiUrlService.IndaPortalBaseUrl):\n        return 'Admin';\n      case url.startsWith(ApiUrlService.IndaFormulaBaseUrl):\n        return 'Formulas';\n      case url.startsWith(ApiUrlService.IndaAlertingBaseUrl):\n        return 'Alerting';\n      case url.startsWith(ApiUrlService.IndaUserScriptsUrl):\n        return 'UserScript';\n      default:\n        return null;\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n  PreferencesService,\n  UserPreferences,\n} from '../../api';\nimport { Observable } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class PreferencesResolve implements Resolve<UserPreferences> {\n  constructor(\n    private preferencesService: PreferencesService,\n    private translationService: TranslateService\n  ) {}\n\n  resolve(): Observable<UserPreferences> {\n    return this.preferencesService.preferences$().pipe(\n      tap((preferences) => {\n        this.translationService.use(preferences.language);\n        window.document.documentElement.setAttribute(\n          'lang',\n          preferences.language\n        );\n      }),\n      first()\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Profile, ProfileService } from '../../api';\nimport { Observable } from 'rxjs';\nimport { filter, first } from 'rxjs/operators';\n\n@Injectable()\nexport class ProfileResolve implements Resolve<Profile> {\n  constructor(private profileService: ProfileService) { }\n\n  resolve(): Observable<Profile> {\n    return this.profileService.profileChanged\n      .pipe(filter(pro => pro !== null), first());\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { Observable, Subscription } from 'rxjs';\nimport { IndasuiteLoadingSnackbarContentComponent } from '../loading-snackbar/indasuite-loading-snackbar.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IndasuiteLoadingSnackbarSerivce {\n  private _pocessing = false;\n\n  get processing() {\n    return this._pocessing;\n  }\n\n  private _snackRef: MatSnackBarRef<any>;\n  private _subscription: Subscription;\n\n  constructor(private snackBar: MatSnackBar) {}\n\n  public process(message: string, task: Observable<any>) {\n    if (this.processing)\n      throw new Error('Loading snackbar service is already processing a task');\n\n    this._pocessing = true;\n    this._snackRef = this.snackBar.openFromComponent(\n      IndasuiteLoadingSnackbarContentComponent,\n      { data: message }\n    );\n    this._subscription = task.subscribe({\n      next: this.processed.bind(this),\n      error: this.processed.bind(this),\n    });\n  }\n\n  private processed() {\n    this._snackRef?.dismiss();\n    this._snackRef = null;\n    this._subscription = null;\n    this._pocessing = false;\n  }\n\n  cancel() {\n    this._subscription?.unsubscribe();\n    this.processed();\n  }\n}\n","/*\n * Public API Surface of ngx-indasuite-artifacts\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["errorPrefix","map","switchMap","i2","i1.IndabaService","i1","i1.IndasuiteTranslationService","i3","i4","i6.IndasuiteDialogTitleComponent","i7","i5","i6","i9","i10.IndasuiteDialogTitleComponent","i8","i10","i11","i12","i14.IndasuiteLoadingSpinnerComponent","i15.IndasuiteEmptyStateComponent","i16.MetricInArrayPipe","i1.Indametav2Service","i4.TreeDisplayComponent","i6.IndasuiteAggregationIntervalInput","i1.ReportService","i4.IndasuiteLoadingSpinnerComponent","i5.IndasuiteChartArrayComponent","i6.IndasuiteChartGraphComponent","i4.GaugeComponent","i5.IndasuiteEmptyStateComponent","i5.IndasuiteRefreshIntervalComponent","i4.TagComponent","i5.IndasuiteDownloadToImgComponent","i1.DatabaseService","i1.ProfileService","tap","filter","i5.IndasuiteChartGraphComponent","i6.TagComponent","i7.GaugeComponent","i8.DataTableComponent","i2.SidenavService","i3.IndasuiteModalService","i6.ModalFrameConfirmationComponent","i2.IndasuiteModalService","i5.SimpleModalComponent","i1.TitleTranslationService","i2.IndasuiteEmptyStateComponent","i2.PreferencesService","i3.IndasuiteDrawerComponent","i6.DataTableComponent","i7.IndasuiteDownloadToImgComponent","i2.ProfileService","i7.IndasuiteLogoutButtonComponent","i1.IndasuiteSelectLangComponent","i2.IndasuiteUserMenuComponent","debounceTime","distinctUntilChanged","i2.Indametav2Service","i9.IndasuiteHashedPaginationComponent","i10.IndasuiteDatabaseSelectListComponent","i11.IndasuiteLoadingSpinnerComponent","i12.IndasuiteEmptyStateComponent","i13","i9.IndasuiteEmptyStateComponent","i10.IndasuiteHashedPaginationComponent","i13.IndametaSearchPropertiesComponent","i14.MetricInArrayPipe","i4.IndametaTreeComponent","i5.IndametaSearchComponent","i6.IndasuiteSearchMetricInputComponent","i9.IndasuiteSearchMetricMenuComponent","i10.IndasuiteSearchMetricListComponent","i11.IndasuiteSubtitleComponent","i3.IndasuiteMenuCardComponent","i3.ProfileService","i4.IndasuiteModalService","i5.TitleTranslationService","i8.IndasuiteMenuButtonComponent","i9.IndasuiteUserComponent","i8.DateTimePipe","i1.PreferencesService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEa,WAAW,CAAA;IAatB,OAAO,mCAAmC,CACxC,IAA0B,EAAA;AAE1B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC;AAC/C,QAAA,OAAO,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KACxE;IAED,OAAO,iBAAiB,CAAC,IAAmB,EAAA;AAC1C,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,KAAK,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC;KACrC;AAEO,IAAA,OAAO,cAAc,GAAA;QAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACnC,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEM,OAAO,WAAW,CAAC,IAAY,EAAA;AACpC,QAAA,OAAO,gBAAgB,CACrB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACzC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAC1B;;AAvCM,WAAA,CAAA,MAAM,GAAG,IAAI,KAAK,CACvB,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC1C,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,EACzC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,EACvC,WAAW,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAC/C,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,EACrC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,EACvC,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAC9C,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAClC,WAAW,CAAC,WAAW,CAAC,yBAAyB,CAAC,CACnD;;MCXU,UAAU,CAAA;AACrB,IAAA,OAAO,WAAW,CAAC,OAAa,EAAE,OAAa,EAAE,SAAiB,EAAA;AAChE,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE5B,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;QAE/D,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,OAAO,QAAQ,GAAG,CAAC,EAAE;YACnB,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,QAAQ,IAAI,IAAI,GAAG,EAAE,EAAE;AACzB,gBAAA,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACrD,gBAAA,QAAQ,IAAI,CAAA,EAAG,eAAe,CAAA,CAAA,CAAG,CAAC;AAClC,gBAAA,QAAQ,IAAI,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AACzC,aAAA;iBAAM,IAAI,QAAQ,IAAI,IAAI,EAAE;gBAC3B,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAC9C,gBAAA,QAAQ,IAAI,CAAA,EAAG,eAAe,CAAA,CAAA,CAAG,CAAC;AAClC,gBAAA,QAAQ,IAAI,eAAe,GAAG,IAAI,CAAC;AACpC,aAAA;iBAAM,IAAI,QAAQ,IAAI,EAAE,EAAE;gBACzB,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;AAC5C,gBAAA,QAAQ,IAAI,CAAA,EAAG,eAAe,CAAA,CAAA,CAAG,CAAC;AAClC,gBAAA,QAAQ,IAAI,eAAe,GAAG,EAAE,CAAC;AAClC,aAAA;iBAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACxB,gBAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtC,gBAAA,QAAQ,IAAI,CAAA,EAAG,eAAe,CAAA,CAAA,CAAG,CAAC;gBAClC,QAAQ,IAAI,eAAe,CAAC;AAC7B,aAAA;AAAM,iBAAA;gBACL,QAAQ,GAAG,CAAC,CAAC;gBACb,QAAQ,GAAG,IAAI,CAAC;AACjB,aAAA;AACF,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AACF;;ACrCY,MAAA,mBAAmB,GAAG,UAAU,QAAQ,EAAE,MAAc,EAAA;IACnE,MAAM,GAAG,GAAG,EAAE,CAAC;AAEf,IAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClB,SAAA,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,SAAA,OAAO,CAAC,CAAC,GAAG,KAAI;AACf,QAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA,EAAG,MAAM,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;AACzC,KAAC,CAAC,CAAC;AAEL,IAAA,OAAO,GAAG,CAAC;AACb;;ACVa,MAAA,MAAM,GAAG,CAAmC,GAAM,KAAI;AACjE,IAAA,MAAM,GAAG,GAAG,EAAS,CAAC;AACtB,IAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC3C,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,GAAoC,CAAC;AAC9C;;ACmBa,MAAA,uBAAuB,GAAG;AACrC,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,yBAAyB;AAChC,IAAA,IAAK,EAAE,yBAAyB;AAChC,IAAA,IAAK,EAAE,iBAAiB;AACxB,IAAA,IAAK,EAAE,kBAAkB;AACzB,IAAA,IAAK,EAAE,UAAU;AAEjB,IAAA,IAAK,EAAE,4BAA4B;AACnC,IAAA,IAAK,EAAE,4BAA4B;AAEnC,IAAA,IAAK,EAAE,cAAc;AAErB,IAAA,IAAK,EAAE,0BAA0B;AACjC,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,aAAa;AAEpB,IAAA,IAAK,EAAE,qBAAqB;AAE5B,IAAA,IAAK,EAAE,wBAAwB;AAC/B,IAAA,IAAK,EAAE,4BAA4B;AAEnC,IAAA,IAAK,EAAE,kBAAkB;AACzB,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,4BAA4B;AACnC,IAAA,IAAK,EAAE,6BAA6B;AAEpC,IAAA,IAAK,EAAE,gBAAgB;AACvB,IAAA,IAAK,EAAE,iBAAiB;AACxB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,yBAAyB;AAEhC,IAAA,IAAK,EAAE,0BAA0B;AACjC,IAAA,IAAK,EAAE,0BAA0B;AACjC,IAAA,IAAK,EAAE,6BAA6B;AACpC,IAAA,IAAK,EAAE,4BAA4B;AACnC,IAAA,IAAK,EAAE,wBAAwB;AAE/B,IAAA,IAAK,EAAE,eAAe;AAEtB,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,iBAAiB;AACxB,IAAA,IAAK,EAAE,uBAAuB;AAC9B,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,gBAAgB;AAEvB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,uBAAuB;AAE9B,IAAA,IAAK,EAAE,SAAS;AAChB,IAAA,IAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAK,EAAE,SAAS;IAChB,IAAK,EAAE,aAAa;EACX;MAEE,uBAAuB,GAAG,MAAM,CAAC,uBAAuB;;AC1DxD,MAAA,0BAA0B,GAAG;AACxC,IAAA,IAAK,EAAE,IAAI;AACX,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,UAAU;AACjB,IAAA,IAAK,EAAE,iBAAiB;AACxB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,gBAAgB;AACvB,IAAA,IAAK,EAAE,aAAa;AACpB,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,wBAAwB;AAC/B,IAAA,IAAK,EAAE,4BAA4B;AACnC,IAAA,IAAK,EAAE,+BAA+B;AACtC,IAAA,IAAK,EAAE,6BAA6B;AACpC,IAAA,IAAK,EAAE,sBAAsB;AAC7B,IAAA,IAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAK,EAAE,gCAAgC;AACvC,IAAA,IAAK,EAAE,iBAAiB;AACxB,IAAA,IAAK,EAAE,2BAA2B;AAClC,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,aAAa;AACpB,IAAA,IAAK,EAAE,SAAS;AAChB,IAAA,IAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAK,EAAE,SAAS;EACP;MAEE,0BAA0B,GAAG,MAAM,CAAC,0BAA0B;;MClD9D,WAAW,CAAA;AAOtB,IAAA,WAAA,CACE,KAAa,EACb,KAAc,EACd,KAAqB,EACrB,UAAqC,EAAA;AAErC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AACF;;ICnBW,cAYX;AAZD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EAZW,aAAa,KAAb,aAAa,GAYxB,EAAA,CAAA,CAAA,CAAA;IAEW,eAIX;AAJD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA,CAAA;AA4IY,MAAA,aAAa,GAAe;AACvC,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA;AACD,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,SAAS,EAAE;AACT,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,CAAC;AACT,KAAA;EACD;AAEW,MAAA,aAAa,GAAe;AACvC,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,QAAQ,EAAE,CAAC;AACZ,KAAA;AACD,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,SAAS,EAAE;AACT,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,CAAC;AACT,KAAA;;;MCtLU,cAAc,CAAA;IAGzB,WAAY,CAAA,SAAiB,EAAE,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACF,CAAA;MAeY,aAAa,CAAA;IAaxB,WACE,CAAA,GAAW,EACX,UAAkB,EAClB,IAAa,EACb,KAAc,EACd,WAAkC,GAAA,MAAM,EACxC,WAAoB,EACpB,UAAU,GAAG,IAAI,EACjB,IAAqB,EACrB,MAAgB,EAChB,MAAe,EAAA;AAEf,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,WAAW;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC3C,aAAA;YACH,MAAM,MAAM,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC;YAC/B,IACE,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,WAAW,KAAK,MAAM;gBAC3B,IAAI,CAAC,WAAW,KAAK,MAAM;AAE3B,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAA,CAAA,CAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;KAC9B;AACF;;MCxEY,aAAa,CAAA;AAYxB,IAAA,WAAA,CAAY,GAAY,EAAE,GAAY,EAAE,QAAiB,EAAA;QAFzD,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AAGjB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AACF;;MCjBY,iBAAiB,CAAA;AAU5B,IAAA,WAAA,CACE,GAAW,EACX,KAAa,EACb,KAA8B,EAC9B,KAAc,EACd,MAAgB,EAChB,WAAoB,EACpB,QAAiB,EACjB,OAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;AAC5D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;KACtC;AACF;;MC3BY,QAAQ,GAAG,CAAC,KAAK,EAAE,YAAY,EAAW;AAG1C,MAAA,WAAW,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM;;ICLrC,oBAsBX;AAtBD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,mBAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA,GAAA,IAAU,CAAA;AACV,IAAA,mBAAA,CAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAoB,CAAA;AACpB,IAAA,mBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAqB,CAAA;AACrB,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAsB,CAAA;AACtB,IAAA,mBAAA,CAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAmB,CAAA;AACnB,IAAA,mBAAA,CAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAoB,CAAA;AACpB,IAAA,mBAAA,CAAA,mBAAA,CAAA,wBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,wBAA8B,CAAA;AAC9B,IAAA,mBAAA,CAAA,mBAAA,CAAA,4BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,4BAAkC,CAAA;AAClC,IAAA,mBAAA,CAAA,mBAAA,CAAA,+BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,+BAAqC,CAAA;AACrC,IAAA,mBAAA,CAAA,mBAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAuB,CAAA;AACvB,IAAA,mBAAA,CAAA,mBAAA,CAAA,wBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,wBAA8B,CAAA;AAC9B,IAAA,mBAAA,CAAA,mBAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAA0B,CAAA;AAC1B,IAAA,mBAAA,CAAA,mBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAsB,CAAA;AACtB,IAAA,mBAAA,CAAA,mBAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAqB,CAAA;AACrB,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAsB,CAAA;AACtB,IAAA,mBAAA,CAAA,mBAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAwB,CAAA;AACxB,IAAA,mBAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAsB,CAAA;AACtB,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAe,CAAA;AACf,IAAA,mBAAA,CAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAiB,CAAA;AACjB,IAAA,mBAAA,CAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,qBAA2B,CAAA;AAC7B,CAAC,EAtBW,mBAAmB,KAAnB,mBAAmB,GAsB9B,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,mBAAmB,GAAG;AACjC,IAAA,IAAK,EAAE,oBAAoB;AAC3B,IAAA,IAAK,EAAE,gBAAgB;AACvB,IAAA,IAAK,EAAE,kBAAkB;AACzB,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,sBAAsB;AAE7B,IAAA,IAAK,EAAE,eAAe;AAEtB,IAAA,IAAK,EAAE,iBAAiB;AACxB,IAAA,IAAK,EAAE,wBAAwB;AAC/B,IAAA,IAAK,EAAE,oBAAoB;AAC3B,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,gBAAgB;AAEvB,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,aAAa;AACpB,IAAA,IAAK,EAAE,kBAAkB;AAEzB,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,gBAAgB;AACvB,IAAA,IAAK,EAAE,aAAa;AACpB,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,wBAAwB;AAC/B,IAAA,IAAK,EAAE,4BAA4B;AACnC,IAAA,IAAK,EAAE,+BAA+B;AACtC,IAAA,IAAK,EAAE,0CAA0C;AACjD,IAAA,IAAK,EAAE,sBAAsB;AAC7B,IAAA,IAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAK,EAAE,gCAAgC;AACvC,IAAA,IAAK,EAAE,2BAA2B;AAElC,IAAA,IAAK,EAAE,eAAe;AACtB,IAAA,IAAK,EAAE,gBAAgB;AACvB,IAAA,IAAK,EAAE,kBAAkB;AACzB,IAAA,IAAK,EAAE,gBAAgB;AAEvB,IAAA,IAAK,EAAE,SAAS;AAChB,IAAA,IAAK,EAAE,WAAW;IAClB,IAAK,EAAE,qBAAqB;;;MC/DjB,eAAe,CAAA;AAK1B,IAAA,WAAA,CAAY,UAAe,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;KAC/C;AACF;;MCVY,GAAG,CAAA;AAed,IAAA,WAAA,CAAY,OAAgB,EAAE,GAAY,EAAE,IAAa,EAAA;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAED,OAAO,CAAC,KAAa,EAAE,GAAQ,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;AACrB,YAAA,IAAI,CAAC,IAAI;gBACP,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAElE,QAAA,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS;AACjE,YAAA,IAAI,CAAC,OAAO;gBACV,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;oBAC5C,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KAClC;AACF;;MChCY,+BAA+B,CAAA;AAI1C,IAAA,WAAA,CAAY,QAAa,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;KAChE;AACF;;MCTY,MAAM,CAAA;AAajB,IAAA,WAAA,CACE,SAAiB,EACjB,KAAa,EACb,cAAiC,EAAE,EAAA;AAEnC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;AACF;;IC2CW,sBAGX;AAHD,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,eAAwB,CAAA;AACxB,IAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,cAAsB,CAAA;AACxB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAGhC,EAAA,CAAA,CAAA;;MClEY,cAAc,CAAA;AAI1B,CAAA;IAmBW,iBAqBX;AArBD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA,GAAA,IAAU,CAAA;AACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAuB,CAAA;AACvB,IAAA,gBAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAoB,CAAA;AACpB,IAAA,gBAAA,CAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAsB,CAAA;AACtB,IAAA,gBAAA,CAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAwB,CAAA;AACxB,IAAA,gBAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,gBAAA,CAAA,sBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,sBAA4B,CAAA;AAC5B,IAAA,gBAAA,CAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAwB,CAAA;AACxB,IAAA,gBAAA,CAAA,gBAAA,CAAA,0BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,0BAAgC,CAAA;AAChC,IAAA,gBAAA,CAAA,gBAAA,CAAA,2BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,2BAAiC,CAAA;AACjC,IAAA,gBAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAoB,CAAA;AACpB,IAAA,gBAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAe,CAAA;AACf,IAAA,gBAAA,CAAA,gBAAA,CAAA,sBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,sBAA4B,CAAA;AAC5B,IAAA,gBAAA,CAAA,gBAAA,CAAA,gCAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gCAAsC,CAAA;AACtC,IAAA,gBAAA,CAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,qBAA2B,CAAA;AAC3B,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAe,CAAA;AACjB,CAAC,EArBW,gBAAgB,KAAhB,gBAAgB,GAqB3B,EAAA,CAAA,CAAA,CAAA;AAED,MAAMA,aAAW,GAAG,eAAe,CAAC;AAEvB,MAAA,sBAAsB,GAAG,mBAAmB,CACvD,gBAAgB,EAChBA,aAAW,EACX;AAEW,MAAA,kBAAkB,GAAG;AAChC,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,IAAI,EAAE,gCAAgC;AACtC,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,wBAAwB;;;MC3EnB,eAAe,CAAA;AAM1B,IAAA,WAAA,CACE,QAAgB,EAChB,MAAc,EACd,IAAgB,EAChB,QAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;AAErB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAEO,IAAA,aAAa,CAAC,IAAgB,EAAA;QACpC,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAC7B,MAAM,eAAe,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAA,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC,CAAM,KAAI;AAC1B,YAAA,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE;gBACpC,iBAAiB,GAAG,CAAC,CAAC;AACtB,gBAAA,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,aAAA;AAAM,iBAAA,IACL,CAAC,iBAAiB;gBAClB,eAAe;gBACf,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;AACpD,oBAAA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EACnB;AACA,gBAAA,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3D,aAAA;AAAM,iBAAA,IACL,iBAAiB;gBACjB,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;AACtD,oBAAA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EACnB;AACA,gBAAA,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;gBACL,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AACF;;MC5CY,UAAU,CAAA;AAGtB;;ACLY,MAAA,aAAa,GAAsB;IAC9C,MAAM;IACN,QAAQ;IACR,SAAS;;;ACFE,MAAA,sBAAsB,GAA+B;IAChE,MAAM;IACN,aAAa;IACb,QAAQ;;;MCHG,mBAAmB,CAAA;AAG/B;;ACuBe,SAAA,kBAAkB,CAAC,MAAoB,EAAE,OAAqB,EAAA;AAC5E,IAAA,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7B,IAAA,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACnC,IAAA,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACvC,IAAA,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC/B,IAAA,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACjC,IAAA,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACvD,IAAA,MAAM,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAC/D;;IClCY,sBAmBX;AAnBD,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA,GAAA,IAAU,CAAA;AACV,IAAA,qBAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAoB,CAAA;AACpB,IAAA,qBAAA,CAAA,qBAAA,CAAA,sBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,sBAA4B,CAAA;AAC5B,IAAA,qBAAA,CAAA,qBAAA,CAAA,wBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,wBAA8B,CAAA;AAC9B,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,qBAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAqB,CAAA;AACrB,IAAA,qBAAA,CAAA,qBAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAgB,CAAA;AAChB,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAA0B,CAAA;AAC1B,IAAA,qBAAA,CAAA,qBAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAsB,CAAA;AACtB,IAAA,qBAAA,CAAA,qBAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAwB,CAAA;AACxB,IAAA,qBAAA,CAAA,qBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,qBAAA,CAAA,qBAAA,CAAA,2BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,2BAAiC,CAAA;AACjC,IAAA,qBAAA,CAAA,qBAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAyB,CAAA;AACzB,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAe,CAAA;AACf,IAAA,qBAAA,CAAA,qBAAA,CAAA,qBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,qBAA2B,CAAA;AAC3B,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAe,CAAA;AACjB,CAAC,EAnBW,qBAAqB,KAArB,qBAAqB,GAmBhC,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC3B,MAAA,0BAA0B,GAAG,mBAAmB,CAC3D,qBAAqB,EACrB,WAAW,EACX;AAEW,MAAA,sBAAsB,GAAG;AACpC,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,IAAI,EAAE,uBAAuB;AAE7B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,IAAI,EAAE,cAAc;AAEpB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,IAAI,EAAE,aAAa;AAEnB,IAAA,IAAI,EAAE,oBAAoB;AAC1B,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,kBAAkB;AAExB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,2BAA2B;AAEjC,IAAA,IAAI,EAAE,4BAA4B;AAClC,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,oBAAoB;AAE1B,IAAA,IAAI,EAAE,kCAAkC;AACxC,IAAA,IAAI,EAAE,wBAAwB;AAE9B,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,SAAS;;;MC3DJ,uBAAuB,CAAA;AAInC,CAAA;MAEY,oBAAoB,CAAA;AAIhC,CAAA;MAEY,gBAAgB,CAAA;AAI5B,CAAA;MAEY,oBAAoB,CAAA;AAKhC;;ICzBW,uBAMX;AAND,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,sBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,GAMjC,EAAA,CAAA,CAAA,CAAA;MAEY,YAAY,CAAA;AAQxB;;ICPW,WAIX;AAJD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACzB,CAAC,EAJW,UAAU,KAAV,UAAU,GAIrB,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,OAAO,GAAG,aAAa,CAAC;AACjB,MAAA,qBAAqB,GAAG;AACnC,IAAA,CAAC,UAAU,CAAC,IAAI,GAAG,CAAA,EAAG,OAAO,CAAM,IAAA,CAAA;AACnC,IAAA,CAAC,UAAU,CAAC,KAAK,GAAG,CAAA,EAAG,OAAO,CAAO,KAAA,CAAA;AACrC,IAAA,CAAC,UAAU,CAAC,SAAS,GAAG,CAAA,EAAG,OAAO,CAAY,UAAA,CAAA;;;ACMnC,MAAA,4BAA4B,GAAG;AAC1C,IAAA,IAAK,EAAE,IAAI;AACX,IAAA,IAAK,EAAE,cAAc;AACrB,IAAA,IAAK,EAAE,oBAAoB;AAC3B,IAAA,IAAK,EAAE,sBAAsB;AAC7B,IAAA,IAAK,EAAE,mBAAmB;AAC1B,IAAA,IAAK,EAAE,kBAAkB;AACzB,IAAA,IAAK,EAAE,gBAAgB;AACvB,IAAA,IAAK,EAAE,uBAAuB;AAC9B,IAAA,IAAK,EAAE,SAAS;AAChB,IAAA,IAAK,EAAE,WAAW;AAClB,IAAA,IAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAK,EAAE,SAAS;EACP;MAEE,4BAA4B,GAAG,MAAM,CAAC,4BAA4B;;MCtClE,QAAQ,CAAA;;AACZ,QAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;AAC/C,QAAA,CAAA,WAAW,GAAG,CAAC,UAAmB,MAAM;AAC7C,IAAA,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;AAChE,CAAA,CAAC;;ACJS,MAAA,sBAAsB,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAW;AAGxH,MAAA,iCAAiC,GAA0C;AACtF,IAAA,WAAW,EAAE,CAAqC,mCAAA,CAAA;AAClD,IAAA,UAAU,EAAE,CAAoC,kCAAA,CAAA;AAChD,IAAA,WAAW,EAAE,CAAqC,mCAAA,CAAA;AAClD,IAAA,YAAY,EAAE,CAAsC,oCAAA,CAAA;AACpD,IAAA,WAAW,EAAE,CAAqC,mCAAA,CAAA;AAClD,IAAA,MAAM,EAAE,CAAqC,mCAAA,CAAA;EACpC;MAEE,wBAAwB,GAAG,CAAC,IAA2B,EAAE,IAAe,KAAU;AAC7F,IAAA,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;AACvC,IAAA,QAAQ,IAAI;AACV,QAAA,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,QAAA,KAAK,YAAY;YACf,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrC,QAAA,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,QAAA,KAAK,cAAc;YACjB,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvC,QAAA,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,QAAA;YACE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,KAAA;AACH,EAAE;MAEW,qBAAqB,GAAG,CAAC,IAA2B,EAAE,IAAe,KAAU;AAC1F,IAAA,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;AACvC,IAAA,QAAQ,IAAI;AACV,QAAA,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,QAAA,KAAK,YAAY;YACf,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnC,QAAA,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,QAAA,KAAK,cAAc;YACjB,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrC,QAAA,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,QAAA;YACE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,KAAA;AACH;;AC9Ca,MAAA,sBAAsB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAW;AAGxH,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAE1B,MAAA,0BAA0B,GAA0C;IAC/E,UAAU,EAAE,CAAG,EAAA,OAAO,CAAU,QAAA,CAAA;IAChC,SAAS,EAAE,CAAG,EAAA,OAAO,CAAS,OAAA,CAAA;IAC9B,UAAU,EAAE,CAAG,EAAA,OAAO,CAAU,QAAA,CAAA;IAChC,WAAW,EAAE,CAAG,EAAA,OAAO,CAAW,SAAA,CAAA;IAClC,UAAU,EAAE,CAAG,EAAA,OAAO,CAAU,QAAA,CAAA;IAChC,UAAU,EAAE,CAAG,EAAA,OAAO,CAAU,QAAA,CAAA;EACvB;AAEE,MAAA,wBAAwB,GAAG,CAAC,IAA2B,KAAI;AACtE,IAAA,QAAQ,IAAI;AACV,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvD,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtD,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvD,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvD,QAAA;AACE,YAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,KAAA;AACH;;MC1Ba,aAAa,CAAA;;AACjB,aAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AACnB,aAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AACrB,aAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AACvB,aAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AACvB,aAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;AACxB,aAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;AACzB,aAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;0GAPpB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCyBY,6BAA6B,CAAA;IAExC,OAAO,OAAO,CACZ,MAAiB,EAAA;AAEjB,QAAA,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACnD,QAAA,aAAa,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACvD,QAAA,aAAa,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3D,QAAA,aAAa,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3D,QAAA,aAAa,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC7D,QAAA,aAAa,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC/D,QAAA,aAAa,CAAC,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAEjE,OAAO;AACL,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;;0HAjBU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,YARtC,eAAe;QACf,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAIP,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,YARtC,eAAe;QACf,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAIP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,eAAe;wBACf,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAA;;;MCfY,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAFnB,QAAA,IAAA,CAAA,OAAO,GAAG,CAAG,EAAA,aAAa,CAAC,aAAa,eAAe,CAAC;KAEhC;AAElC,IAAA,cAAc,CACnB,KAAa,EACb,cAAgC,EAChC,IAAA,GAAe,EAAE,EACjB,WAA0B,GAAA,IAAI,EAC9B,YAAY,GAAG,IAAI,EAAA;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAE,EACjB;AACE,YAAA,MAAM,EAAE;gBACN,KAAK;gBACL,WAAW;gBACX,YAAY;gBACZ,IAAI;gBACJ,aAAa,EAAE,cAAc,EAAE,aAAa;AAC7C,aAAA;AACF,SAAA,CACF,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAChC;AAEM,IAAA,aAAa,CAAC,UAAsB,EAAA;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;AAClF,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,kBAAkB,CAAC,EAAU,EAAA;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA,MAAA,CAAQ,EAC5B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAC3B;aACE,IAAI,CACH,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EACzB,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAC5B,CAAC;KACL;AAEM,IAAA,sBAAsB,CAAC,QAAgB,EAAE,WAAqB,EAAE,iBAA0B,KAAK,EAAA;AACpG,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,aAAa,CAAC,aAAa,CAAW,QAAA,EAAA,QAAQ,EAAE,EAAE;AAC1E,YAAA,aAAa,EAAE,WAAW;YAC1B,cAAc;SACf,CAAC;aACC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;KAC1B;;+GAjDU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCFY,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAEzB,IAAY,CAAA,YAAA,GAAG,cAAc,CAAC;KAFA;IAI/C,aAAa,CAAC,aAAsB,KAAK,EAAA;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,aAAa,CAAC,aAAa,CAAA,EAAG,IAAI,CAAC,YAAY,CAAE,CAAA,EACpD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CACjC,CAAC;KACH;IAED,cAAc,CAAC,aAAsB,KAAK,EAAA;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,aAAa,CAAC,kBAAkB,CAAA,EAAG,IAAI,CAAC,YAAY,CAAE,CAAA,EACzD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CACjC,CAAC;KACH;IAED,eAAe,CAAC,aAAsB,KAAK,EAAA;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,aAAa,CAAC,eAAe,CAAA,EAAG,IAAI,CAAC,YAAY,CAAE,CAAA,EACtD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CACjC,CAAC;KACH;IAED,YAAY,CAAC,aAAsB,KAAK,EAAA;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,aAAa,CAAC,iBAAiB,CAAA,EAAG,IAAI,CAAC,YAAY,CAAE,CAAA,EACxD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CACjC,CAAC;KACH;IAED,eAAe,CAAC,aAAsB,KAAK,EAAA;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,aAAa,CAAC,mBAAmB,CAAA,EAAG,IAAI,CAAC,YAAY,CAAE,CAAA,EAC1D,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CACjC,CAAC;KACH;;2GAtCU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,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,CAAA;;;MCyBY,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAEzB,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC;AAE/C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC,CAAC;KAJX;IAM/C,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,UAAU;AACnB,aAAA,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,OAAO,WAAW,CAAC;AACpC,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAA8B,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;KACjE;IAEO,kBAAkB,CACxB,QAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,UAAuB,EACvB,QAA0B,EAAA;AAE1B,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,aAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;AACzB,aAAA,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC;aAC9B,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,QAAQ,EAAE;YACZ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjE,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;YACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACvD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,OAAO,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;KACvE;AAEM,IAAA,eAAe,CACpB,QAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,QAA0B,EAAA;AAE1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,QAAQ,CACT,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,IAAI,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACzE;IAEM,wBAAwB,CAC7B,QAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,UAAuB,EACvB,QAA0B,EAAA;AAE1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,QAAQ,CACT,CAAC;KACH;AAEM,IAAA,cAAc,CAAC,QAAgB,EAAA;QACpC,OAAO,IAAI,CAAC,UAAU;aACnB,GAAG,CAAM,GAAG,IAAI,CAAC,OAAO,CAAW,QAAA,EAAA,QAAQ,EAAE,CAAC;AAC9C,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;AACvB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,YAAA,MAAM,OAAO,GAAY;gBACvB,GAAG,EAAE,IAAI,CAAC,IAAI;gBACd,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;YACF,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACrD,gBAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,WAAW;gBAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC5C,YAAA,OAAO,OAAO,CAAC;SAChB,CAAC,CAAC,CAAC;KACP;IAEM,uBAAuB,CAC5B,GAAyB,EACzB,oBAAsC,EAAA;QAEtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,4CAAA,CAA8C,EAC7D;YACE,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,sBAAsB,EAAE,oBAAoB,CAAC,EAAE;AAChD,SAAA,CACF,CAAC;KACH;IAEM,aAAa,CAClB,GAAyB,EACzB,WAA8B,EAAA;QAE9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,iCAAA,CAAmC,EAClD;YACE,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;AAC5B,YAAA,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5C,SAAA,CACF,CAAC;KACH;AAEM,IAAA,eAAe,CAAC,CAAuB,EAAA;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,OAAA,CAAS,EAAE;AACpD,YAAA,GAAG,CAAC;AACJ,YAAA,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC7C,YAAA,aAAa,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;YAChC,UAAU,EAAE,CAAC,CAAC,WAAW;AAC1B,SAAA,CACA,CAAA;KACF;AAEM,IAAA,iBAAiB,CAAC,CAAuB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAW,QAAA,EAAA,CAAC,CAAC,EAAE,EAAE,EAAE;AAC3D,YAAA,GAAG,CAAC;AACJ,YAAA,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC7C,YAAA,aAAa,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;AACjC,SAAA,CACA,CAAC;KACH;IAEM,iBAAiB,CAAC,CAAuB,EAAE,OAAe,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAW,QAAA,EAAA,CAAC,CAAC,EAAE,SAAS,EAAE;AAClE,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CACA,CAAC;KACH;AAEM,IAAA,iBAAiB,CAAC,CAAuB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;KACjE;AAEM,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,CAAkB,eAAA,EAAA,UAAU,EAAE,EAAE;AACxE,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CAAC,CAAC;KACJ;IAEM,kBAAkB,CACvB,UAAkB,EAClB,IAAU,EAAA;AAEV,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC,UAAU;aACnB,IAAI,CACH,CAAG,EAAA,IAAI,CAAC,OAAO,kBAAkB,UAAU,CAAA,CAAE,EAC7C,QAAQ,CACT;AACA,aAAA,IAAI,CACH,UAAU,CAAC,CAAC,GAAsB,KAChC,EAAE,CAAC,GAAG,CAAC,KAAiC,CAAC,CAC1C,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CACvC,CAAC;KACL;IAEM,gBAAgB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;IAEM,kBAAkB,CACvB,IAAY,EACZ,UAAkB,EAClB,SAAe,EACf,UAAkB,EAClB,UAAU,GAAG,KAAK,EAAA;AAElB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,CAAG,EAAA,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,cAAc,EACpD;YACE,IAAI;AACJ,YAAA,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,UAAU;AACX,SAAA,EACD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CACjC,CAAC;KACH;AAEM,IAAA,gBAAgB,CACrB,IAAY,EACZ,UAAkB,EAClB,EAAU,EACV,SAAe,EAAA;AAEf,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3B,CAAA,EAAG,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAgB,aAAA,EAAA,EAAE,EAAE,EAC1D;AACE,YAAA,IAAI,EAAE;gBACJ,SAAS;gBACT,IAAI;AACL,aAAA;AACF,SAAA,CACF,CAAC;KACH;IAEM,cAAc,CACnB,IAAY,EACZ,UAAkB,EAClB,SAAe,EACf,EAAU,EACV,UAAkB,EAAA;AAElB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAA,EAAG,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAgB,aAAA,EAAA,EAAE,EAAE,EAC1D;YACE,IAAI;AACJ,YAAA,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,UAAU;AACX,SAAA,CACF,CAAC;KACH;;4GAvOU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCzBY,eAAe,CAAA;AAC1B,IAAA,OAAO,eAAe,CACpB,MAA4B,EAC5B,IAAwB,EACxB,OAAa,EACb,OAAa,EACb,UAAiC,EACjC,UAAU,EACV,eAAe,GAAG,KAAK,EACvB,mBAA4B,EAAA;AAE5B,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AAE5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAChE,CAAC;QAEF,OAAO;AACL,YAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE;AAC/B,YAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE;YAC/B,UAAU;AACV,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,EAAE;AACzC,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,EAAE;YACvC,UAAU;YACV,eAAe;YACf,mBAAmB;SACpB,CAAC;KACH;;4GA3BU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCEY,eAAe,CAAA;AAI1B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAHnB,QAAA,IAAA,CAAA,UAAU,GAAG,CAAG,EAAA,aAAa,CAAC,kBAAkB,WAAW,CAAC;AAC5D,QAAA,IAAA,CAAA,WAAW,GAAG,CAAG,EAAA,aAAa,CAAC,kBAAkB,WAAW,CAAC;AAqFtE,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,eAAe,CAAW,IAAI,CAAC,CAAC;KAnF5C;AAElC,IAAA,WAAW,CAChB,KAAA,GAAgB,EAAE,EAClB,aAAsB,EACtB,MAAe,EACf,UAAmB,EACnB,UAAU,GAAG,KAAK,EAAA;AAElB,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,aAAA,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AACtB,aAAA,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACpC,QAAA,IAAI,aAAa;YACf,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AACzD,QAAA,IAAI,MAAM;YACR,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,QAAA,IAAI,UAAU;YACZ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;KACrE;AAEM,IAAA,UAAU,CAAC,OAAgB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KACjD;IAEM,aAAa,CAAC,EAAU,EAAE,OAAgB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;KAC1D;AAEM,IAAA,eAAe,CAAC,OAAe,EAAE,UAAsB,EAAE,QAAgB,EAAA;AAC9E,QAAA,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CACH,CAAA,EAAG,IAAI,CAAC,UAAU,CAAU,QAAA,CAAA,EAC5B,QAAQ,EACR,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAC3B;AACA,aAAA,IAAI,CACHC,KAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,OAAO,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,EAAE,CAAC;SAChD,CAAC,CACH,CAAC;KACL;IAEM,mBAAmB,CAAC,EAAU,EAAE,OAAgB,EAAA;AACrD,QAAA,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAM,CAAG,EAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC;KAC/D;AAEM,IAAA,aAAa,CAAC,EAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC,CAAC;KACpD;AAEM,IAAA,eAAe,CAAC,IAAkB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;IAEM,gBAAgB,CACrB,KAAa,EACb,aAAsB,EACtB,IAAe,GAAA,EAAE,EACjB,UAAA,GAAqB,EAAE,EAAA;AAEvB,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAC9B,QAAA,IAAI,IAAI;YACN,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,UAAU;YACZ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACnD,QAAA,IAAI,aAAa;YACf,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,KAAK,GAAG,CAAC;YACX,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwC,IAAI,CAAC,WAAW,EAC1E;YACE,MAAM;AACP,SAAA,CAAC,CAAC;KACN;IAEM,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,aAAa,CAAC,kBAAkB,CAAA,MAAA,CAAQ,EAAE,EAAE,CAAC,CAAC;KACxE;IAGM,YAAY,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;AACxB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,CAAA,EAAG,aAAa,CAAC,kBAAkB,CAAA,sBAAA,CAAwB,CAAC;AACxF,aAAA,IAAI,CACHC,WAAS,CAAC,SAAS,IAAG;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CACH,CAAC;KACL;AAEM,IAAA,cAAc,CAAC,UAAkB,EAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,UAAU,CAAA,CAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;KAC1F;IAEM,cAAc,CAAC,IAAU,EAAE,QAAgB,EAAA;AAChD,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,UAAU,QAAQ,CAAA,CAAE,EAAE,QAAQ,CAAC,CAAC;KACzE;;4GA5GU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,YAAY,CAAA;AAIvB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAFnB,QAAA,IAAA,CAAA,OAAO,GAAG,CAAG,EAAA,aAAa,CAAC,iBAAiB,YAAY,CAAC;KAEjC;AAElC,IAAA,SAAS,CAAC,OAKhB,EAAA;AACC,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;aAC1B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;QACrC,IAAI,OAAO,EAAE,MAAM;YACjB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,QAAA,IAAI,OAAO,EAAE,IAAI,EAAE,aAAa;AAC9B,YAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;AAEnE,QAAA,IAAI,OAAO,EAAE,YAAY,KAAK,KAAK;YACjC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAE7C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;KAC1E;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;QAC7B,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,EAAE,CAAA,OAAA,CAAS,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;KACrD;AAEM,IAAA,QAAQ,CAAC,KAAe,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAC3B,CAAC;KACH;IAEM,WAAW,CAAC,KAAY,EAAE,IAAU,EAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyC,GAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KAC/G;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;QAC7B,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,EAAE,CAAA,CAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,GAAG,EAAE,KAAK,CAAC,CAAC;KAC5D;IAEM,eAAe,CAAC,KAAY,EAAE,KAAsB,EAAA;QACzD,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,EAAE,CAAA,CAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAgD,GAAG,EAAE,KAAK,CAAC,CAAC;KACnF;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;QAC7B,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,EAAE,CAAA,CAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAyC,GAAG,CAAC,CAAC;KACtE;;yGAzDU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCYY,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAEnB,QAAA,IAAA,CAAA,OAAO,GAAW,aAAa,CAAC,aAAa,CAAC;KAFtB;AAIlC,IAAA,QAAQ,CACb,MAAmB,EACnB,UAAkB,EAClB,oBAA6B,KAAK,EAAA;QAElC,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CACH,GAAG,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAC,WAAW,EAAE,cAAc,EAClE,MAAM,EACN,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CACxC;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAqB,KAAI;AAC5B,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI,eAAe,CACxB,UAAU,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,kBAAkB,CACzB,CAAC;SACH,CAAC,CACH,CAAC;KACL;AAEM,IAAA,mBAAmB,CAAC,MAA8B,EAAE,UAAkB,EAAE,oBAA6B,KAAK,EAAA;QAC/G,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CACH,GAAG,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAC,WAAW,EAAE,qBAAqB,EACzE,MAAM,EACN,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CACxC;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAqB,KAAI;AAC5B,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI,eAAe,CACxB,UAAU,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,kBAAkB,CACzB,CAAC;SACH,CAAC,CACH,CAAC;KACL;AAEM,IAAA,gBAAgB,CAAC,MAA2B,EAAE,UAAkB,EAAE,oBAA6B,KAAK,EAAA;QACzG,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CACH,GAAG,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAC,WAAW,EAAE,iBAAiB,EACrE,MAAM,EACN,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CACxC;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAqB,KAAI;AAC5B,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI,eAAe,CACxB,UAAU,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,kBAAkB,CACzB,CAAC;SACH,CAAC,CACH,CAAC;KACL;AAEM,IAAA,SAAS,CACd,MAAqB,EACrB,UAAkB,EAClB,oBAA6B,KAAK,EAAA;AAElC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAW,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAG,EAAA,IAAI,CAAC,OAAO,aAAa,UAAU,CAAC,WAAW,EAAE,eAAe,EACnE;AACE,YAAA,QAAQ,EAAE,cAAc;YACxB,OAAO;AACR,SAAA,EACD,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CACxC,CAAC;KACH;IAEM,eAAe,CACpB,MAAqB,EACrB,UAAkB,EAAA;AAElB,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAW,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CACH,CAAG,EAAA,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAC,WAAW,EAAE,CAAA,aAAA,CAAe,EACnE;AACE,YAAA,QAAQ,EAAE,cAAc;YACxB,OAAO;SACR,CACF;aACA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,CAAC,CAAC;KACrC;AAEM,IAAA,UAAU,CACf,MAAc,EACd,IAAU,EACV,UAAkB,EAClB,SAAgC,EAAA;QAEhC,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CACH,CAAG,EAAA,IAAI,CAAC,OAAO,CAAa,UAAA,EAAA,UAAU,CAAC,WAAW,EAAE,CAAA,cAAA,CAAgB,EACpE;AACE,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAA,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3B,YAAA,cAAc,EAAE,SAAS;SAC1B,CACF;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAI;AACV,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,IAAI,CAAC;AACtB,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI,eAAe,CACxB,UAAU,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,kBAAkB,CACzB,CAAC;SACH,CAAC,CACH,CAAC;KACL;IAEM,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAM,CAAG,EAAA,IAAI,CAAC,OAAO,WAAW,CAAC;AACpC,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAU,KAAK,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;KAChD;AAEM,IAAA,WAAW,CAAC,UAAkB,EAAE,IAAiB,EAAE,UAAU,GAAG,KAAK,EAAA;QAC1E,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CACH,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,UAAA,EAAa,UAAU,CAAS,OAAA,CAAA,EAC/C,IAAI,EACJ,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;KACvC;IAEM,gBAAgB,CAAC,UAAkB,EAAE,WAA8B,EAAA;AACxE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,CAAG,EAAA,IAAI,CAAC,OAAO,aAAa,UAAU,CAAA,OAAA,CAAS,EAAE,WAAW,CAAC,CAAC;KAC1F;;0GAnJU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,iBAAiB,CAAA;AAW5B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AATnB,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAEnD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AAEnE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC,CAAC;KAEZ;IAElC,iBAAiB,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAsC,CAAG,EAAA,IAAI,CAAC,OAAO,iBAAiB,CAAC;AAC1E,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,qBAAqB,CAAC,SAAwB,EAAA;QACnD,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAA6B,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,MAAA,CAAQ,CAAC;AACvF,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,kBAAkB,CAAC,SAAwB,EAAA;QAChD,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAqC,CAAG,EAAA,IAAI,CAAC,OAAO,QAAQ,SAAS,CAAC,EAAE,CAAA,CAAE,CAAC;AAC9E,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,WAAW,CAAC,SAAwB,EAAE,IAAc,EAAA;QACzD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAqC,CAAG,EAAA,IAAI,CAAC,OAAO,QAAQ,SAAS,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAChG,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,gBAAgB,CAAC,SAAwB,EAAA;QAC9C,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAsC,GAAG,IAAI,CAAC,OAAO,CAAiB,eAAA,CAAA,EAAE,SAAS,CAAC;AACtF,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,mBAAmB,CAAC,SAAwB,EAAA;QACjD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAsC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,SAAS,CAAC,EAAE,CAAA,CAAE,EAAE,SAAS,CAAC;AACrG,aAAA,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EACtB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;KACL;IAEM,oBAAoB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;KACnD;AAEM,IAAA,mBAAmB,CAAC,SAAwB,EAAA;QACjD,OAAO,IAAI,CAAC,IAAI;aACb,MAAM,CAA6B,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,CAAE,CAAC;aACpF,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EACtB,GAAG,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CACvD,CAAC;KACL;IAEM,oBAAoB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;KACnD;IAEM,OAAO,CAAC,SAAwB,EAAE,IAAU,EAAA;QACjD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAA6B,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,SAAS,CAAC,EAAE,CAAA,MAAA,CAAQ,EAAE,IAAI,CAAC;AAC9F,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,UAAU,CAAC,SAAwB,EAAE,IAAU,EAAA;QACpD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAA6B,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,EAAE,CAAE,CAAA,EAAE,IAAI,CAAC;AACxG,aAAA,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EACtB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3C,CAAC;KACL;IAEM,UAAU,CAAC,SAAwB,EAAE,IAAU,EAAA;QACpD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,MAAM,CAA6B,CAAA,EAAG,IAAI,CAAC,OAAO,CAAmB,gBAAA,EAAA,SAAS,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,EAAE,EAAE,CAAC;AACrG,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,YAAY,CAAC,SAAwB,EAAE,IAAU,EAAA;QACtD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAqC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAmB,gBAAA,EAAA,SAAS,CAAC,EAAE,CAAiB,cAAA,EAAA,IAAI,CAAC,EAAE,UAAU,CAAC;AACzH,aAAA,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CACnC,CAAC;KACL;IAEM,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,OAAO,CAAC,SAAwB,EAAE,IAAkB,EAAA;QACzD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAAqC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,SAAS,CAAC,EAAE,CAAA,MAAA,CAAQ,EAAE,IAAI,CAAC;AACtG,aAAA,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EACtB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3C,CAAC;KACL;IAEM,UAAU,CAAC,SAAwB,EAAE,IAAkB,EAAA;QAC5D,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAqC,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,EAAE,CAAE,CAAA,EAAE,IAAI,CAAC;AAChH,aAAA,IAAI,CACH,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EACtB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3C,CAAC;KACL;IAEM,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,UAAU,CAAC,SAAwB,EAAE,IAAkB,EAAA;QAC5D,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,MAAM,CAA6B,CAAA,EAAG,IAAI,CAAC,OAAO,CAAmB,gBAAA,EAAA,SAAS,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,EAAE,EAAE,CAAC;AACrG,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,mBAAmB,CAAC,SAAwB,EAAA;QACjD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,OAAA,CAAS,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;KAC3F;IAEM,mBAAmB,CAAC,SAAwB,EAAE,IAAU,EAAA;AAC7D,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyB,GAAG,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KAClH;AAEM,IAAA,uBAAuB,CAAC,SAAwB,EAAA;QACrD,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAA2C,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,sBAAA,CAAwB,CAAC;AACrH,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,2BAA2B,CAAC,SAAwB,EAAE,WAAiC,EAAA;QAC5F,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAA2C,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,SAAS,CAAC,EAAE,CAAA,sBAAA,CAAwB,EAAE,WAAW,CAAC;AAClI,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,WAAW,CAAC,SAAwB,EAAE,WAAiD,EAAE,QAAgB,EAAE,WAA4B,IAAI,EAAA;QAChJ,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAEhF,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;YAE1C,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,KAAK,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,cAAc,CAAC;AACnH,YAAA,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAc,WAAA,EAAA,KAAK,IAAI,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;AACvF,YAAA,MAAM,cAAc,GAAG,CAAC,UAAU,CAAC,YAAY;AAC7C,kBAAE,CAAmB,gBAAA,EAAA,UAAU,CAAC,MAAM,CAAA,IAAA,EAAO,YAAY,CAAI,EAAA,CAAA;kBAC3D,YAAY,CAAC;AAEjB,YAAA,KAAK,IAAI,CAAG,EAAA,cAAc,CAAG,EAAA,SAAS,EAAE,CAAC;AACzC,YAAA,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,IAAI;gBACzB,KAAK,IAAI,MAAM,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE;AACtB,aAAA,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;AACrB,aAAA,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC3B,aAAA,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AACnB,aAAA,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAEzB,IAAI,QAAQ,EAAE,aAAa;YACzB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CACF,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,SAAS,CAAC,EAAE,CAAA,MAAA,CAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACvE,CAAC;KACL;AAEM,IAAA,aAAa,CAAC,UAAkB,EAAE,IAAY,EAAE,WAAmB,EAAE,IAAY,EAAE,QAAgB,EAAE,QAAA,GAA4B,IAAI,EAAA;AAC1I,QAAA,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE;AACtB,aAAA,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE1B,QAAA,IAAI,UAAU;YACZ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAExC,QAAA,IAAI,IAAI;YACN,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE5B,QAAA,IAAI,WAAW;YACb,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAE1C,QAAA,IAAI,IAAI;YACN,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE5B,IAAI,QAAQ,EAAE,aAAa;YACzB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CACF,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,OAAA,CAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACzC,CAAC;KACL;AAEM,IAAA,iCAAiC,CAAC,WAAmB,EAAA;QAC1D,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAuC,GAAG,IAAI,CAAC,OAAO,CAAmB,gBAAA,EAAA,WAAW,YAAY,CAAC;AACpG,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,kBAAkB,CAAC,WAAmB,EAAE,MAAc,EAAA;QAC3D,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAuC,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,WAAW,CAAA,OAAA,EAAU,MAAM,CAAA,UAAA,CAAY,CAAC;AACpH,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,qBAAqB,CAAC,WAAmB,EAAE,gBAAyB,EAAA;QACzE,MAAM,MAAM,GAAG,gBAAgB,GAAG,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;QACrH,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAqC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,WAAW,CAAA,2BAAA,CAA6B,EAAE,EAAE,MAAM,EAAE,CAAC;AAC/H,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,gCAAgC,CAAC,WAAmB,EAAE,MAAc,EAAA;QACzE,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAqC,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,WAAW,CAAA,4BAAA,EAA+B,MAAM,CAAA,CAAE,CAAC;AAC7H,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,iBAAiB,CAAC,WAAmB,EAAE,MAAc,EAAE,mBAAmC,EAAA;QAC/F,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAAuC,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,gBAAA,EAAmB,WAAW,CAAU,OAAA,EAAA,MAAM,YAAY,EAAE,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtK,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,iCAAiC,CAAC,WAAmB,EAAE,gBAAA,GAA2B,EAAE,EAAA;QACzF,MAAM,MAAM,GAAG,gBAAgB,GAAG,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;QACrH,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,IAAI,CAA4C,CAAA,EAAG,IAAI,CAAC,OAAO,CAAmB,gBAAA,EAAA,WAAW,CAA6B,2BAAA,CAAA,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;AAC7I,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;AAEM,IAAA,oBAAoB,CAAC,WAAmB,EAAE,MAAc,EAAE,sBAAsC,EAAA;QACrG,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAuC,GAAG,IAAI,CAAC,OAAO,CAAmB,gBAAA,EAAA,WAAW,CAAU,OAAA,EAAA,MAAM,CAAc,WAAA,EAAA,sBAAsB,CAAC,EAAE,CAAA,CAAE,EAAE,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrM,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;IAEM,oBAAoB,CAAC,WAAmB,EAAE,MAAc,EAAE,wBAAgC,EAAE,gBAAyB,KAAK,EAAA;AAC/H,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,MAAM,CAA6B,CAAG,EAAA,IAAI,CAAC,OAAO,mBAAmB,WAAW,CAAA,OAAA,EAAU,MAAM,CAAA,WAAA,EAAc,wBAAwB,CAAE,CAAA,EAAE,EAAE,MAAM,EAAE,CAAC;AACrJ,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjC;;8GArQU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACbD,MAAM,iBAAiB,GAAoB;AACzC,IAAA,QAAQ,EAAE,IAAI;CACf,CAAC;MAWW,kBAAkB,CAAA;IAC7B,WAAoB,CAAA,IAAgB,EAAU,SAA2B,EAAA;QAArD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAEzE,IAAY,CAAA,YAAA,GAA2B,IAAI,CAAC;AAEpC,QAAA,IAAA,CAAA,GAAG,GAAG,CAAG,EAAA,aAAa,CAAC,iBAAiB,oBAAoB,CAAC;AAE7D,QAAA,IAAA,CAAA,SAAS,GAAG,CAAG,EAAA,aAAa,CAAC,iBAAiB,2BAA2B,CAAC;KANJ;IAQ9E,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;KAC/B;AAED,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAC7B,SAAS,CAAC,CAAC,WAAW,KACpB,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACzD,CACF,CAAC;KACH;IAEM,oBAAoB,GAAA;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsC,IAAI,CAAC,SAAS,CAAC;AACtE,aAAA,IAAI,CACH,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAC/B,CAAC;KACL;IAEM,oBAAoB,CAAC,OAAe,EAAE,UAA2B,EAAA;AACtE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,SAAS,IAAI,OAAO,CAAA,CAAE,EAAE,UAAU,CAAC,CAAC;KAClE;AAEO,IAAA,eAAe,CAAC,WAA4B,EAAA;QAClD,OAAO,IAAI,CAAC,IAAI;AACb,aAAA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC;AAC1B,aAAA,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;KACvD;IAEO,eAAe,GAAA;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3B,IAAI,CACH,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAC/B,GAAG,CAAC,CAAC,EAAE,IAAI,EAA6B,KAAI;AAC1C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,iBAAiB,CAAC;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACtC,YAAA,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;SAC9B,CAAC,EACF,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAC7D,CAAC;KACL;;+GArDU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCZY,cAAc,CAAA;IAUzB,WAAmB,CAAA,UAAsB,EAAU,WAAwB,EAAA;QAAxD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAPnE,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QACd,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAErB,QAAA,IAAA,CAAA,OAAO,GAAG,CAAG,EAAA,aAAa,CAAC,iBAAiB,MAAM,CAAC;AAE3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;QAGlE,IAAI,CAAC,WAAW,CAAC,KAAK;AACnB,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAC;AAC9B,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAClC,SAAC,CAAC,CACH,CAAC,SAAS,CAAC,OAAO,IAAG;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;KACN;IAEM,gBAAgB,GAAA;QACrB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1D;IAEM,QAAQ,GAAA;QACb,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,WAAmB,KAAI;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;AACjC,YAAA,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB,CAAC,CACH,CAAC;KACH;IAEM,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACvE;IAEM,mBAAmB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,CAAU,QAAA,CAAA,CAAC,CAAC;KACvD;IAEO,iBAAiB,GAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAA,CAAI,CAAC;AAC5C,aAAA,IAAI,CACH,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAC/B,GAAG,CAAC,CAAC,GAA6B,KAAI;YACpC,OAAO,GAAG,CAAC,IAAI,CAAC;SACjB,CAAC,CACH,CAAC;KACL;IAEM,oCAAoC,CAAC,UAAe,IAAI,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAG,EAAA,IAAI,CAAC,OAAO,0BAA0B,EACzC,IAAI,EACJ,OAAO,CACR,CAAC;KACH;AAEM,IAAA,kCAAkC,CAAC,IAAY,EAAE,OAAA,GAAe,IAAI,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,GAAG,IAAI,CAAC,OAAO,CAAA,kBAAA,EAAqB,IAAI,CAAE,CAAA,EAC1C,IAAI,EACJ,OAAO,CACR,CAAC;KACH;AACM,IAAA,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,GAAG,KAAK,EAAA;QAChE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,QAAA,CAAU,EAAE;YACpD,KAAK;YACL,WAAW;YACX,QAAQ;AACT,SAAA,CAAC,CAAC;KACJ;;2GAjFU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,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,CAAA;;;MCUY,aAAa,CAAA;IACxB,WAAmB,CAAA,aAA4B,EAAU,IAAgB,EAAA;QAAtD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAExD,QAAA,IAAA,CAAA,OAAO,GAAG,CAAG,EAAA,aAAa,CAAC,iBAAiB,SAAS,CAAC;QAE/D,IAAuB,CAAA,uBAAA,GAAkB,EAAE,CAAC;KAJ0B;AAM9E,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;KAC1C;AAED,IAAA,SAAS,CACP,SAAe,EACf,OAAa,EACb,KAAa,EACb,KAAqC,EACrC,WAAoB,EACpB,0BAAA,GAAmD,IAAI,EAAA;QAEvD,IAAI,CAAC,KAAK,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,0BAA0B,KAAK,IAAI,EAAE;AACvC,YAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;YAClC,0BAA0B,GAAG,EAAE,CAAC;AACjC,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAgD,EAAE,CAAC;QAEjE,IAAI,SAAS,GAAG,OAAO;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnB,YAAA,IAAI,OAAoC,CAAC;AAEzC,YAAA,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa;AAChG,gBAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;AAC/C,oBAAA,KAAK,EAAE,SAAS,CAAC,WAAW,EAAE;AAC9B,oBAAA,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE;AAC1B,oBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;oBAC1B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;AAC1D,oBAAA,WAAW,EAAE;AACX,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;AAClC,wBAAA,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM;AAC9B,wBAAA,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,WAAY;AAC1C,qBAAA;oBACD,MAAM,EAAE,GAAG,CAAC,MAAM;AACnB,iBAAA,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAChB,iBAAA,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,KAAK,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxE,gBAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAC5C,oBAAA,KAAK,EAAE,SAAS,CAAC,WAAW,EAAE;AAC9B,oBAAA,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE;AAC1B,oBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;oBAC1B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;AAC1D,oBAAA,WAAW,EAAE;AACX,wBAAA,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;AAClC,wBAAA,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;AAClC,wBAAA,gBAAgB,EAAE,GAAG,CAAC,WAAW,CAAC,gBAAgB;AAClD,wBAAA,gBAAgB,EAAE,GAAG,CAAC,WAAW,CAAC,gBAAgB;AAClD,wBAAA,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI;AAC3B,qBAAA;oBACD,MAAM,EAAE,GAAG,CAAC,MAAM;AACnB,iBAAA,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;;AAEnB,gBAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpC,oBAAA,KAAK,EAAE,SAAS,CAAC,WAAW,EAAE;AAC9B,oBAAA,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE;AAC1B,oBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;oBAC1B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;AAC1D,oBAAA,WAAW,EAAE,GAAG,CAAC,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,WAAW;AAClE,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,cAAc,EAAE,WAAW;oBAC3B,MAAM,EAAE,GAAG,CAAC,MAAM;AACnB,iBAAA,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAErB,YAAA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CACtC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,eAAe,CACrC,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,EACR,EAAE,EACF,IAAI;aACL,CAAC,CAAC,CACJ,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,OAAwC,KAAI;AAC/C,YAAA,0BAA0B,EAAE,OAAO,CAAC,CAAC,GAAG,KAAI;AAC1C,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAC1C,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CACrE,CAAC;AACJ,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC,EACF,SAAS,CAAC,CAAC,OAAwC,KAAI;AACrD,YAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClE,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;gBACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;AACzD,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACpB,aAAA;AAED,YAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;YAEvD,MAAM,OAAO,GAA8B,EAAE,CAAC;AAC9C,YAAA,uBAAuB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACtC,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;AACpD,gBAAA,IAAI,GAAG,EAAE;oBACP,GAAG,CAAC,WAAW,GAAG;AAChB,wBAAA,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;wBAChC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;qBAC5D,CAAC;AACF,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,oBAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACrB,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAC/B,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,EACP,WAAW,EACX,uBAAuB,CACxB,CAAC;AAEF,YAAA,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACpD,gBAAA,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,aAAC,CAAC,CAAC,CAAC;SACL,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CACZ,OAAsB,EACtB,KAAa,EACb,aAAsB,EAAA;QAEtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkC,IAAI,CAAC,OAAO,EAAE;AAClE,YAAA,MAAM,EAAE;gBACN,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK;gBACL,aAAa;AACd,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,gBAAgB,CACd,OAA4B,EAC5B,KAAa,EACb,aAAsB,EAAA;QAEtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,MAAA,CAAQ,EACvB;AACE,YAAA,MAAM,EAAE;gBACN,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK;gBACL,aAAa;gBACb,YAAY,EAAE,OAAO,CAAC,YAAY;AACnC,aAAA;AACF,SAAA,CACF,CAAC;KACH;AAED,IAAA,SAAS,CAAC,EAAU,EAAE,YAAY,GAAG,KAAK,EAAA;QACxC,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAmB,GAAG,IAAI,CAAC,OAAO,CAAG,EAAA,EAAE,EAAE,EAAE;YAC7C,MAAM,EAAE,EAAE,YAAY,EAAE;SACzB,CAAC;aACD,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;KACL;AAED,IAAA,oBAAoB,CAAC,EAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,aAAa,EAAE,CAAA,CAAE,EAAE,EAAE,CAAC,CAAC;KAC7D;AAED,IAAA,yBAAyB,CAAC,EAAU,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,UAAA,EAAa,EAAE,CAAA,CAAE,CAAC,CAAC;KAC3D;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;KACxD;IAED,eAAe,CAAC,WAAmB,EAAE,QAAgB,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CACtD,CAAC;KACH;IAED,YAAY,CACV,QAAgB,EAChB,WAAmB,EAAA;QAEnB,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CACF,CAAG,EAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CACtD;aACA,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;KACL;AAED,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmB,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAC/D;IAED,eAAe,CAAC,EAAU,EAAE,QAAiB,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA,CAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;KACtE;IAED,oBAAoB,CAAC,QAAgB,EAAE,SAA0B,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,OAAO,CAAG,EAAA,QAAQ,CAAY,UAAA,CAAA,EAAE,SAAS,EAAE;YACvE,MAAM,EAAE,EAAE,QAAQ,EAAE;AACrB,SAAA,CAAC,CAAC;KACJ;IAED,qBAAqB,CAAC,QAAgB,EAAE,SAA0B,EAAA;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,CAAA,EAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAA,WAAA,EAAc,SAAS,CAAC,EAAE,EAAE,EACtD,SAAS,CACV,CAAC;KACH;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA,EAAG,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;KAC7D;AAED,IAAA,uBAAuB,CAAC,OAAiB,EAAA;QACvC,MAAM,GAAG,GAAa,EAAE,CAAC;AACzB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AACpC,gBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,OAAO;AACR,aAAA;AAED,YAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;gBAC9C,GAAG,CAAC,IAAI,CAAC;oBACP,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/B,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,eAAe,CAAC,QAAgB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAG,EAAA,IAAI,CAAC,OAAO,aAAa,QAAQ,CAAA,CAAE,EACtC,EAAE,CACH,CAAC;KACH;AAEO,IAAA,WAAW,CAAC,MAAc,EAAA;QAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,IAAI,IAAI,CAAC,SAAS;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChE,SAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,gBAAgB;YACzB,MAAM,CAAC,gBAAgB,GAAG;gBACxB,GAAG,MAAM,CAAC,gBAAgB;AAC1B,gBAAA,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE,SAAS;sBACzC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC7C,sBAAE,IAAI;AACR,gBAAA,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO;sBACrC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC3C,sBAAE,IAAI;aACT,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,SAA0B,EAAA;QAC5C,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,OAAO;QAE5B,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAmB,CAAC;QAE/D,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAC9B,IAAI,CAAC,CAAC,IAAI;gBAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAoB,CAAC;AAC9D,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,oBAAoB,CAAC,SAA0B,EAAA;QACrD,IAAI,CAAC,SAAS,CAAC,SAAS;YAAE,OAAO;QACjC,SAAS,CAAC,SAAS,GAAG;YACpB,GAAG,SAAS,CAAC,SAAS;AACtB,YAAA,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS;kBACrC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;kBACvC,wBAAwB,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;AACzD,YAAA,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO;kBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;kBACrC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;SACvD,CAAC;KACH;;0GAlTU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACpBD,SAAe;AACb,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAEhB,IAAA,aAAa,EAAE;AACb,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,cAAc,EAAE,gBAAgB;AAChC,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,aAAa,EAAE,eAAe;AAC9B,QAAA,EAAE,EAAE,IAAI;AACT,KAAA;AAED,IAAA,2BAA2B,EAAE;AAC3B,QAAA,cAAc,EAAE,gBAAgB;AACjC,KAAA;AAED,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,eAAe,EAAE,4BAA4B;AAC7C,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,YAAY,EAAE,iCAAiC;AAC/C,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,eAAe,EAAE,mBAAmB;AACpC,YAAA,aAAa,EAAE,uBAAuB;AACtC,YAAA,cAAc,EAAE,qEAAqE;AACrF,YAAA,WAAW,EAAE,6BAA6B;AAC1C,YAAA,YAAY,EAAE,4BAA4B;AAC1C,YAAA,sBAAsB,EAAE,4CAA4C;AACpE,YAAA,0BAA0B,EAAE,2DAA2D;AACvF,YAAA,6BAA6B,EAAE,2CAA2C;AAC1E,YAAA,2BAA2B,EAAE,4CAA4C;AACzE,YAAA,oBAAoB,EAAE,0CAA0C;AAChE,YAAA,mBAAmB,EAAE,8BAA8B;AACnD,YAAA,yBAAyB,EAAE,oEAAoE;AAC/F,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,WAAW,EAAE,kBAAkB;AAC/B,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,mBAAmB,EAAE,gBAAgB;AACtC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,oBAAoB,EAAE,iCAAiC;AACvD,YAAA,wBAAwB,EAAE,4BAA4B;AACtD,YAAA,uBAAuB,EAAE,2BAA2B;AACpD,YAAA,6BAA6B,EAAE,kCAAkC;AACjE,YAAA,sBAAsB,EAAE,0BAA0B;AAClD,YAAA,qBAAqB,EAAE,4CAA4C;AACnE,YAAA,uBAAuB,EAAE,uBAAuB;AAChD,YAAA,8BAA8B,EAAE,wBAAwB;AACxD,YAAA,8BAA8B,EAAE,yCAAyC;AACzE,YAAA,2CAA2C,EAAE,2CAA2C;AACxF,YAAA,wBAAwB,EAAE,4CAA4C;AACtE,YAAA,2BAA2B,EAAE,iEAAiE;AAC9F,YAAA,wBAAwB,EAAE,uBAAuB;AACjD,YAAA,yCAAyC,EAAE,2BAA2B;AACtE,YAAA,4BAA4B,EAAE,yBAAyB;AACvD,YAAA,4BAA4B,EAAE,sCAAsC;AACpE,YAAA,sBAAsB,EAAE,2BAA2B;AACnD,YAAA,6BAA6B,EAAE,kCAAkC;AACjE,YAAA,wBAAwB,EAAE,6BAA6B;AACvD,YAAA,8BAA8B,EAAE,mCAAmC;AACnE,YAAA,0BAA0B,EAAE,qCAAqC;AACjE,YAAA,4BAA4B,EAAE,uCAAuC;AACrE,YAAA,kCAAkC,EAAE,6CAA6C;AACjF,YAAA,iCAAiC,EAAE,4CAA4C;AAC/E,YAAA,sBAAsB,EAAE,4CAA4C;AACpE,YAAA,2BAA2B,EAAE,uDAAuD;AACpF,YAAA,iBAAiB,EAAE,uCAAuC;AAC1D,YAAA,oBAAoB,EAAE,qBAAqB;AAC3C,YAAA,2BAA2B,EAAE,oCAAoC;AACjE,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,oBAAoB,EAAE,wBAAwB;AAC9C,YAAA,sBAAsB,EAAE,4BAA4B;AACpD,YAAA,qBAAqB,EAAE,0BAA0B;AACjD,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,aAAa,EAAE,kBAAkB;AACjC,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,WAAW,EAAE,cAAc;AAC3B,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,kBAAkB,EAAE,uBAAuB;AAC3C,YAAA,cAAc,EAAE,mBAAmB;AACnC,YAAA,gBAAgB,EAAE,oBAAoB;AACtC,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,yBAAyB,EAAE,6BAA6B;AACxD,YAAA,yBAAyB,EAAE,8BAA8B;AACzD,YAAA,wBAAwB,EAAE,mCAAmC;AAC7D,YAAA,eAAe,EAAE,qBAAqB;AACtC,YAAA,kBAAkB,EAAE,4DAA4D;AAChF,YAAA,gCAAgC,EAAE,iCAAiC;AACnE,YAAA,sBAAsB,EAAE,2BAA2B;AACnD,YAAA,iBAAiB,EAAE,oBAAoB;AACvC,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,mBAAmB,EAAE,uBAAuB;AAC5C,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,iBAAiB,EAAE,wBAAwB;AAC3C,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,cAAc,EAAE,sBAAsB;AACtC,YAAA,gBAAgB,EAAE,sBAAsB;AACxC,YAAA,iBAAiB,EAAE,8BAA8B;AACjD,YAAA,oBAAoB,EAAE,qCAAqC;AAC3D,YAAA,gBAAgB,EAAE,iCAAiC;AACnD,YAAA,wBAAwB,EAAE,qFAAqF;AAC/G,YAAA,yBAAyB,EAAE,6DAA6D;AACxF,YAAA,iBAAiB,EAAE,uDAAuD;AAC1E,YAAA,YAAY,EAAE,mCAAmC;AACjD,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,oBAAoB,EAAE,uBAAuB;AAC7C,YAAA,mBAAmB,EAAE,uBAAuB;AAC5C,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,yBAAyB,EAAE,8BAA8B;AACzD,YAAA,sBAAsB,EAAE,iCAAiC;AACzD,YAAA,8BAA8B,EAAE,sEAAsE;AACvG,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,uBAAuB,EAAE,2BAA2B;AACpD,YAAA,uBAAuB,EAAE,2BAA2B;AACpD,YAAA,eAAe,EAAE,oCAAoC;AACrD,YAAA,gBAAgB,EAAE,wDAAwD;AAC1E,YAAA,QAAQ,EAAE,gCAAgC;AAC1C,YAAA,0BAA0B,EACxB,yCAAyC;AAC3C,YAAA,0BAA0B,EACxB,0CAA0C;AAC5C,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,wBAAwB,EAAE,uCAAuC;AACjE,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,mBAAmB,EAAE,+CAA+C;AACpE,YAAA,sBAAsB,EAAE,qBAAqB;AAC7C,YAAA,0BAA0B,EAAE,0BAA0B;AACtD,YAAA,gBAAgB,EAAE,oBAAoB;AACtC,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,0BAA0B,EAAE,+BAA+B;AAC3D,YAAA,2BAA2B,EAAE,2BAA2B;AACxD,YAAA,cAAc,EAAE,2BAA2B;AAC3C,YAAA,eAAe,EAAE,mBAAmB;AACpC,YAAA,aAAa,EAAE,iCAAiC;AAChD,YAAA,YAAY,EAAE,uBAAuB;AACrC,YAAA,YAAY,EAAE,gCAAgC;AAC9C,YAAA,uBAAuB,EAAE,kCAAkC;AAC3D,YAAA,wBAAwB,EAAE,0CAA0C;AACpE,YAAA,wBAAwB,EAAE,yCAAyC;AACnE,YAAA,2BAA2B,EAAE,8CAA8C;AAC3E,YAAA,0BAA0B,EAAE,4CAA4C;AACxE,YAAA,sBAAsB,EAAE,mCAAmC;AAC3D,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,qBAAqB,EAAE,qCAAqC;AAC5D,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,cAAc,EAAE,4BAA4B;AAC5C,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,iBAAiB,EAAE,sBAAsB;AACzC,YAAA,qBAAqB,EAAE,kDAAkD;AACzE,YAAA,OAAO,EAAE,+BAA+B;AACxC,YAAA,mBAAmB,EAAE,uCAAuC;AAC5D,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,WAAW,EAAE,2CAA2C;AACzD,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,kBAAkB,EAAE,iBAAiB;AACrC,YAAA,cAAc,EAAE,uBAAuB;AACvC,YAAA,gBAAgB,EAAE,sBAAsB;AACxC,YAAA,iBAAiB,EAAE,8BAA8B;AACjD,YAAA,oBAAoB,EAAE,qCAAqC;AAC3D,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,aAAa,EAAE,mBAAmB;AAClC,YAAA,cAAc,EAAE,kEAAkE;AAClF,YAAA,WAAW,EAAE,iCAAiC;AAC9C,YAAA,YAAY,EAAE,gCAAgC;AAC9C,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,0BAA0B,EAAE,2DAA2D;AACvF,YAAA,6BAA6B,EAAE,kCAAkC;AACjE,YAAA,wCAAwC,EAAE,4CAA4C;AACtF,YAAA,oBAAoB,EAAE,8CAA8C;AACpE,YAAA,mBAAmB,EAAE,6BAA6B;AAClD,YAAA,8BAA8B,EAAE,8EAA8E;AAC9G,YAAA,yBAAyB,EAAE,yEAAyE;AACpG,YAAA,eAAe,EAAE,mBAAmB;AACpC,YAAA,sBAAsB,EAAE,kDAAkD;AAC1E,YAAA,kBAAkB,EAAE,2BAA2B;AAC/C,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,cAAc,EAAE,uBAAuB;AACvC,YAAA,iBAAiB,EAAE,iBAAiB;AACpC,YAAA,WAAW,EAAE,kBAAkB;AAC/B,YAAA,gBAAgB,EAAE,yBAAyB;AAC3C,YAAA,aAAa,EAAE,gCAAgC;AAC/C,YAAA,cAAc,EAAE,iCAAiC;AACjD,YAAA,gBAAgB,EAAE,mCAAmC;AACrD,YAAA,cAAc,EAAE,4BAA4B;AAC5C,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,mBAAmB,EAAE,uBAAuB;AAC7C,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,kBAAkB,EAAE,kBAAkB;AACtC,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,cAAc,EAAE,qBAAqB;AACrC,YAAA,qBAAqB,EAAE,2BAA2B;AAClD,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,mBAAmB,EAAE,sCAAsC;AAC3D,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA;AACF,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,WAAW,EAAE,cAAc;AAC5B,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,QAAQ,EAAE,QAAQ;AACnB,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;AACD,IAAA,qBAAqB,EACnB,wHAAwH;AAC1H,IAAA,UAAU,EAAE;AACV,QAAA,mBAAmB,EAAE,gBAAgB;AACrC,QAAA,YAAY,EAAE,UAAU;AACxB,QAAA,mBAAmB,EAAE,+CAA+C;AACpE,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,YAAY,EAAE,mBAAmB;AAClC,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,kBAAkB;AAC1B,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,oBAAoB;AAC5B,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,eAAe,EAAE,YAAY;AAC7B,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;AACD,IAAA,qBAAqB,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE;AACnD,IAAA,oBAAoB,EAAE;AACpB,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,WAAW,EAAE,0BAA0B;AACvC,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,iBAAiB,EAAE,sBAAsB;AAC1C,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,iBAAiB,EAAE,gBAAgB;AACnC,QAAA,eAAe,EAAE,aAAa;AAC/B,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,CAAC,EAAE,GAAG;AACP,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,OAAO,EAAE,0BAA0B;AACnC,QAAA,MAAM,EAAE,QAAQ;AACjB,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,aAAa,EAAE,mBAAmB;AACnC,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,QAAQ,EAAE,mBAAmB;AAC7B,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,IAAI,EAAE,2EAA2E;AAClF,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,KAAK,EAAE,+BAA+B;AACtC,QAAA,IAAI,EAAE,yHAAyH;AAChI,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,KAAK,EAAE,gEAAgE;AACxE,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,aAAa,EAAE,+CAA+C;AAC/D,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,eAAe,EAAE,4BAA4B;AAC7C,QAAA,gBAAgB,EAAE,8BAA8B;AACjD,KAAA;AACD,IAAA,8BAA8B,EAAE;AAC9B,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,YAAY,EAAE,yBAAyB;AACvC,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,oDAAoD;AAC3D,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,IAAI,EAAE,gBAAgB;AACvB,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,gBAAgB,EAAE,YAAY;AAC9B,QAAA,mBAAmB,EAAE,qCAAqC;AAC1D,QAAA,aAAa,EAAE,yCAAyC;AACzD,KAAA;AACD,IAAA,+BAA+B,EAAE;AAC/B,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,GAAG,EAAE,KAAK;AACX,KAAA;AACD,IAAA,sBAAsB,EAAE;AACtB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,GAAG,EAAE,KAAK;AACX,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,6EAA6E;AACnF,QAAA,WAAW,EAAE,oDAAoD;AACjE,QAAA,YAAY,EAAE,+CAA+C;AAC7D,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,QAAQ,EAAE,UAAU;AACrB,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,QAAQ,EAAE,qBAAqB;AAC/B,QAAA,QAAQ,EAAE,yBAAyB;AACnC,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,QAAQ,EAAE,yBAAyB;AACnC,QAAA,eAAe,EAAE,kCAAkC;AACnD,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,gBAAgB,EAAE,iCAAiC;AACnD,QAAA,YAAY,EAAE,qDAAqD;AACnE,QAAA,SAAS,EAAE,yCAAyC;AACrD,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,wBAAwB;AAClC,QAAA,KAAK,EAAE,sCAAsC;AAC9C,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,aAAa,EAAE,wBAAwB;AACvC,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,cAAc;AACtB,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,MAAM,EAAE,gBAAgB;AACzB,KAAA;AACD,IAAA,4BAA4B,EAAE;AAC5B,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,oBAAoB,EAAE,sCAAsC;AAC7D,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,eAAe,EAAE,kBAAkB;AACnC,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,oBAAoB,EAAE,4BAA4B;AAClD,QAAA,eAAe,EAAE,aAAa;AAC9B,QAAA,aAAa,EAAE,WAAW;AAC1B,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,gBAAgB,EAAE,kBAAkB;AACpC,QAAA,iBAAiB,EAAE,mBAAmB;AACtC,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,yBAAyB,EAAE,0BAA0B;AACrD,QAAA,0BAA0B,EAAE,2BAA2B;AACvD,QAAA,mBAAmB,EAAE,2BAA2B;AAChD,QAAA,oBAAoB,EAAE,oBAAoB;AAC1C,QAAA,qBAAqB,EAAE,sBAAsB;AAC9C,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,EAAE,EAAE,sDAAsD;AAC1D,QAAA,MAAM,EAAE,uCAAuC;AAC/C,QAAA,QAAQ,EAAE,iEAAiE;AAC3E,QAAA,QAAQ,EAAE,2BAA2B;AACrC,QAAA,KAAK,EAAE,oDAAoD;AAC3D,QAAA,OAAO,EAAE,kCAAkC;AAC3C,QAAA,IAAI,EAAE,4DAA4D;AAClE,QAAA,gBAAgB,EAAE,0BAA0B;AAC5C,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,iDAAiD;AACtD,QAAA,GAAG,EAAE,yBAAyB;AAC9B,QAAA,GAAG,EAAE,yBAAyB;AAC9B,QAAA,GAAG,EAAE,4BAA4B;AACjC,QAAA,KAAK,EAAE,6CAA6C;AACpD,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,UAAU,EAAE,eAAe;AAC5B,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,KAAK,EAAE,eAAe;AACvB,KAAA;CACF;;ACrfD,SAAe;AACb,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,cAAc;AACtB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,MAAM,EAAE,QAAQ;AAEhB,IAAA,aAAa,EAAE;AACb,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,cAAc,EAAE,mBAAmB;AACnC,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,EAAE,EAAE,KAAK;AACV,KAAA;AAED,IAAA,2BAA2B,EAAE;AAC3B,QAAA,cAAc,EAAE,mBAAmB;AACpC,KAAA;AAED,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,oBAAoB;AAClC,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,aAAa,EAAE,mBAAmB;AAClC,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,eAAe,EAAE,uBAAuB;AACxC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,cAAc,EAAE,kFAAkF;AAClG,YAAA,WAAW,EAAE,uCAAuC;AACpD,YAAA,YAAY,EAAE,qCAAqC;AACnD,YAAA,sBAAsB,EAAE,yDAAyD;AACjF,YAAA,0BAA0B,EAAE,iFAAiF;AAC7G,YAAA,6BAA6B,EAAE,gDAAgD;AAC/E,YAAA,2BAA2B,EAAE,qDAAqD;AAClF,YAAA,oBAAoB,EAAE,qDAAqD;AAC3E,YAAA,mBAAmB,EAAE,mCAAmC;AACxD,YAAA,yBAAyB,EAAE,uEAAuE;AAClG,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,WAAW,EAAE,gCAAgC;AAC7C,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,mBAAmB,EAAE,gBAAgB;AACtC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,oBAAoB,EAAE,wCAAwC;AAC9D,YAAA,wBAAwB,EAAE,4BAA4B;AACtD,YAAA,uBAAuB,EAAE,8BAA8B;AACvD,YAAA,6BAA6B,EAAE,oCAAoC;AACnE,YAAA,sBAAsB,EAAE,6BAA6B;AACrD,YAAA,qBAAqB,EAAE,0DAA0D;AACjF,YAAA,uBAAuB,EAAE,2BAA2B;AACpD,YAAA,8BAA8B,EAAE,0BAA0B;AAC1D,YAAA,8BAA8B,EAAE,kDAAkD;AAClF,YAAA,2CAA2C,EAAE,oDAAoD;AACjG,YAAA,wBAAwB,EAAE,kEAAkE;AAC5F,YAAA,2BAA2B,EAAE,4EAA4E;AACzG,YAAA,wBAAwB,EAAE,2BAA2B;AACrD,YAAA,yCAAyC,EAAE,mCAAmC;AAC9E,YAAA,4BAA4B,EAAE,iCAAiC;AAC/D,YAAA,4BAA4B,EAAE,wCAAwC;AACtE,YAAA,sBAAsB,EAAE,8BAA8B;AACtD,YAAA,6BAA6B,EAAE,qCAAqC;AACpE,YAAA,wBAAwB,EAAE,gCAAgC;AAC1D,YAAA,8BAA8B,EAAE,sCAAsC;AACtE,YAAA,0BAA0B,EAAE,qDAAqD;AACjF,YAAA,4BAA4B,EAAE,uDAAuD;AACrF,YAAA,kCAAkC,EAAE,6DAA6D;AACjG,YAAA,iCAAiC,EAAE,4DAA4D;AAC/F,YAAA,sBAAsB,EAAE,6CAA6C;AACrE,YAAA,2BAA2B,EAAE,qDAAqD;AAClF,YAAA,iBAAiB,EAAE,0EAA0E;AAC7F,YAAA,oBAAoB,EAAE,uBAAuB;AAC7C,YAAA,2BAA2B,EAAE,4DAA4D;AACzF,YAAA,OAAO,EAAE,kCAAkC;AAC5C,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,YAAY,EAAE,kBAAkB;AAChC,YAAA,oBAAoB,EAAE,uBAAuB;AAC7C,YAAA,sBAAsB,EAAE,8BAA8B;AACtD,YAAA,qBAAqB,EAAE,iCAAiC;AACxD,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,aAAa,EAAE,sBAAsB;AACrC,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,YAAY,EAAE,kBAAkB;AAChC,YAAA,WAAW,EAAE,kBAAkB;AAC/B,YAAA,WAAW,EAAE,oCAAoC;AACjD,YAAA,kBAAkB,EAAE,oCAAoC;AACxD,YAAA,cAAc,EAAE,sCAAsC;AACtD,YAAA,gBAAgB,EAAE,8BAA8B;AAChD,YAAA,iBAAiB,EAAE,6BAA6B;AAChD,YAAA,yBAAyB,EAAE,iCAAiC;AAC5D,YAAA,yBAAyB,EAAE,mCAAmC;AAC9D,YAAA,wBAAwB,EAAE,yCAAyC;AACnE,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,kBAAkB,EAAE,oEAAoE;AACxF,YAAA,gCAAgC,EAAE,uCAAuC;AACzE,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,mBAAmB,EAAE,2BAA2B;AAChD,YAAA,OAAO,EAAE,eAAe;AACzB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,aAAa,EAAE,qCAAqC;AACpD,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,iBAAiB,EAAE,sCAAsC;AACzD,YAAA,YAAY,EAAE,kBAAkB;AAChC,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,gBAAgB,EAAE,oCAAoC;AACtD,YAAA,iBAAiB,EAAE,+CAA+C;AAClE,YAAA,oBAAoB,EAAE,8CAA8C;AACpE,YAAA,gBAAgB,EAAE,kCAAkC;AACpD,YAAA,wBAAwB,EAAE,qGAAqG;AAC/H,YAAA,yBAAyB,EAAE,mEAAmE;AAC9F,YAAA,iBAAiB,EAAE,6DAA6D;AAChF,YAAA,YAAY,EAAE,wCAAwC;AACtD,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,oBAAoB,EAAE,uBAAuB;AAC7C,YAAA,mBAAmB,EAAE,2BAA2B;AAChD,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,yBAAyB,EAAE,4CAA4C;AACvE,YAAA,sBAAsB,EAAE,gCAAgC;AACxD,YAAA,8BAA8B,EAAE,oFAAoF;AACrH,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,uBAAuB,EAAE,+BAA+B;AACxD,YAAA,uBAAuB,EAAE,6BAA6B;AACtD,YAAA,eAAe,EAAE,oDAAoD;AACrE,YAAA,gBAAgB,EAAE,+DAA+D;AACjF,YAAA,QAAQ,EAAE,2CAA2C;AACrD,YAAA,0BAA0B,EACxB,qDAAqD;AACvD,YAAA,0BAA0B,EACxB,oDAAoD;AACtD,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,wBAAwB,EAAE,8CAA8C;AACxE,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,mBAAmB,EAAE,iDAAiD;AACtE,YAAA,sBAAsB,EAAE,wBAAwB;AAChD,YAAA,0BAA0B,EAAE,gCAAgC;AAC5D,YAAA,gBAAgB,EAAE,6BAA6B;AAC/C,YAAA,iBAAiB,EAAE,gDAAgD;AACnE,YAAA,0BAA0B,EAAE,8CAA8C;AAC1E,YAAA,2BAA2B,EAAE,uDAAuD;AACpF,YAAA,cAAc,EAAE,4CAA4C;AAC5D,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,aAAa,EAAE,gDAAgD;AAC/D,YAAA,YAAY,EAAE,sCAAsC;AACpD,YAAA,YAAY,EAAE,sDAAsD;AACpE,YAAA,uBAAuB,EAAE,4CAA4C;AACrE,YAAA,wBAAwB,EAAE,yDAAyD;AACnF,YAAA,wBAAwB,EAAE,qDAAqD;AAC/E,YAAA,2BAA2B,EAAE,6DAA6D;AAC1F,YAAA,0BAA0B,EAAE,iFAAiF;AAC7G,YAAA,sBAAsB,EAAE,4CAA4C;AACpE,YAAA,aAAa,EAAE,8BAA8B;AAC7C,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,eAAe,EAAE,8BAA8B;AAC/C,YAAA,qBAAqB,EAAE,mDAAmD;AAC1E,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,cAAc,EAAE,4CAA4C;AAC5D,YAAA,aAAa,EAAE,6BAA6B;AAC5C,YAAA,iBAAiB,EAAE,6BAA6B;AAChD,YAAA,qBAAqB,EAAE,0DAA0D;AACjF,YAAA,OAAO,EAAE,kCAAkC;AAC3C,YAAA,mBAAmB,EAAE,4CAA4C;AACjE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,WAAW,EAAE,8DAA8D;AAC5E,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,gBAAgB,EAAE,oCAAoC;AACtD,YAAA,iBAAiB,EAAE,+CAA+C;AAClE,YAAA,oBAAoB,EAAE,8CAA8C;AACpE,YAAA,aAAa,EAAE,qCAAqC;AACpD,YAAA,YAAY,EAAE,oBAAoB;AAClC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,cAAc,EAAE,kFAAkF;AAClG,YAAA,WAAW,EAAE,uCAAuC;AACpD,YAAA,YAAY,EAAE,qCAAqC;AACnD,YAAA,sBAAsB,EAAE,yDAAyD;AACjF,YAAA,0BAA0B,EAAE,iFAAiF;AAC7G,YAAA,6BAA6B,EAAE,gDAAgD;AAC/E,YAAA,wCAAwC,EAAE,8EAA8E;AACxH,YAAA,oBAAoB,EAAE,oDAAoD;AAC1E,YAAA,mBAAmB,EAAE,mCAAmC;AACxD,YAAA,8BAA8B,EAAE,4FAA4F;AAC5H,YAAA,yBAAyB,EAAE,uEAAuE;AAClG,YAAA,eAAe,EAAE,qBAAqB;AACtC,YAAA,sBAAsB,EAAE,4EAA4E;AACpG,YAAA,kBAAkB,EAAE,yCAAyC;AAC7D,YAAA,iBAAiB,EAAE,qCAAqC;AACxD,YAAA,cAAc,EAAE,gCAAgC;AAChD,YAAA,iBAAiB,EAAE,mBAAmB;AACtC,YAAA,WAAW,EAAE,gCAAgC;AAC7C,YAAA,gBAAgB,EAAE,mCAAmC;AACrD,YAAA,aAAa,EAAE,0CAA0C;AACzD,YAAA,cAAc,EAAE,uDAAuD;AACvE,YAAA,gBAAgB,EAAE,mDAAmD;AACrE,YAAA,cAAc,EAAE,iCAAiC;AACjD,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,mBAAmB,EAAE,2BAA2B;AACjD,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,YAAY,EAAE,oBAAoB;AAClC,YAAA,kBAAkB,EAAE,mBAAmB;AACvC,YAAA,oBAAoB,EAAE,mCAAmC;AACzD,YAAA,iBAAiB,EAAE,mCAAmC;AACtD,YAAA,gBAAgB,EAAE,6CAA6C;AAC/D,YAAA,cAAc,EAAE,qCAAqC;AACrD,YAAA,qBAAqB,EAAE,mCAAmC;AAC1D,YAAA,OAAO,EAAE,kCAAkC;AAC3C,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,mBAAmB,EAAE,4CAA4C;AACjE,YAAA,OAAO,EAAE,WAAW;AACrB,SAAA;AACF,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,WAAW,EAAE,cAAc;AAC5B,KAAA;AAED,IAAA,mBAAmB,EAAE;AACnB,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,QAAQ,EAAE,kBAAkB;AAC5B,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,QAAQ,EAAE,eAAe;AAC1B,KAAA;AAED,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,GAAG,EAAE,aAAa;AAClB,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACD,IAAA,qBAAqB,EACnB,mIAAmI;AACrI,IAAA,UAAU,EAAE;AACV,QAAA,mBAAmB,EAAE,WAAW;AAChC,QAAA,YAAY,EAAE,aAAa;AAC3B,QAAA,mBAAmB,EAAE,kDAAkD;AACvE,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,YAAY,EAAE,iBAAiB;AAChC,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,oBAAoB;AAC5B,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,0BAA0B;AAClC,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,eAAe,EAAE,YAAY;AAC7B,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;AACD,IAAA,qBAAqB,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE;AAC3D,IAAA,oBAAoB,EAAE;AACpB,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,WAAW,EAAE,0BAA0B;AACvC,QAAA,cAAc,EAAE,gBAAgB;AAChC,QAAA,iBAAiB,EAAE,2BAA2B;AAC/C,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,iBAAiB,EAAE,eAAe;AAClC,QAAA,eAAe,EAAE,aAAa;AAC/B,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,CAAC,EAAE,GAAG;AACP,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,KAAK,EAAE,mBAAmB;AAC3B,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,OAAO,EAAE,uCAAuC;AAChD,QAAA,MAAM,EAAE,eAAe;AACxB,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,KAAK,EAAE,4BAA4B;AACnC,QAAA,aAAa,EAAE,kCAAkC;AAClD,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,YAAY;AACpB,QAAA,QAAQ,EAAE,qBAAqB;AAC/B,QAAA,YAAY,EAAE,gBAAgB;AAC9B,QAAA,YAAY,EAAE,iBAAiB;AAC/B,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,IAAI,EAAE,wFAAwF;AAC/F,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,KAAK,EAAE,qCAAqC;AAC5C,QAAA,IAAI,EAAE,sHAAsH;AAC7H,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,KAAK,EAAE,kEAAkE;AAC1E,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,aAAa,EAAE,yDAAyD;AACzE,KAAA;AAED,IAAA,2BAA2B,EAAE;AAC3B,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,OAAO,EAAE,eAAe;AACzB,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,eAAe,EAAE,kCAAkC;AACnD,QAAA,gBAAgB,EAAE,qCAAqC;AACxD,KAAA;AACD,IAAA,8BAA8B,EAAE;AAC9B,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,YAAY,EAAE,mCAAmC;AACjD,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,8DAA8D;AACrE,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,IAAI,EAAE,kBAAkB;AACzB,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,gBAAgB,EAAE,YAAY;AAC9B,QAAA,mBAAmB,EAAE,qCAAqC;AAC1D,QAAA,aAAa,EAAE,8CAA8C;AAC9D,KAAA;AACD,IAAA,+BAA+B,EAAE;AAC/B,QAAA,KAAK,EAAE,uBAAuB;AAC9B,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,sBAAsB,EAAE;AACtB,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,KAAK,EAAE,sBAAsB;AAC7B,QAAA,IAAI,EAAE,iFAAiF;AACvF,QAAA,WAAW,EAAE,uDAAuD;AACpE,QAAA,YAAY,EAAE,+DAA+D;AAC7E,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,QAAQ,EAAE,SAAS;AACpB,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,QAAQ,EAAE,2BAA2B;AACrC,QAAA,QAAQ,EAAE,oCAAoC;AAC9C,QAAA,QAAQ,EAAE,+BAA+B;AACzC,QAAA,QAAQ,EAAE,yBAAyB;AACnC,QAAA,QAAQ,EAAE,8BAA8B;AACxC,QAAA,eAAe,EAAE,mCAAmC;AACpD,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,gBAAgB,EAAE,sCAAsC;AACxD,QAAA,YAAY,EAAE,kEAAkE;AAChF,QAAA,SAAS,EAAE,0CAA0C;AACtD,KAAA;AACD,IAAA,uBAAuB,EAAE;AACvB,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,QAAQ,EAAE,6BAA6B;AACvC,QAAA,KAAK,EAAE,uDAAuD;AAC/D,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,KAAK,EAAE,sBAAsB;AAC7B,QAAA,aAAa,EAAE,+BAA+B;AAC9C,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE,qBAAqB;AAC7B,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,MAAM,EAAE,sBAAsB;AAC/B,KAAA;AACD,IAAA,4BAA4B,EAAE;AAC5B,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,oBAAoB,EAAE,iDAAiD;AACxE,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,mBAAmB;AAC7B,QAAA,UAAU,EAAE,mBAAmB;AAC/B,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,eAAe,EAAE,2BAA2B;AAC5C,QAAA,SAAS,EAAE,8BAA8B;AACzC,QAAA,oBAAoB,EAAE,6CAA6C;AACnE,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,aAAa,EAAE,cAAc;AAC7B,QAAA,WAAW,EAAE,kBAAkB;AAC/B,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,gBAAgB,EAAE,yBAAyB;AAC3C,QAAA,iBAAiB,EAAE,yBAAyB;AAC5C,QAAA,KAAK,EAAE,yBAAyB;AAChC,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,OAAO;AACd,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,yBAAyB,EAAE,oCAAoC;AAC/D,QAAA,0BAA0B,EAAE,qCAAqC;AACjE,QAAA,mBAAmB,EAAE,oCAAoC;AACzD,QAAA,oBAAoB,EAAE,oCAAoC;AAC1D,QAAA,qBAAqB,EAAE,8BAA8B;AACtD,KAAA;AACD,IAAA,yBAAyB,EAAE;AACzB,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,EAAE,EAAE,yDAAyD;AAC7D,QAAA,MAAM,EAAE,yCAAyC;AACjD,QAAA,QAAQ,EAAE,0EAA0E;AACpF,QAAA,QAAQ,EAAE,6BAA6B;AACvC,QAAA,KAAK,EAAE,4DAA4D;AACnE,QAAA,OAAO,EAAE,oCAAoC;AAC7C,QAAA,IAAI,EAAE,oEAAoE;AAC1E,QAAA,gBAAgB,EAAE,0BAA0B;AAC5C,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,oDAAoD;AACzD,QAAA,GAAG,EAAE,yBAAyB;AAC9B,QAAA,GAAG,EAAE,yBAAyB;AAC9B,QAAA,GAAG,EAAE,4BAA4B;AACjC,QAAA,KAAK,EAAE,+CAA+C;AACtD,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,UAAU,EAAE,uBAAuB;AACpC,KAAA;AACD,IAAA,iCAAiC,EAAE;AACjC,QAAA,OAAO,EAAE,2BAA2B;AACpC,QAAA,KAAK,EAAE,yBAAyB;AACjC,KAAA;CACF;;AC9eK,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;AAC5D,IAAA,WAAA,CAAoB,gBAAkC,EAAA;AACpD,QAAA,KAAK,EAAE,CAAC;QADU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QA0B7C,IAAa,CAAA,aAAA,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc,KAAY;AAClF,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB;kBAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;kBACjD,IAAI,CAAC;AACT,YAAA,IAAI,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACjC,aAAA;YACD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7B,YAAA,MAAM,UAAU,GACd,IAAI,GAAG,QAAQ,GAAG,MAAM;AACtB,kBAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ;AAC/C,kBAAE,IAAI,GAAG,QAAQ,CAAC;AAEtB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzD,YAAA,OAAO,UAAU,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACrE,SAAC,CAAC;QAvCA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAChD,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IACD,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACjD,0BAA0B,CAC3B,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpD,8BAA8B,CAC/B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAChD,yBAAyB,CAC1B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAChD,yBAAyB,CAC1B,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACpD,6BAA6B,CAC9B,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;AAmBD,IAAA,sBAAsB,CAAC,SAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAElC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAChD,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;qHApDU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,2BAA2B,CAAA;AACtC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAAI;AAEnD,IAAA,eAAe,CAAC,YAAiB,EAAA;QACtC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxC,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACrE,SAAC,CAAC,CAAC;KACJ;;wHAPU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;2FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACUD,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;MAkBxC,6BAA6B,CAAA;AACxC,IAAA,WAAA,CAAoB,kBAA+C,EAAA;QAA/C,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA6B;QACjE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KACrD;;0HAHU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,gCAbtC,kBAAkB;QAClB,mBAAmB;QACnB,eAAe;QACf,gBAAgB;QAChB,eAAe,CAAA,EAAA,CAAA,CAAA;AASN,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,EAP7B,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,wBAAwB;AACnC,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CAZC,eAAe;QACf,kBAAkB;QAClB,mBAAmB;QACnB,eAAe;QACf,gBAAgB;QAChB,eAAe,CAAA,EAAA,CAAA,CAAA;2FASN,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhBzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,kBAAkB;wBAClB,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,eAAe;AAChB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;MCrBY,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAAI;IAE1D,SAAS,CACP,GAAqB,EACrB,IAAiB,EAAA;AAEjB,QAAA,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC;AAClC,YAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CACtB,iBAAiB,EACjB,IAAI,CAAC,gBAAgB,CAAC,WAAW,IAAI,IAAI,CAC1C;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;KACvC;;4HAfU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAA/B,+BAA+B,EAAA,CAAA,CAAA;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;;;ICVC,YAMX;AAND,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,WAAA,CAAA,WAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACV,CAAC,EANW,WAAW,KAAX,WAAW,GAMtB,EAAA,CAAA,CAAA;;MCDY,QAAQ,CAAA;IAkBnB,WAAY,CAAA,IAAkB,EAAE,MAAgB,EAAE,IAAU,EAAE,KAAa,EAAE,kBAAA,GAA8B,KAAK,EAAA;QAThH,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AASlC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AAC7C,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAClD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,EAAE,mBAAmB,CAAC;AACrD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,sBAAsB,CAAC;AAC3D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,CAAC;QAEjD,IAAI,CAAC,UAAU,GAAG;YAChB,KAAK;AACL,YAAA,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK;SACjF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM;YACpC,OAAO;AAET,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG;YACZ,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,OAAO,EAAE,IAAI;SACI,CAAC;QAEpB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC5C,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,gCAAgC,CAAA;AAC9C,SAAA;AAED,QAAA,IAAI,OAAO,GAAG,CAAgB,aAAA,EAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAClF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW;YACzB,OAAO,GAAG,CAAG,EAAA,OAAO,CAAmB,gBAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,CAAE,CAAC;AACnE,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;YAClB,OAAO,GAAG,CAAG,EAAA,OAAO,CAAY,SAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YACpB,OAAO,GAAG,CAAG,EAAA,OAAO,CAAc,WAAA,EAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;KAC/B;AAEM,IAAA,MAAM,CAAC,WAAyB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;KACtC;AAEM,IAAA,SAAS,CAAC,KAAa,EAAE,SAAe,EAAE,MAAc,EAAA;AAC7D,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS;YAC5B,OAAO;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;QAExC,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAA,MAAM,kBAAkB,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QACrG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAa,UAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB,cAAA,EAAA,kBAAkB,EAAE,CAAC;KACvH;AACF;;MCvFY,6BAA6B,CAAA;AAL1C,IAAA,WAAA,GAAA;QAMW,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAE7B,KAAA;;0HAHY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,kHCP1C,mNAKA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDEa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,mNAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,CAAA;8BAK7B,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEDK,+BAA+B,CAAA;AAQ1C,IAAA,WAAA,CACS,SAAwD,EAAA;QAAxD,IAAS,CAAA,SAAA,GAAT,SAAS,CAA+C;QAPhD,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;AASzC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,SAAS,CAAC;AACrC,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE;AAC1B,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,gBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AACzB,gBAAA,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;aACrC,CAAC;AACH,SAAA,CAAC,CAAC;KACJ;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK;YAC/B,OAAO;AACT,QAAA,MAAM,MAAM,GAAkB;AAC5B,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI;SACxC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC9B;;4HA7BU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,oDCR5C,u/BA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDvBa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,SAAS;;;;MEGG,sBAAsB,CAAA;AAQjC,IAAA,WAAA,CACS,SAA+C,EAC9C,EAAe,EACE,IAAuB,EAAA;QAFzC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsC;QAC9C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QARlB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAEnB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAO,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,SAAA,CAAC,CAAC;AAOD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,SAAA;KACF;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;YACzB,OAAO;AAET,QAAA,MAAM,IAAI,GAA0B;YAClC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;SACvC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC5B;;AA3BU,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,6EAWvB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAXd,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,oDCRnC,45CAyCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,EAAAQ,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDjCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;;;0BAcL,MAAM;2BAAC,eAAe,CAAA;;;MEZd,yBAAyB,CAAA;IAIpC,WACS,CAAA,SAAkD,EAChC,IAA4B,EAAA;QAD9C,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyC;AAGzD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KACvB;;AATU,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,gDAM1B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AANd,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,oDCPtC,k7BA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrBa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;;;0BASL,MAAM;2BAAC,eAAe,CAAA;;;MENd,gCAAgC,CAAA;;6HAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,gCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,qECP7C,wEAGA,EAAA,MAAA,EAAA,CAAA,uIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDIa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;+BACE,+BAA+B,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,uIAAA,CAAA,EAAA,CAAA;;;MEI9B,4BAA4B,CAAA;;yHAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,yGCPzC,sIAIA,EAAA,MAAA,EAAA,CAAA,+RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,sIAAA,EAAA,MAAA,EAAA,CAAA,+RAAA,CAAA,EAAA,CAAA;8BAK5B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEFK,iBAAiB,CAAA;IAE5B,SAAS,CAAC,OAA6B,EAAE,IAAc,EAAA;AACrD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACnD;;8GAJU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACtB,iBAAA,CAAA;;;MCIY,oBAAoB,CAAA;AAsC/B,IAAA,WAAA,GAAA;QAjCS,IAAW,CAAA,WAAA,GAAe,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC;QACvC,IAAe,CAAA,eAAA,GAAyB,EAAE,CAAC;QAC3C,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC;QACpB,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;QAC9B,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAE1B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE3B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAY,CAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC5C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAY,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAY,CAAC;AAC/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAY,CAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAY,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC5D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAiD,CAAC;QAElF,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;QACxB,IAAoB,CAAA,oBAAA,GAAW,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,aAAa,GAAoB,IAAI,OAAO,EAAU,CAAC;AAI7D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,CAAC;AACtB,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACrD;IAEM,QAAQ,GAAA;;AAEb,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;;AAE3B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC;AAEhD,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,QAAQ;AAC/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;KAC/F;AAEM,IAAA,sBAAsB,CAAC,SAAwB,EAAA;AACpD,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;AAEM,IAAA,gBAAgB,CAAC,IAAc,EAAA;QACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAEhF,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjG;AAEM,IAAA,YAAY,CAAC,IAAc,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,IAAI;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;YACpG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7C;AAEM,IAAA,iBAAiB,CAAC,IAAc,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,IAAI;AACxE,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAC/B;AAEM,IAAA,cAAc,CAAC,IAAc,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEM,kBAAkB,GAAA;QACvB,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC;KAC3C;IAEM,mBAAmB,GAAA;QACxB,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC5C;AAEM,IAAA,YAAY,CAAC,MAAc,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KAC1F;;iHAhHU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,23BCVjC,qiXAmRc,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDzQD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,qiXAAA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA,CAAA;0EAM7B,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEzBI,qBAAqB,CAAA;AA2ChC,IAAA,WAAA,CACU,eAAkC,EAClC,MAAqB,EACrB,SAA2B,EAC3B,MAAiB,EAAA;QAHjB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAmB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AA7ClB,QAAA,IAAA,CAAA,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC;QACvC,IAAe,CAAA,eAAA,GAAyB,EAAE,CAAC;QAC3C,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAE1B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAG1B,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAC3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAgB,CAAC;AACrD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAqD,CAAC;AAC9F,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAsB,CAAC;AACtD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;QAE3C,IAAc,CAAA,cAAA,GAAoB,IAAI,CAAC;QAKvC,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;QAE9B,IAAW,CAAA,WAAA,GAAe,IAAI,CAAC;QAG/B,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAC/B,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC;AAEpB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;QAO/C,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAiC,IAAI,GAAG,EAA2B,CAAC;KAM3D;IAEzB,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,eAAe;AACjB,aAAA,iBAAiB,EAAE;AACnB,aAAA,IAAI,CACH,MAAM,CAAC,UAAU,IAAI,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,EAC5C,GAAG,CAAC,UAAU,IAAG;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1D,SAAC,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CACxC;aACA,SAAS,CAAC,IAAI,IAAG;YAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7C,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW;aAC3D,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACrC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CACxC;AACA,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;aAC7D,SAAS,CAAC,OAAO,IAAG;AACnB,YAAA,IAAI,CAAC,OAAO;gBACV,OAAO;YAET,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;AACtE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,aAAA;AACI,iBAAA;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,gBAAA,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,gBAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;aAC7D,SAAS,CAAC,OAAO,IAAG;AACnB,YAAA,IAAI,CAAC,OAAO;gBACV,OAAO;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,KAAK,IAAI,CAAC;AACZ,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;;AAE/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;aAC/E,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACtC,aAAA,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;aAC/E,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;aACtC,SAAS,CAAC,SAAS,IAAG;AACrB,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,IAAI,EAAE;gBAC7C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AAC5C,aAAA;AACH,SAAC,CAAC,CAAA;KACL;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE;;YAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,SAAA;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,+BAA+B,CAAC,WAAW,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,+BAA+B,CAAC,WAAW,EAAE,CAAC;KACpD;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM;aACR,IAAI,CAAC,+BAA+B,CAAC;AACrC,aAAA,WAAW,EAAE;AACb,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,aAA4B,KAAK,CAAC,CAAC,aAAa,CAAC,EACzD,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,EAChF,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;aACxD,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,MAAM;YACZ,GAAG;YACH,KAAK;SACN,CAAC,CAAC,CACJ,CACF,CACF;aACA,SAAS,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,mBAAmB,CAAC,SAAwB,EAAA;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;KACxD;AAEM,IAAA,iBAAiB,CAAC,SAAwB,EAAA;AAC/C,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAExD,QAAA,IAAI,SAAS;YACX,IAAI,CAAC,eAAe,EAAE;AACnB,iBAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;AAElE,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAChC;AAEM,IAAA,OAAO,CAAC,MAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM;AACR,aAAA,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AAChE,aAAA,WAAW,EAAE;AACb,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,IAAkB,KAAK,CAAC,CAAC,IAAI,CAAC,CACvC;aACA,SAAS,CAAC,IAAI,IAAG;YAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACnE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,YAAA,IAAI,MAAM;gBACR,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,eAAe,CAAC,QAAkB,EAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe;AACjB,iBAAA,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;iBACxC,IAAI,CACH,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,EAC9C,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACxC;AACA,iBAAA,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjE,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;KAC5C;AAEM,IAAA,kBAAkB,CAAC,QAAkB,EAAA;AAC1C,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;YAC/B,OAAO;AAET,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACrC,YAAA,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,CAAC;gBACZ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;QACD,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;KAC1C;AAEM,IAAA,UAAU,CAAC,QAAkB,EAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM;aACR,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;AACnD,aAAA,WAAW,EAAE;AACb,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,MAAe,KAAK,MAAM,CAAC,EACnC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAC9E;aACA,SAAS,CAAC,MAAK;YACd,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3C,aAAA;AACD,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAElC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,kBAAkB,CAAC,QAAkB,EAAA;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC/C;AAEM,IAAA,kBAAkB,CAAC,MAA0B,EAAA;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AACxE,QAAA,IAAI,QAAiB,CAAC;AACtB,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC;AACjB,SAAA;AACI,aAAA;YACH,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,QAAQ,GAAG,KAAK,CAAC;AAClB,SAAA;QACD,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;KACzE;IAEM,mBAAmB,GAAA;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEM,IAAA,YAAY,CAAC,MAAqD,EAAA;QACvE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;KAC/D;AAEM,IAAA,eAAe,CAAC,YAAoB,EAAE,WAAA,GAAsB,CAAC,EAAA;AAClE,QAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,MAAM,KAAK,GAAyC,IAAI,GAAG,EAAmC,CAAC;QAC/F,KAAK,CAAC,GAAG,CACP;AACE,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACD,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,cAAc,EAAE,OAAO;SACxB,EACD,YAAY,CACb,CAAC;AAEF,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC9B,SAAA;QAED,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACnH,aAAA,IAAI,EAAE;AACN,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;YACrB,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,OAAO;AACR,aAAA;AAED,YAAA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,OAAO;AACR,aAAA;YAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;YAE9D,MAAM,KAAK,GAAwB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAwB,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAkB,EAAE,CAAC;AACnC,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gBACpB,IAAI,CAAC,CAAC,OAAO,EAAE;oBACb,MAAM,YAAY,GAAa,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACtD,oBAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;wBAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,wBAAA,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE;4BACtB,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;gCACzC,SAAS;;gCAET,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;4BAErC,IAAI,MAAM,CAAC,QAAQ;gCACjB,QAAQ,CAAC,IAAI,CAAC;AACZ,oCAAA,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;AACxB,oCAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC9B,oCAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACpC,oCAAA,MAAM,EAAE,IAAI;AACZ,oCAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AACjD,oCAAA,QAAQ,EAAE,KAAK;AACf,oCAAA,MAAM,EAAE,IAAI;AACZ,oCAAA,OAAO,EAAE,IAAI;AACb,oCAAA,OAAO,EAAE,IAAI;AACb,oCAAA,UAAU,EAAE;AACV,wCAAA,KAAK,EAAE,CAAC;AACR,wCAAA,QAAQ,EAAE,IAAI;AACd,wCAAA,OAAO,EAAE,KAAK;AACf,qCAAA;AACF,iCAAA,CAAC,CAAC;;gCAEH,KAAK,CAAC,IAAI,CAAC;AACT,oCAAA,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;AACxB,oCAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC9B,oCAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AACjD,oCAAA,QAAQ,EAAE,KAAK;AACf,oCAAA,MAAM,EAAE,IAAI;AACZ,oCAAA,OAAO,EAAE,IAAI;AACb,oCAAA,QAAQ,EAAE,IAAI;AACd,oCAAA,OAAO,EAAE,IAAI;AACb,oCAAA,UAAU,EAAE;AACV,wCAAA,KAAK,EAAE,CAAC;AACR,wCAAA,QAAQ,EAAE,IAAI;AACd,wCAAA,OAAO,EAAE,KAAK;AACf,qCAAA;AACD,oCAAA,MAAM,EAAE,IAAI;AACG,iCAAA,CAAC,CAAC;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;;;AAG3C,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;AACjC,SAAC,CAAC,CAAC;KACN;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC/C;AAEO,IAAA,WAAW,CAAC,IAAc,EAAA;AAChC,QAAA,MAAM,GAAG,GAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,OAAO,QAAQ,CAAC,MAAM,EAAE;YACtB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7B,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;KACtB;IAEO,eAAe,GAAA;AAIrB,QAAA,OAAO,QAAQ,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACxE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACrE,SAAA,CAAC,CAAC;KACJ;IAEO,eAAe,CAAC,KAAa,EAAE,KAAqB,EAAA;AAC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,IAAI,EAAE;AACtE,YAAA,MAAM,IAAI,GAAa;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,KAAK,EAAE,CAAC;AACa,iBAAA;AACvB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,IAAI;aACD,CAAC;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACrC;AAEO,IAAA,uBAAuB,CAAC,KAAqB,EAAA;AACnD,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YACnB,OAAO;QAET,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnC,IAAI,cAAc,GAAa,IAAI,CAAC;AACpC,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AAElE,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACpE,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;AACjD,SAAA;QAED,MAAM,YAAY,GAAmB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAe,EAAE,CAAC;AAEjC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AAEjE,YAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACrE,YAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW;AACnD,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;AAC3D,aAAA;AAAM,iBAAA;gBACL,IAAI,SAAS,GAAG,cAAc,CAAC;AAC/B,gBAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,oBAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,iBAAA;gBACD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;AAC9D,aAAA;YACD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAC3C,YAAA,cAAc,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;KAC1C;AAEO,IAAA,2BAA2B,CAAC,MAAgB,EAAA;AAClD,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;YAC7B,OAAO;QAET,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;KAC1C;AAEO,IAAA,UAAU,CAAC,KAAqB,EAAA;AACtC,QAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;AACxD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;gBACzB,SAAS;YACX,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/C,gBAAA,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;AAClE,YAAA,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpE,SAAA;QAED,MAAM,WAAW,GAA+B,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,gBAAgB,EAAE;AACjD,YAAA,WAAW,CAAC,IAAI,CACd,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,UAAU,CAAC;iBAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CACxE,CAAC;AAEF,YAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAK;AACnC,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,oBAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AACjC,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,KAAqB,EAAE,UAAkB,EAAE,MAAoB,EAAA;AACzF,QAAA,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE;AAC3B,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AAClH,YAAA,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAe;AAC7C,gBAAA,eAAe,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACtD,CAAC;AACF,YAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,gBAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC5F,aAAA;AACF,SAAA;KACF;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,eAAe,CAAC,WAAW;aAC7B,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACrC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CACxC;AACA,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnE;;kHAviBU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+mBCblC,ktDA0B6B,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,oBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDbhB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,ktDAAA,EAAA,CAAA;uLAK9B,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEI,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEzBI,sCAAsC,CAAA;;mIAAtC,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,sCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,4ECNnD,oGAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGa,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAJlD,SAAS;+BACE,sCAAsC,EAAA,QAAA,EAAA,oGAAA,EAAA,CAAA;;;MEGrC,kBAAkB,CAAA;;AACtB,kBAAA,CAAA,YAAY,GAA2B;AAC5C,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,oCAAoC;AAC3C,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,oCAAoC;AAC3C,KAAA;CACD,CAAA;AAEK,kBAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AACrB,kBAAe,CAAA,eAAA,GAAG,yCAAyC,CAAC;+GAfxD,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCGY,oCAAoC,CAAA;AALjD,IAAA,WAAA,GAAA;QAME,IAAkB,CAAA,kBAAA,GAAG,kBAAkB,CAAC;AACzC,KAAA;;iIAFY,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,yECRjD,6QAMA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDEa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBALhD,SAAS;+BACE,mCAAmC,EAAA,QAAA,EAAA,6QAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,CAAA;;;MEClC,mBAAmB,CAAA;AACK,IAAA,UAAU,CAAC,CAAgB,EAAA;QAC5D,CAAC,CAAC,cAAc,EAAE,CAAC;KACpB;;gHAHU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA,CAAA;8BAEoC,UAAU,EAAA,CAAA;sBAA5C,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCCtB,iCAAiC,CAAA;AAY5C,IAAA,WAAA,GAAA;QAVS,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;QAE7C,IAAY,CAAA,YAAA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7C,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;QAEvB,IAAoB,CAAA,oBAAA,GAAG,EAAE,CAAC;QAGxB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAChC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAA,yBAAA,EAA4B,GAAG,CAAA,CAAE,CAAC;AACrE,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;AAC3B,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAChC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACT,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;AACxC,YAAA,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAG,EAAA,WAAW,EAAE,CAAC;AACrE,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC/B;IAED,aAAa,GAAA;QACX,QACE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACzD,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;aACxC,CAAC,KAAK,CAAC,CAAC;AACT,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,EAChC;KACH;;8HApDU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,2NCP9C,ygBAYM,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAI,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDLO,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,0CAA0C,EAAA,QAAA,EAAA,ygBAAA,EAAA,MAAA,EAAA,CAAA,kQAAA,CAAA,EAAA,CAAA;0EAK3C,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEEI,mCAAmC,CAAA;AALhD,IAAA,WAAA,GAAA;QAMW,IAAuB,CAAA,uBAAA,GAAW,CAAC,CAAC,CAAC;QAiB9C,IAAc,CAAA,cAAA,GAA4C,MAAM,CAAC;QACjE,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAEhB,QAAA,IAAA,CAAA,YAAY,GAGP;AACD,YAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,KAAK,EAAE;AACpD,YAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,KAAK,EAAE;AACpD,YAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,KAAK,EAAE;AACpD,YAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE;AACxD,YAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,KAAK,EAAE;AACpD,YAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1D,YAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1D,YAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE;AACxD,YAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,YAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,YAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,YAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,aAAa,EAAE;SACrE,CAAC;AAEa,QAAA,IAAA,CAAA,kBAAkB,GAAgB;AACjD,YAAA,qBAAqB,EAAE,EAAE;AACzB,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,OAAO,EAAE,KAAK;SACN,CAAC;AAED,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAsB,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;AAE7C,QAAA,IAAA,CAAA,OAAO,GAAyC;AACvD,YAAA,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QAEO,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAgD5B,KAAA;IAlGC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE/E,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;AACtD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;YACnC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvC;AAuCD,IAAA,eAAe,CAAC,KAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEO,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE;YACpE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,WAAW,GAAuB;YACpC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,EAAE;AACzC,YAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAClC,WAAW,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAEtD,iBAAA;gBACH,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE/G,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;oBACrB,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5C,aAAA;AAED,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,CAAC;KACzE;AAED,IAAA,eAAe,CAAC,OAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;gIApGU,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,iQCbhD,yzBAkBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAI,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,iCAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDLa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,yzBAAA,EAAA,CAAA;8BAKnC,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBA4CI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEzDK,iCAAiC,CAAA;AAL9C,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,YAAY,GAAmB,cAAc,CAAC,IAAI,CAAC;QACnD,IAAK,CAAA,KAAA,GAAG,gCAAgC,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAkB,CAAC;AAOlE,QAAA,IAAA,CAAA,UAAU,GAAoD;YAC5D,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE;YACrD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE;YACvD,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE;SAC9D,CAAC;AACH,KAAA;AAVC,IAAA,eAAe,CAAC,KAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3C;;8HARU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,wLCT9C,wYAYA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAI,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDHa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,wYAAA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,CAAA;8BAKlC,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;;;MENI,gBAAgB,CAAA;IAG3B,OAAO,YAAY,CAAC,IAAU,EAAA;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KACzD;IAED,OAAO,cAAc,CAAC,CAAgB,EAAA;QACpC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KAC9C;AAED,IAAA,OAAO,qBAAqB,CAAC,KAAa,EAAE,IAAY,EAAE,MAAc,EAAA;QACtE,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACxB,kBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;kBAClF,KAAK,CACV,CAAC;AACH,SAAA;;AAAM,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,IAAI,IAAI;AAAE,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtB;IAEO,OAAO,aAAa,CAAC,MAAc,EAAA;QACzC,OAAO,MAAM,IAAI,CAAC,CAAC;KACpB;IAED,OAAO,uBAAuB,CAAC,GAAoB,EAAA;QACjD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC7B,QAAA,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;KAC3E;IAED,OAAO,eAAe,CAAC,OAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC3C,OAAO,OAAO,CAAC,KAAK,CAAC;AACtB,SAAA;QAED,OAAO,CAAA,EAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAA,CAAE,CAAC;KACnD;;AAxCe,gBAAU,CAAA,UAAA,GAAG,qBAAsB,CAAA;6GADxC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCiBY,4BAA4B,CAAA;AASvC,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QANzC,IAAI,CAAA,IAAA,GAAgB,EAAE,CAAC;QACvB,IAAM,CAAA,MAAA,GAAsB,QAAQ,CAAC;QACrC,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;QAEzB,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;KAEoB;IAErD,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAEM,IAAA,IAAI,CAAC,IAA8B,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;AACtB,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAE/B,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAEvB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YAC1B,IAAI,IAAI,CAAC,QAAQ;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE/D,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA;;;YAGL,IAAI,IAAI,CAAC,QAAQ;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;AAEpH,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,OAAO,GAAA;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,SAAS,CACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,KAAK,CACN;AACD,cAAE,SAAS,CAAC,CAAC,cAAc,KAAI;YAC7B,MAAM,MAAM,GAAe,EAAE,CAAC;AAC9B,YAAA,IAAI,KAA2C,CAAC;YAChD,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,CAAM,cAAc,CAAC,EAAE;AAChD,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAChC,oBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,oBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC/B,wBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,wBAAA,IAAI,IAAI;AACN,4BAAA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,qBAAA;AAED,oBAAA,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;iBACjD,CAAC,CAAC,CAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;;yHA7EU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAa,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,oHCtBzC,6rCA8BM,EAAA,MAAA,EAAA,CAAA,ktBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDRO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,6rCAAA,EAAA,MAAA,EAAA,CAAA,ktBAAA,CAAA,EAAA,CAAA;iGAK5B,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEVK,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAW,CAAC;AACxC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAO,CAAC;AACnD,KAAA;;yHALY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,0LCbzC,qOAOM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDMO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,qOAAA,EAAA,CAAA;8BAK5B,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEyBI,uBAAuB,CAAA;IAsDlC,WACS,CAAA,aAA4B,EAC3B,gBAAkC,EAAA;QADnC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC3B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QApDnC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QACX,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QACjB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;QACpB,IAAI,CAAA,IAAA,GAAe,EAAE,CAAC;QACtB,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QACjB,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QACjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAA,CAAA,OAAO,GAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;QAC/B,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;QAEzC,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;QAChC,IAAI,CAAA,IAAA,GAAsB,OAAO,CAAC;QAClC,IAAY,CAAA,YAAA,GAAmC,EAAE,CAAC;QAClD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAExD,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1D,IAAM,CAAA,MAAA,GAAe,EAAE,CAAC;KAe9B;IARD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;KAChC;AAQD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,IAAI,OAAO,EAAE,cAAc;AAAE,YAAA,OAAO;QACpC,IAAI,OAAO,EAAE,cAAc;AAAE,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;AAEzD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEM,IAAA,WAAW,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEM,IAAA,gBAAgB,CAAC,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAEM,IAAA,WAAW,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAEM,IAAA,UAAU,CAAC,KAAK,EAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;IAEM,aAAa,GAAA;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACpD,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,eAAe,EAAE,MAAM;AACxB,SAAA,CAAC,CAAC,CAAC;KACL;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAEM,aAAa,GAAA;QAClB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,CAAC;QAC1G,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAC/C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAC,CAAC,CAAC;AACvD,YAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AACpC,SAAA;QACD,EAAE,CAAC,OAAO,CAAC,GAAG;YACZ,EAAC,GAAG,EAAE,EAAE,EAAC;YACT,EAAC,GAAG,EAAE,EAAE,EAAC;YACT,EAAC,GAAG,EAAE,EAAE,EAAC;SACV,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;KACrC;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG;AACvB,YAAA,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YAClC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAChC,YAAA,WAAW,EAAE;AACX,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACF,aAAA;SACF,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,aAAa;aACf,SAAS,CACR,IAAI,CAAC,IAAI,CAAC,SAAS,EACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,CACjB;AACD,cAAE,SAAS,CAAC,CAAC,cAAc,KAAI;YAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACN;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB;AACE,YAAA,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB,OAAO,EAAE,KAAK;AACf,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,cAAc,CAAC,KAAU,EAAA;AAC9B,QAAA,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CACjE,EAAE,SAAS,CAAC;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAEM,IAAA,YAAY,CAAC,KAAU,EAAA;AAC5B,QAAA,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CACjE,EAAE,SAAS,CAAC;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxB;AAEM,IAAA,qBAAqB,CAAC,KAAU,EAAA;QACrC,IAAI,KAAK,EAAE,IAAI;YACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACrC;AAEM,IAAA,WAAW,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAEM,IAAA,cAAc,CAAC,IAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AAEO,IAAA,oBAAoB,CAAC,cAAmB,EAAA;QAC9C,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CACnD,CAAC,GAAQ,KAAK,GAAG,CAAC,QAAQ,CAC3B,CAAC;KACH;IAEO,UAAU,GAAA;QAChB,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAC7D,GAAG,CAAC,IAAI,CACN,CAAG,EAAA,gBAAgB,CAAC,YAAY,CAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAA,GAAA,EAAM,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE,CAAA,CAC1D,CAAC;AACJ,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;AAEO,IAAA,iBAAiB,CAAC,cAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,cAAc;YACjB,OAAO;QAET,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;YAClD,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,IAAqB,CAAC;YAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;AACrE,iBAAA,IAAI,CAAC;YAER,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAEhE,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAC/D,MAAM,EACJ,IAAI,GAAG,EAAE,EACT,UAAU,EACV,KAAK,EACN,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;YAE3D,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;YAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAC3C,CAAC;AAEF,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,UAAU,EAAE,KAAK;gBACjB,IAAI;AACJ,gBAAA,UAAU,EAAE,CAAC;gBACb,IAAI;gBACJ,SAAS,EAAE,EAAE,KAAK,EAAE;gBACpB,SAAS,EAAE,EAAE,KAAK,EAAE;gBACpB,UAAU;gBACV,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC;gBAClD,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,CAAC,KAAK,KAAK,CAAG,EAAA,KAAK,IAAI,GAAG,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA;AACrD,iBAAA;AACF,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI;aACN,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACjC,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAC5C,CAAC;AAEF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;AAEnE,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,KAAK,CAAC,QAAQ,GAAG;AACf,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;AACD,gBAAA,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;oBACrC,MAAM,GAAG,GAAQ,EAAE,CAAC;AAEpB,oBAAA,IAAI,SAAS,CAAC,WAAW,KAAK,YAAY;AACxC,wBAAA,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;;AACzB,wBAAA,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;oBAEjC,GAAG,CAAC,SAAS,GAAG;wBACd,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO;wBAC3C,KAAK,EAAE,SAAS,CAAC,KAAK;qBACvB,CAAC;;oBAGF,IAAI,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;oBACxG,GAAG,CAAC,KAAK,GAAG;wBACV,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;wBAChD,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,QAAQ;AACR,wBAAA,eAAe,EAAE,OAAO;qBACzB,CAAC;AAEF,oBAAA,OAAO,GAAG,CAAC;AACb,iBAAC,CAAC;aACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,CAAC,GAAQ,EAAE,SAAoB,EAAA;QACrD,IAAI,SAAS,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC;AAE5C,QAAA,IAAI,SAAS,CAAC,WAAW,KAAK,YAAY,EAAE;YAC1C,OAAO,CAAA,EAAG,GAAG,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK,CAAA,CAAE,CAAC;AAC5C,SAAA;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,OAAO,CAAG,EAAA,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;KACnF;IAEO,aAAa,CAAC,cAA6B,IAAI,EAAA;AACrD,QAAA,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO;AACR,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG;AACxB,gBAAA,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,gBAAA,SAAS,EAAE,CAAC,IAAI,KAAI;oBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC;AACjE,oBAAA,IAAI,CAAC,IAAI;AAAE,wBAAA,OAAO,IAAI,CAAC;AACvB,oBAAA,OAAO,CAAG,EAAA,IAAI,CAAK,EAAA,EAAA,IAAI,GAAG,CAAC;iBAC5B;aACF,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC7F,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC3F,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAChC,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,SAAS;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;AAClC,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,WAAW,EAAE;AACX,oBAAA,SAAS,EAAE,OAAO;AAClB,oBAAA,SAAS,EAAE,QAAQ;AACpB,iBAAA;AACF,aAAA,CAAC,CAAC;;;QAIL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClJ,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEO,IAAA,YAAY,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAEO,wBAAwB,CAC9B,OAAe,EACf,cAA6B,EAAA;QAE7B,IAAI,GAAG,GAAwC,EAAE,CAAC;AAElD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE7B,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAChC,YAAA,GAAG,GAAG;AACJ,gBAAA,GAAG,GAAG;AACN,gBAAA,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC;aACrD,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,eAAe,CAAC,WAAmB,EAAE,MAAkB,EAAA;QAE7D,MAAM,GAAG,GAA+D,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAEtG,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAE5D,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;kBAC5B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,kBAAE,KAAK,CAAC,KAAK,CAAC;YAEhB,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO;AAC/B,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,KAAK,CAAC,SAAS;gBACtB,KAAK;AACL,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA,CAAC,CAAC;AACH,YAAA,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;AAC3E,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,2BAA2B,CAAC,OAAe,EAAE,MAAc,EAAA;AAEjE,QAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;YACjD,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACnD,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACtB;IAEO,SAAS,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;YACvB,IAAI,CAAC,EAAE,CAAC,IAAI;AAAE,gBAAA,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAA0B;AACrD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAC3B,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,MAAM,IAAI,CAC5C,CAAC;YACF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAEjD,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,YAAY,EAAE,QAAQ;AACtB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,aAAa,EAAE;AACb,oBAAA,UAAU,EAAE,GAAG;AAChB,iBAAA;AACD,gBAAA,cAAc,EAAE;AACd,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;AACD,gBAAA,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,EAAE,GAAG,KAAK;AAClB,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,wBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;qBAChE;AACD,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,YAAY,EAAE,KAAK;AACpB,iBAAA;AACD,gBAAA,WAAW,EAAE;AACX,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;AACvB,qBAAA;AACF,iBAAA;gBACD,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AACjC,gBAAA,IAAI,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC9B,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,WAAW,CAAC,GAAQ,EAAE,GAAQ,EAAE,MAAW,EAAA;AACjD,QAAA,QACE,KAAK,CAAC,GAAG,CAAC;AACV,YAAA,GAAG,KAAK,EAAE;AACV,YAAA,GAAG,KAAK,IAAI;YACZ,KAAK,CAAC,GAAG,CAAC;AACV,YAAA,GAAG,KAAK,EAAE;AACV,YAAA,GAAG,KAAK,IAAI;YACZ,KAAK,CAAC,MAAM,CAAC;AACb,YAAA,MAAM,KAAK,EAAE;YACb,MAAM,KAAK,IAAI,EACf;KACH;IAEO,QAAQ,CAAC,GAAQ,EAAE,KAAc,EAAA;AACvC,QAAA,MAAM,MAAM,GAAQ,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAQ,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;AACrC,QAAA,MAAM,GAAG,GAAQ,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC;YACpC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;KAC5E;IAEO,oBAAoB,CAAC,GAAQ,EAAE,GAAY,EAAA;QACjD,OAAO,CAAC,KAAU,KAAI;AACpB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,YAAA,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,KAAK,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;YAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;AAE9C,YAAA,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAE1C,OAAO,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/C,SAAC,CAAC;KACH;AAEO,IAAA,cAAc,CAAC,MAAW,EAAA;AAChC,QAAA,MAAM,MAAM,GAAQ,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;AAEjD,QAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;AAEzC,QAAA,IAAI,GAAG,GAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;AACtC,QAAA,IAAI,GAAG,GAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;QAEtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;AAErC,QAAA,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;AACnB,QAAA,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;QAEnB,OAAO;YACL,GAAG;YACH,GAAG;YACH,QAAQ;SACT,CAAC;KACH;AAEO,IAAA,gBAAgB,CAAC,MAAM,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,OAAO,GAAG,CAAA,EAAG,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACnC,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEpC,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,gBAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzC,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;oBAAE,OAAO;gBACjD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO;AACR,iBAAA;AAED,gBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/C,gBAAA,IACE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9C,oBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EACjD;oBACA,OAAO,GAAG,IAAI,CAAC;AAChB,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,OAAO;gBAAE,OAAO;AAErB,YAAA,OAAO,IAAI,CAAqH,kHAAA,EAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAC5J,EAAE,WAAW,EAAE,KAAK,EAAE,EACtB,OAAO,CACR,WAAW,CAAC;YAEb,OAAO,IAAI,CAAS,MAAA,EAAA,KAAK,CAAC,IAAI,CAAY,SAAA,EAAA,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAC7G,CAAA,WAAA,CAAa,CAAC;YACd,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,cAAc,CAAC,KAAU,EAAE,KAAW,EAAA;QAC5C,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAiB,CAAC;AACjF,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,EAAE,CAAC;QAE5B,MAAM,GAAG,GAAG,EAAE,CAAC;AAEf,QAAA,GAAG,CAAC,IAAI,CACN,CAAA,KAAA,EAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACnC,0CAA0C,CAC3C,CAAA,GAAA,CAAK,CACP,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhE,IACE,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9D,aAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,EAC1D;YACA,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3B,6CAA6C,EAC7C,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAC/B,CACF,CAAC;AACF,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACjC,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,UAAU,CAAC,WAAW;gBACxB,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,uCAAuC,EAAE;AAC9E,oBAAA,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ;AACpC,oBAAA,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ;iBACrC,CAAC,GAAG,GAAG,CAAC;YAEX,GAAG,CAAC,IAAI,CACN,CAAA,oCAAA,EAAuC,MAAM,CAAG,EAAA,OAAO,CAAS,OAAA,CAAA,CACjE,CAAC;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1B;IAEO,iBAAiB,GAAA;QACvB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,YAAY;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA,WAAW,EAAE;AACX,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,UAAU,EAAE,MAAa;AAC1B,iBAAA;AACD,gBAAA,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5B,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,IAAI,EAAE,gDAAgD;oBACtD,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,iBAAA;AACF,aAAA;SACF,CAAC;KACH;IAEO,mBAAmB,GAAA;QACzB,OAAO;AACL,YAAA,KAAK,EAAE;AACL,gBAAA;oBACE,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,gBAAgB,CACrB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACzC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AACpC,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,UAAU,EAAE,GAAG;AACf,wBAAA,QAAQ,EAAE,EAAE;AACb,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;AAC1B,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,YAAY,EAAE;AACZ,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,KAAK,EAAE,gBAAgB,CACrB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACzC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AACtC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,gBAAA,WAAW,EAAE;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,gBAAgB,EAAE,KAAK;AACvB,oBAAA,UAAU,EAAE,MAAa;AAC1B,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,GAAG,EAAE,CAAC;AACP,aAAA;AACD,YAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACzB,CAAC;KACH;IAEO,oBAAoB,GAAA;QAC1B,OAAO;AACL,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,UAAU,EAAE,GAAG;AACf,wBAAA,QAAQ,EAAE,EAAE;AACb,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,YAAY,EAAE;AACZ,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,WAAW,EAAE;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,gBAAgB,EAAE,KAAK;AACxB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,GAAG,EAAE,CAAC;AACP,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE;AACX,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACzB,CAAC;KACH;;oHAxwBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAsB,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA+CvB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzFzC,q8EAkDM,EAAA,MAAA,EAAA,CAAA,8jCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDRO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,q8EAAA,EAAA,MAAA,EAAA,CAAA,8jCAAA,CAAA,EAAA,CAAA;gIAKtB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAekC,UAAU,EAAA,CAAA;sBAAlD,SAAS;uBAAC,4BAA4B,CAAA;gBAGvC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MExE9B,8BAA8B,CAAA;AAL3C,IAAA,WAAA,GAAA;QAME,IAAmB,CAAA,mBAAA,GAAG,sBAAsB,CAAC;AAEpC,QAAA,IAAA,CAAA,IAAI,GAAsB;AACjC,YAAA,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,IAAI,IAAI,EAAE;SACpB,CAAC;QAEO,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;QAM7D,IAAS,CAAA,SAAA,GAAG,sBAAsB,CAAC;QACnC,IAAkB,CAAA,kBAAA,GAAG,0BAA0B,CAAC;QAEhD,IAAgB,CAAA,gBAAA,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAc,CAAA,cAAA,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAyD5D,KAAA;IAjEC,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAQD,mBAAmB,CAAC,KAAuC,EAAE,GAAW,EAAA;;AAEtE,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAClD,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3F,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;;AAG7C,YAAA,IAAI,GAAG,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC5D,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;;AAGvD,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5D,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;AAC1D,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;AAED,IAAA,WAAW,CAAC,KAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED,IAAA,gBAAgB,CAAC,QAAiB,EAAA;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7D,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;AACxD,SAAA;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACxC;;2HA7EU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,mLCnB3C,+sEA4DM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDzCO,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,+sEAAA,EAAA,CAAA;8BAO9B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAMG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEjBI,cAAc,CAAA;AAL3B,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAC1C,KAAA;;2GALY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,oKCb3B,2UAWM,EAAA,MAAA,EAAA,CAAA,8MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDEO,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,OAAO,EAAA,QAAA,EAAA,2UAAA,EAAA,MAAA,EAAA,CAAA,8MAAA,CAAA,EAAA,CAAA;8BAKR,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,SAAS,EAAA,CAAA;sBAAlB,MAAM;;;MEaI,uBAAuB,CAAA;IAwBlC,WACS,CAAA,aAA4B,EAC3B,aAA4B,EAAA;QAD7B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QApB7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAU,CAAA,UAAA,GAAe,aAAa,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;KAiB3C;AAVL,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,QACE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAC9B;KACH;IAOD,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG;AAChD,qBAAA;AACD,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,MAAM;AACd,qBAAA;AACD,oBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACtB,oBAAA,QAAQ,EAAE;AACR,wBAAA,SAAS,EAAE;4BACT,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG;AAChD,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM;AAC1E,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK;AACvE,4BAAA,KAAK,EAAE,MAAM;AACd,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ;AACxE,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI;AACjE,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM;AACpD,wBAAA,SAAS,EAAE;AACT,4BAAA,WAAW,EAAE,EAAE;AAChB,yBAAA;AACF,qBAAA;AACD,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,cAAc,EAAE,IAAI;wBACpB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK;AACvD,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;AACD,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,IAAI,EAAE,EAAE;AACT,iBAAA;AACF,aAAA;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvE;IAED,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAEM,aAAa,GAAA;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAEM,IAAA,WAAW,CAAC,EAAE,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;IAEM,aAAa,GAAA;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAClD,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,eAAe,EAAE,MAAM;AACxB,SAAA,CAAC,CAAC,CAAC;KACL;IAEM,OAAO,GAAA;QACZ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,MAAM;YAClG,IAAI,CAAC,4BAA4B,EAAE,CAAC;;YAEpC,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACpC;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM;YAC5B,OAAO;AAET,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,aAAa,CAAC,GAAG;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,SAAS,EAAE;4BACT,KAAK,EAAE,aAAa,CAAC,GAAG;AACzB,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;AACtC,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK;AACpC,4BAAA,KAAK,EAAE,MAAM;AACd,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ;AACtC,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI;AACnC,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,wBAAA,SAAS,EAAE;AACT,4BAAA,WAAW,EAAE,EAAE;4BACf,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;AAC1C,yBAAA;AACF,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,cAAc,EAAE,IAAI;AACpB,wBAAA,QAAQ,EAAE,EAAE;wBACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;AACpC,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,UAAU,KAAK,EAAA;YAClD,OAAO,gBAAgB,CAAC,qBAAqB,CAC3C,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAC/B,CAAC;AACJ,SAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;YACzB,OAAO;AACR,SAAA,CAAC,CAAC;KACJ;IAEM,OAAO,GAAA;QACZ,OAAO,CAAA,EAAG,gBAAgB,CAAC,YAAY,CACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAChC,CAAM,GAAA,EAAA,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC;KACvE;IAEO,4BAA4B,GAAA;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa;aACf,UAAU,CACT,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAC7B,GAAG,CAAC,UAAU,EACd,qBAAqB,CAAC,MAAM,CAC7B;AACA,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC7C,YAAA,IACE,CAAC,GAAG;AACJ,gBAAA,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,EAC1D;gBACA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;gBACtC,OAAO;AACR,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;KACN;IAEO,yBAAyB,GAAA;AAC/B,QAAA,MAAM,OAAO,GAAmC,IAAI,CAAC,MAAM,CAAC,OAAO;aAChE,GAAG,CAAC,CAAC,IAAG;YACP,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM;AAAE,gBAAA,OAAO,CAAC,CAAC;YACnE,OAAO;AACL,gBAAA,GAAG,CAAC;AACJ,gBAAA,WAAW,EAAE;oBACX,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS;AACrD,iBAAA;aACyB,CAAC;AAC/B,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,aAAa;aACf,SAAS,CACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,OAAO,EACP,KAAK,CACN;AACA,aAAA,SAAS,CAAC,CAAC,aAAkB,KAAI;AAChC,YAAA,IAAI,OAAO,GAAc,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAS,EAAE,IAAI,CAAC;YACvE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACvD,OAAO;AACR,aAAA;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;iBAC9B,uBAAuB,CAAC,OAAO,CAAC;AAChC,iBAAA,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAI,OAAO,CAAC,KAAgB,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,UAAU,KAAK,EAAA;YAC5D,OAAO,gBAAgB,CAAC,qBAAqB,CAC3C,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAC/B,CAAC;AACJ,SAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAChE;AAEO,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG;AACX,YAAA;gBACE,KAAK;AACN,aAAA;SACF,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KACxD;;oHA/QU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAkB,aAAA,EAAA,EAAA,EAAA,KAAA,EAAArB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4YC9BpC,m+BA0B4B,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDIf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,m+BAAA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,CAAA;0HAMP,UAAU,EAAA,CAAA;sBAAjC,SAAS;uBAAC,WAAW,CAAA;gBAEb,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;;;ME1BI,iCAAiC,CAAA;AAL9C,IAAA,WAAA,GAAA;QAMW,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AAElB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;AAuBhD,KAAA;AArBC,IAAA,iBAAiB,CAAC,KAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,IAAI,CAAC,aAAa;AAC7B,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;KAChC;IAGD,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;AAEjC,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM;YACzB,QAAQ,EAAE,IAAI,CAAC,aAAa;SAC7B,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;;8HA1BU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,uRCd9C,yZAgBA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAF,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDFa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAAA,yZAAA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,CAAA;8BAKjC,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAcP,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,2BAA2B,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEjB1C,8BAA8B,CAAA;AAsBzC,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAnBhD,IAAO,CAAA,OAAA,GAAsB,IAAI,CAAC;QAClC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAgB,CAAA,gBAAA,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAA,CAAA,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;QACnC,IAAQ,CAAA,QAAA,GAAQ,IAAI,CAAC;KAcgC;AAZrD,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC5C;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CACzB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EACpC,IAAI,CAAC,kBAAkB,CACxB,CAAC;KACH;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAElC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC3B,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACpC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;AACrB,QAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,QAAA,MAAM,KAAK,GAA8B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpC,YAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrC,gBAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;AAClC,oBAAA,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,oBAAA,IAAI,CAAC,IAAI;iBACV,CAAC;gBACF,OAAO;AACR,aAAA;YACD,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACnD,YAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACjD,gBAAgB,CAAC,UAAU,CAAC,EAC5B,UAAU,CACX,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO;AACR,SAAA;QAED,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACnC,IAAI,OAAO,GAAe,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAqB,KAAI;AACnD,gBAAA,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI,EAAG,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,EAAE,CAAC,CAAC,CAAC;AACvF,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,OAAO,CAAC,OAAO,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,IAAW,wBAAwB,GAAA;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC/C;AAEM,IAAA,kBAAkB,CAAC,SAAe,EAAA;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC9C;IAEM,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjD;;2HAnGU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,mKCd3C,84DAyDwE,EAAA,MAAA,EAAA,CAAA,sDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,iCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD3C3D,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,84DAAA,EAAA,MAAA,EAAA,CAAA,sDAAA,CAAA,EAAA,CAAA;iGAK/B,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEJK,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;QAUW,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;AAChD,KAAA;;yGAPY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,8MCZzB,4SAKM,EAAA,MAAA,EAAA,CAAA,qSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDOO,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,KAAK,EAAA,QAAA,EAAA,4SAAA,EAAA,MAAA,EAAA,CAAA,qSAAA,CAAA,EAAA,CAAA;8BAKN,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MERI,+BAA+B,CAAA;AAL5C,IAAA,WAAA,GAAA;QAOW,IAAQ,CAAA,QAAA,GAAW,UAAU,CAAC;QAEvC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AA0BpB,KAAA;IAxBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,EAAE,CAAC,EAAE,CAAC;aACH,IAAI,CACH,KAAK,CAAC,IAAI,CAAC,EACX,SAAS,CAAC,MACR,IAAI,CACF,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC9C,YAAA,OAAO,EAAE,OAAO;SACjB,CAAC,CACH,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,OAAe,KAAI;YACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,MAAM,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB,CAAC,CACH,CACF,CACF;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;;4HA7BU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,iICV5C,sGAGS,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDOI,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACE,+BAA+B,EAAA,QAAA,EAAA,sGAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,CAAA;8BAKhC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEcK,yBAAyB,CAAA;IA8BpC,WACS,CAAA,aAA4B,EAC3B,aAA4B,EAAA;QAD7B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QA7B7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;QAEzC,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;QAIrB,IAAU,CAAA,UAAA,GAAW,MAAM,CAAC;KAoB9B;AAhBL,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,CAAG,EAAA,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AACpE,MAAA,EAAA,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC;KACpE;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,gBAAgB,CAAC,qBAAqB,CAC3C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAC/B,CAAC;KACH;IAOD,aAAa,GAAA;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvE;IAED,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAEM,OAAO,GAAA;QACZ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM;YAChG,IAAI,CAAC,uBAAuB,EAAE,CAAC;;YAE/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,YAAA,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,SAAA,CAAC,CAAC;KACJ;IAEO,uBAAuB,GAAA;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa;aACf,UAAU,CACT,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAC7B,GAAG,CAAC,UAAU,EACd,qBAAqB,CAAC,MAAM,CAC7B;AACA,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC;AAC3C,SAAC,CAAC,CAAC;KACN;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAmC,IAAI,CAAC,MAAM,CAAC,OAAO;aAChE,GAAG,CAAC,CAAC,IAAG;YACP,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM;AAAE,gBAAA,OAAO,CAAC,CAAC;YACnE,OAAO;AACL,gBAAA,GAAG,CAAC;AACJ,gBAAA,WAAW,EAAE;oBACX,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS;AACrD,iBAAA;aACyB,CAAC;AAC/B,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,aAAa;aACf,SAAS,CACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,OAAO,EACP,IAAI,CACL;AACA,aAAA,SAAS,CAAC,CAAC,aAAkB,KAAI;AAChC,YAAA,IAAI,OAAO,GAAc,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAS,EAAE,IAAI,CAAC;YACvE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,OAAO;AACR,aAAA;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;iBAC9B,uBAAuB,CAAC,OAAO,CAAC;AAChC,iBAAA,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAI,OAAO,CAAC,KAAgB,EAAE,CAAC,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;AACtB,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,eAAe,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAG,EAAA,IAAI,IAAI,CAAC;KAC/B;;sHA5HU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,mWC1BtC,m5BAkBM,EAAA,MAAA,EAAA,CAAA,0XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDQO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,m5BAAA,EAAA,MAAA,EAAA,CAAA,0XAAA,CAAA,EAAA,CAAA;0HAMzB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAQiB,UAAU,EAAA,CAAA;sBAAjC,SAAS;uBAAC,WAAW,CAAA;;;MEjCX,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAS3C,IAAK,CAAA,KAAA,GAAG,mCAAmC,CAAC;QAC5C,IAAa,CAAA,aAAA,GAAG,2CAA2C,CAAC;QAC5D,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAkB,IAAI,CAAC;QAExC,IAAa,CAAA,aAAA,GAAyB,IAAI,CAAC;AAOjC,QAAA,IAAA,CAAA,gBAAgB,GAAyB,IAAI,YAAY,EAAE,CAAC;AAC5D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAOzC,IAAU,CAAA,UAAA,GAAG,MAAK;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ;gBACjG,OAAO;AAET,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,SAAC,CAAC;QArCA,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,IAAI,CAAC,oBAAoB;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ,CAAC,CAAA;YACvF,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAYD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC;KACpC;IAKD,gBAAgB,CAAC,EAAE,KAAK,EAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC3C;;iIA9BU,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,2VCRjD,woBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAG,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDVa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAJhD,SAAS;+BACE,oCAAoC,EAAA,QAAA,EAAA,woBAAA,EAAA,CAAA;mGAarC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBASI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MErBI,0BAA0B,CAAA;AASrC,IAAA,WAAA,CACU,WAA6B,EAC7B,aAA+B,EAC/B,cAA8B,EAAA;QAF9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;QAC7B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KACpC;IAZJ,IAAa,WAAW,CAAC,KAAa,EAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAWD,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1C,QAAA,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,SAAA;KACF;IAEO,eAAe,GAAA;AACrB,QAAA,QACE,CAAC,IAAI,CAAC,KAAK;aACV,IAAI,CAAC,KAAK;gBACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,KAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CACpC,CAAC,EACJ;KACH;;uHA3CU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA4B,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAA;2JAEc,WAAW,EAAA,CAAA;sBAAvB,KAAK;;;ACLD,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE;AACxD,IAAA,KAAK,CACH,OAAO,EACP,KAAK,CAAC;AACJ,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,WAAW,EAAE,MAAM;AACpB,KAAA,CAAC,CACH;AACD,IAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,QAAA,WAAW,EAAE,OAAO;AACrB,KAAA,CAAC,CACH;AACD,IAAA,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACrD,IAAA,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACtD,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAChE,IAAA,KAAK,CACH,OAAO,EACP,KAAK,CAAC;AACJ,QAAA,aAAa,EAAE,MAAM;AACrB,QAAA,cAAc,EAAE,MAAM;AACtB,QAAA,eAAe,EAAE,MAAM;AACxB,KAAA,CAAC,CACH;AACD,IAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,QAAA,aAAa,EAAE,OAAO;AACtB,QAAA,cAAc,EAAE,MAAM;AACtB,QAAA,eAAe,EAAE,MAAM;AACxB,KAAA,CAAC,CACH;AACD,IAAA,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACrD,IAAA,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACtD,CAAA,CAAC,CAAC;AAEI,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE;AAChD,IAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,OAAO,EAAE,CAAC;AACX,KAAA,CAAC,CACH;AACD,IAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,CAAC;AACX,KAAA,CAAC,CACH;AACD,IAAA,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACrD,IAAA,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACvD,CAAA,CAAC;;MCtDW,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ECVhC,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gVAaA,EDLc,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9B,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,WAAW,CAAC,EAAA,CAAA,CAAA;2FAEd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EAGzB,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,gVAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,CAAA;8BAGhB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MENK,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIS,QAAA,IAAA,CAAA,aAAa,GAAqB,IAAI,OAAO,EAAE,CAAC;AACxD,KAAA;;2GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,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,CAAA;;;MCcY,wBAAwB,CAAA;IAUnC,WAAkD,CAAA,IAAgB,EAAU,IAAuB,EAAA;QAAjD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAmB;;QAL5F,IAAY,CAAA,YAAA,GAAG,eAAe,CAAC;QAC/B,IAAM,CAAA,MAAA,GAA0B,EAAE,CAAC;QACnC,IAAkB,CAAA,kBAAA,GAAW,CAAC,CAAC;QAC/B,IAAK,CAAA,KAAA,GAAgB,OAAO,CAAC;QAGlC,IAAI,CAAC,IAAI,CAAC,IAAI;YACZ,OAAO;QAET,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAE7B,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;AACrB,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;gBAC3C,IAAI,CAAC,MAAM,GAAG,CAAC;AACb,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,CAAC,CAAC;gBACH,MAAM;AAER,YAAA,KAAK,iBAAiB;AACpB,gBAAA,IAAI,CAAC,YAAY,GAAG,4BAA4B,CAAC;gBACjD,IAAI,CAAC,MAAM,GAAG,CAAC;AACb,wBAAA,OAAO,EAAE,2BAA2B;AACpC,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,CAAC,CAAC;gBACH,MAAM;AAER,YAAA,KAAK,kBAAkB;AACrB,gBAAA,IAAI,CAAC,YAAY,GAAG,6BAA6B,CAAC;AAClD,gBAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBAC5B,MAAM;AAER,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpC,MAAM;AAER,YAAA;AACE,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAClD,gBAAA,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;oBACrC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7F,MAAM;AACT,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC;AACpC,iBAAA,IAAI,CACH4B,KAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAC5BC,QAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CACnC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,SAAA;KAEF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;KACvC;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAClB,OAAO;AACT,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACxB;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;KACrB;AAEO,IAAA,cAAc,CAAC,GAAW,EAAA;AAChC,QAAA,QAAQ,GAAG;AACT,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,uBAAuB,CAAC;AACjC,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,0BAA0B,CAAC;AACpC,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,mBAAmB,CAAC;AAC7B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,kBAAkB,CAAC;AAC5B,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,sBAAsB,CAAC;AAChC,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,4BAA4B,CAAC;AACtC,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACF;;AAhGU,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAUf,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAV9B,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,ECnBrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,igDAyCA,EDxBY,MAAA,EAAA,CAAA,+hBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,0VAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEnH,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,YAAY,EAAA,OAAA,EAGb,CAAC,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,igDAAA,EAAA,MAAA,EAAA,CAAA,+hBAAA,CAAA,EAAA,CAAA;;0BAYlH,MAAM;2BAAC,qBAAqB,CAAA;;;MEX9B,kBAAkB,CAAA;AAL/B,IAAA,WAAA,GAAA;QAQE,IAAgB,CAAA,gBAAA,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAK9C,KAAA;AAHC,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC5C;;+GAPU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,wFClB/B,yjCAqCQ,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDnBK,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,yjCAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,CAAA;8BAKb,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MENK,4BAA4B,CAAA;AAIvC,IAAA,WAAA,CAA4C,IAAS,EAAA;QAAT,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAAK;AAEnD,IAAA,cAAc,CAAC,QAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG,EAAG,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA,EAAE,CAAC,CAAC;YACzH,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,GAAQ,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC1G,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAChG,aAAA;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;IAEO,SAAS,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,CAC3D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG,EAAG,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAmB,CAAA,EAAE,CAAC,EACrI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EACvC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EACzC,UAAU,EACV,IAAI,EACJ,KAAK,CACN,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;KACzF;;AApCU,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,kBAInB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAJxB,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,4DCbzC,wlDA2CM,EAAA,MAAA,EAAA,CAAA,imBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9BO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,wlDAAA,EAAA,MAAA,EAAA,CAAA,imBAAA,CAAA,EAAA,CAAA;;0BAQnB,MAAM;2BAAC,eAAe,CAAA;;;MEExB,qBAAqB,CAAA;IAMhC,WAAoB,CAAA,GAAmB,EAAU,MAAiB,EAAA;QAA9C,IAAG,CAAA,GAAA,GAAH,GAAG,CAAgB;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AALlD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAc,CAAC;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAO,CAAC;AAExC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,OAAO,EAAoB,CAAC;KAEH;AAEvE,IAAA,UAAU,CAAC,IAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAC9C;AAED,IAAA,gBAAgB,CAAC,IAAqB,EAAA;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE;AACxE,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,MAAM,EAAE,oBAAoB;AAC7B,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,gBAAgB,CACd,KAAa,EACb,IAAqB,EACrB,IAAY,EACZ,OAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YAChC,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,OAAO;AACR,SAAA,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAC9C;AAED,IAAA,gBAAgB,CAAC,IAAqB,EAAA;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;AACjE,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,MAAM,EAAE,oBAAoB;AAC7B,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,SAA2B,EAAA;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,SAAS;AACT,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtC;AAED,IAAA,UAAU,CAAC,IAAgB,EAAA;QACzB,IAAI,UAAU,GAAwE,mBAAmB,CAAC;QAE1G,QAAQ,IAAI,CAAC,KAAK;AAChB,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,WAAW;gBACd,UAAU,GAAG,oBAAoB,CAAC;gBAClC,MAAM;AACR,YAAA,KAAK,SAAS,CAAC;AACf,YAAA,KAAK,iBAAiB,CAAC;AACvB,YAAA,KAAK,kBAAkB;gBACrB,UAAU,GAAG,sBAAsB,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;AACtC,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,YAAY,EAAE,KAAK;YACnB,UAAU;YACV,IAAI;AACL,SAAA,CAAC,CAAA;KACH;;;AAID,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,4BAA4B,EAC5B;AACE,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,YAAY,EAAE,KAAK;YACnB,IAAI;AACL,SAAA,CACF,CAAC;KACH;;kHAxFU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,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,CAAA;;;MCFY,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAAoB,MAAc,EAAU,cAA8B,EAAU,YAAmC,EAAA;QAAnG,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QAE9G,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;QAI/B,IAAU,CAAA,UAAA,GAAiB,IAAI,CAAC;QAExC,IAAQ,CAAA,QAAA,GAAe,IAAI,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAGjB,QAAA,IAAA,CAAA,QAAQ,GAAe;AAC9B,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,KAAK,EAAE,EAAE;SACV,CAAC;KAnB0H;AAqB5H,IAAA,eAAe,CAAC,IAAgB,EAAA;AAC9B,QAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AACjC,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO;AACT,YAAA,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,CAAC;AACT,qBAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;oBACjB,QAAQ,CAAC,IAAI,EAAE;AACZ,yBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;wBACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;wBACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;wBACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC;AACD,qBAAA,KAAK,CAAC,CAAC,CAAC,KAAI;AACX,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,+CAA+C,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7M,iBAAC,CAAC,CAAC;gBACL,OAAO;AACT,YAAA,KAAK,QAAQ;AACX,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC7B,OAAO;AACV,SAAA;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAElD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;SACnC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC3D;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO;AAErC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK;AAC7B,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;aAC1C,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,aAAa,CAAC,OAAO,CACnB,CAAC,YAAY,MACV,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAC5D,CAAC;KACH;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CACvC,CAAC;KACH;AAED,IAAA,eAAe,CAAC,IAAgB,EAAA;AAC9B,QAAA,QACE,CAAC,CAAC,IAAI,CAAC,QAAQ;YACf,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EACrE;KACH;IAED,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACzC,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAAC;aACvD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;KACvC;;qHAvGU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAqC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKxB,YAAY,ECrBzB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8nEA6DA,2lED/Cc,CAAC,eAAe,EAAE,WAAW,CAAC,EAAA,CAAA,CAAA;2FAE/B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGpB,UAAA,EAAA,CAAC,eAAe,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,8nEAAA,EAAA,MAAA,EAAA,CAAA,68BAAA,CAAA,EAAA,CAAA;0JAKjC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEmB,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAAC,YAAY,CAAA;;;MENZ,kCAAkC,CAAA;AAa7C,IAAA,WAAA,GAAA;QAZS,IAAe,CAAA,eAAA,GAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAmB,CAAC;QAUvD,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,SAAS,CAAC;AAC5E,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO;AACR,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KAC/D;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KACrC;AAED,IAAA,WAAW,CAAC,UAA2B,EAAA;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChC,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;AACR,aAAA;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAED,IAAA,cAAc,CAAC,UAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;KAC9B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;+HApFU,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,0TCf/C,sTAOgB,EAAA,MAAA,EAAA,CAAA,+FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDQH,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,sTAAA,EAAA,MAAA,EAAA,CAAA,+FAAA,CAAA,EAAA,CAAA;0EAKlC,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAEiB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;;;MEVX,yBAAyB,CAAA;IAQpC,WAAoB,CAAA,MAAc,EAAS,YAAmB,EAAA;QAA1C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAS,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAO;AAPvD,QAAA,IAAA,CAAA,GAAG,GAAS,IAAI,IAAI,EAAE,CAAC;QAE9B,IAAkB,CAAA,kBAAA,GAAG,kBAAkB,CAAC;QAE/B,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;KAGwC;IAEnE,QAAQ,GAAA;QACN,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAEzD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACpC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;YACtC,OAAO;AACR,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KACtC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,MAAM;aACf,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CACvB;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC/C,SAAC,CAAC,CAAC;KACN;;sHA7BU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,6FCXtC,ukBAeA,EAAA,MAAA,EAAA,CAAA,mwBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDJa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,ukBAAA,EAAA,MAAA,EAAA,CAAA,mwBAAA,CAAA,EAAA,CAAA;qHASxB,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEJK,0BAA0B,CAAA;IAsCrC,WACU,CAAA,cAA8B,EACN,IAAS,EAAA;QADjC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QACN,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;QArC3C,IAAW,CAAA,WAAA,GAAG,kBAAkB,CAAC;AAEjC,QAAA,IAAA,CAAA,YAAY,GAAG;AACb,YAAA,aAAa,EAAE;AACb,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACxC,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AACzC,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;AAC1C,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACvC,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;AACD,YAAA,eAAe,EAAE;AACf,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;AAC1C,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA;SACF,CAAC;AAMA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAElC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;AACnE,SAAC,CAAC,CAAC;KACJ;IAEO,kBAAkB,CAAC,GAAW,EAAE,IAAa,EAAA;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;KACxC;AAEO,IAAA,uBAAuB,CAAC,GAAW,EAAA;QACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;AACvC,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;KACtB;IAEO,cAAc,CAAC,GAAwB,EAAE,GAAW,EAAA;QAC1D,OAAO,GAAG,CAAC,IAAI,CACb,UAAU,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAC9D,GAAG,CAAC,CAAC,GAAG,KAAI;AACV,YAAA,IAAI,CAAC,GAAG;gBAAE,OAAO;AACjB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SAC9C,CAAC,CACH,CAAC;KACH;;AArEU,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,6CAwC3B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxCd,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,8DCZvC,48CA+CA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAc,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDnCa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,48CAAA,EAAA,MAAA,EAAA,CAAA,wGAAA,CAAA,EAAA,CAAA;;0BA4C/B,MAAM;2BAAC,eAAe,CAAA;;;ME9Cd,gCAAgC,CAAA;IAG3C,QAAQ,GAAA;QACN,MAAM,QAAQ,GAAG,MAAa,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KAClD;;6HANU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,gCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,yGCN7C,wJAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDAa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;+BACE,+BAA+B,EAAA,QAAA,EAAA,wJAAA,EAAA,CAAA;8BAIhC,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,wCAAwC,CAAA;AAEnD,IAAA,WAAA,CACqC,IAAI,EAAA;QAAJ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAA;KACpC;;AAJM,wCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wCAAwC,kBAGzC,kBAAkB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAHjB,wCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wCAAwC,8ECPrD,0OAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDDa,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAJpD,SAAS;+BACE,wCAAwC,EAAA,QAAA,EAAA,0OAAA,EAAA,CAAA;;0BAM/C,MAAM;2BAAC,kBAAkB,CAAA;;;MEFjB,8BAA8B,CAAA;AAGzC,IAAA,WAAA,CAAmB,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAAI;IAE/C,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/D;;2HAPU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,+FCR3C,+KAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDKa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,+KAAA,EAAA,CAAA;oGAK9B,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEDK,+BAA+B,CAAA;AAL5C,IAAA,WAAA,GAAA;QAMW,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QACnB,IAAO,CAAA,OAAA,GAAwB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAChE,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAElB,QAAA,IAAA,CAAA,OAAO,GAA0B,IAAI,YAAY,EAAW,CAAC;AAKxE,KAAA;AAHC,IAAA,KAAK,CAAC,MAAe,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;;4HATU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,uMCR5C,m0BAiCA,EAAA,MAAA,EAAA,CAAA,kEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDzBa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACE,wCAAwC,EAAA,QAAA,EAAA,m0BAAA,EAAA,MAAA,EAAA,CAAA,kEAAA,CAAA,EAAA,CAAA;8BAKzC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEI,OAAO,EAAA,CAAA;sBAAhB,MAAM;;;MELI,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QAOW,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAC9B,KAAA;;iHAHY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,8GCRjC,23BA+BA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiC,+BAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDvBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,23BAAA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,CAAA;8BAKnB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MEAK,mBAAmB,CAAA;IAsB9B,WACS,CAAA,MAAiB,EACjB,YAAmC,EAAA;QADnC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;AAE1C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,SAAS,CACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC;KACH;AAEO,IAAA,UAAU,CAAC,IAAgB,EAAA;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,UAAU,EAAE,mBAAmB;YAC/B,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;AACF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE5D,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAChE;AAEM,IAAA,WAAW,CAAC,MAAW,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnD;AAEO,IAAA,gBAAgB,CAAC,IAAgB,EAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YACjC,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;KACnC;AAEO,IAAA,gBAAgB,CAAC,IAAsB,EAAE,WAAW,GAAG,KAAK,EAAA;AAClE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,KAAK,EAAE,OAAO;AACf,SAAA,CAAC,CAAC;AAEH,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAChE;;gHApFU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvC,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAwC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uiBCVhC,kyBA0Bc,EAAA,MAAA,EAAA,CAAA,ywBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhBD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,kyBAAA,EAAA,MAAA,EAAA,CAAA,ywBAAA,CAAA,EAAA,CAAA;mIAQV,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;gBAMJ,SAAS,EAAA,CAAA;sBAA7B,SAAS;uBAAC,QAAQ,CAAA;gBAEQ,eAAe,EAAA,CAAA;sBAAzC,SAAS;uBAAC,cAAc,CAAA;gBAGC,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;gBAGK,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;;;MEpBhB,uBAAuB,CAAA;IAIlC,WACU,CAAA,KAAY,EACZ,gBAAkC,EAAA;QADlC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QALpC,IAAS,CAAA,SAAA,GAAoC,EAAE,CAAC;QAChD,IAAgB,CAAA,gBAAA,GAAW,EAAE,CAAC;QAMpC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACJ;IAEM,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAEM,mBAAmB,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAEM,IAAA,QAAQ,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AAC1D,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS;gBAAE,OAAO;AAC1C,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,iBAAiB,CAAC,KAAsC,EAAA;AAC7D,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;;oHAlCU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAoB,YAAqC,EAAA;QAArC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;AACvD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;KAC/D;;uHAHU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA0C,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+DCPvC,sIAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDEa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,sIAAA,EAAA,CAAA;;;MEQxB,4BAA4B,CAAA;IAGvC,WACS,CAAA,kBAAoC,EACnC,kBAAsC,EAAA;QADvC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAkB;QACnC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAJhD,QAAA,IAAA,CAAA,YAAY,GAA2B,kBAAkB,CAAC,YAAY,CAAC;KAKlE;AAEL,IAAA,cAAc,CAAC,IAAS,EAAA;QACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1E,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACjE;AAED,IAAA,OAAO,CAAC,IAAI,EAAA;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;KACxE;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW;AACxC,cAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW;AACrC,cAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;KACzC;;yHAtBU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3C,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA4C,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,iECZzC,maAgBW,EAAA,MAAA,EAAA,CAAA,2wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDJE,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,maAAA,EAAA,MAAA,EAAA,CAAA,2wBAAA,CAAA,EAAA,CAAA;;;MEE1B,kCAAkC,CAAA;AAN/C,IAAA,WAAA,GAAA;QAOW,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;QACpC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAEpC,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC/B,KAAA;;+HALY,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,ECV/C,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6eAWwB,EDHV,MAAA,EAAA,CAAA,uiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,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,EAAA+C,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,CAAA,CAAA;2FAEtB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAG/B,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,6eAAA,EAAA,MAAA,EAAA,CAAA,uiBAAA,CAAA,EAAA,CAAA;8BAGxB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEuBK,2BAA2B,CAAA;AA2BtC,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAzBvC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAyB;AACtC,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,wBAAwB,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC,EAAE;AACrI,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,UAAU,EAAE;AACV,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;SACF,CAAC;QACO,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;AAC9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO,CAAC;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAkC,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAM9D,IAAgB,CAAA,gBAAA,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAER;IAE9C,aAAa,GAAA;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvE;IAED,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;KAC5C;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;KACjF;IAEM,YAAY,GAAA;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,SAAS,CACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,KAAK,CACN;aACA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACzC;AAEO,IAAA,SAAS,CAAC,cAAmB,EAAA;QACnC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;AAClD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CACxD,cAAc,CAAC,WAAW,CAAC,CAAC,IAAqB,CAClD,CAAC;YAEF,MAAM,IAAI,GAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACjD,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,MAAM,CAAC,KAAe,EACtB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAC1B;AACD,gBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACjC,aAAA,CAAC,CAAC,CAAC;YAEJ,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAEO,IAAA,OAAO,CAAC,WAAmB,EAAA;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAC7B,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,KAAK,WAAW,CAC/C,EAAE,IAAI,CAAC;KACT;IAEO,QAAQ,CAAC,KAAa,EAAE,IAAY,EAAA;AAC1C,QAAA,OAAO,gBAAgB,CAAC,qBAAqB,CAC3C,KAAK,EACL,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAC/B,CAAC;KACH;;wHAvGU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuB3B,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1DzB,+kCA2BM,EAAA,MAAA,EAAA,CAAA,iLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDQO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,+kCAAA,EAAA,MAAA,EAAA,CAAA,iLAAA,CAAA,EAAA,CAAA;iGAM3B,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAcG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAIW,UAAU,EAAA,CAAA;sBAA3B,SAAS;uBAAC,KAAK,CAAA;gBACS,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAAC,YAAY,CAAA;;;ME7CZ,0BAA0B,CAAA;AAYrC,IAAA,WAAA,CACS,WAAwB,EACxB,cAA8B,EAC7B,MAAiB,EAAA;QAFlB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC7B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AAZjB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QAIvC,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QAU7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;KAChG;AAVD,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvD;IAUD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;KAC7B;IAEM,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAC3C,YAAA,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AACtC,SAAA,CAAC,CAAC;KACJ;;uHA5BU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/C,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAgD,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA9C,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,kKCbvC,ozDA6CW,EAAA,MAAA,EAAA,CAAA,g/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0C,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhCE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,ozDAAA,EAAA,MAAA,EAAA,CAAA,g/BAAA,CAAA,EAAA,CAAA;wJAK1B,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;METI,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/C,KAAA;;mHAJY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6JCPnC,mQAI0B,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGb,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,mQAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;8BAKrB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;AEVT;MAYa,gBAAgB,CAAA;IAI3B,WAAoB,CAAA,aAA+B,EAAU,WAA2C,EAAA;QAApF,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgC;QAHhG,IAAO,CAAA,OAAA,GAA6B,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAG2B;IAE7G,IAAa,UAAU,CAAC,KAAQ,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,SAAA;KACF;AAeD;;;;;AAKG;AACH,IAAA,OAAO,sBAAsB,CAAI,GAAwB,EAAE,GAAQ,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC;KACb;;6GAnCU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA,CAAA;iIAOc,UAAU,EAAA,CAAA;sBAAtB,KAAK;;;ACFD,MAAM,gBAAgB,GAAG,GAAG;MAOtB,mCAAmC,CAAA;IAoB9C,WAAoB,CAAA,EAAe,EAAU,eAAkC,EAAA;QAA3D,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAAU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAmB;QAnBtE,IAAe,CAAA,eAAA,GAAmC,EAAE,CAAC;QACrD,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAA2B,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA2B,CAAC;QAM5D,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAgB,CAAA,gBAAA,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QAQnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACd,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACrB,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACf,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY;AAC3C,aAAA,IAAI,CACHC,cAAY,CAAC,GAAG,CAAC,EACjBC,sBAAoB,EAAE,EACtB,SAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAC7C;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7C,KAAK,EAAE,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK;AACpC,SAAA,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC;KACtC;AAEM,IAAA,aAAa,CAAC,QAAa,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC;KAC3H;IAEM,cAAc,GAAA;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAEM,IAAA,cAAc,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAEM,IAAA,QAAQ,CAAC,IAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;AAEM,IAAA,MAAM,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAE5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjC;AAGO,IAAA,UAAU,CAAC,IAAsB,EAAA;QACvC,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YAC9C,KAAK,EAAE,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK;AACpC,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,oBAAoB,CAAC,IAAsB,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CACvC,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EACpB,IAAI,CAAC,QAAQ,EACb,IAAI,CACL,CAAC;KACH;AAEO,IAAA,cAAc,CAAC,QAAuD,EAAE,aAAa,GAAG,KAAK,EAAA;AACnG,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACrD,SAAA;AACI,aAAA,IAAI,IAAI,CAAC,SAAS,CAAC,sBAAsB,IAAI,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,aAAa,KAAK,QAAQ,CAAC,cAAc,CAAC,aAAa;YAC9I,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;;YAEvD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAA8B,CAAA,CAAC,CAAC;AACtK,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;;gIAzGU,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAsD,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,4VCvBhD,goHAgGM,EAAA,MAAA,EAAA,CAAA,09BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAA,IAAA,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,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6C,kCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDzEO,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACE,mCAAmC,EAAA,QAAA,EAAA,goHAAA,EAAA,MAAA,EAAA,CAAA,09BAAA,CAAA,EAAA,CAAA;iIAKpC,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEiB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;;;MEnBX,iCAAiC,CAAA;AAQ5C,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAP1B,IAAW,CAAA,WAAA,GAAyB,EAAE,CAAC;QACvC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;AACxD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAwC,CAAC;QAKrF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAqB,IAAI,CAAC;AAC1C,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY;YACpC,OAAO;QAET,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAEzC,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/D,SAAS;AACV,aAAA;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACjE,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KAC/G;IAEM,WAAW,GAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0C,CAAC;AAE9D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;AAC7C,gBAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACnC,SAAS;AACV,aAAA;AACD,YAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClC;;8HA9CU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3D,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,sPCX9C,6lEA8Ce,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkD,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA1D,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDnCF,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;+BACE,0CAA0C,EAAA,eAAA,EAGnC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6lEAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,CAAA;oGAGtC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;MEDI,uBAAuB,CAAA;AAuClC,IAAA,WAAA,CAAoB,eAAkC,EAAA;QAAlC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAmB;QAtC7C,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAe,CAAA,eAAA,GAAyB,EAAE,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAyC,IAAI,GAAG,EAAmC,CAAC;QAE/F,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAEzB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAsB,CAAC;QAE/D,IAAc,CAAA,cAAA,GAAoB,EAAE,CAAC;QAErC,IAAW,CAAA,WAAA,GAAyB,EAAE,CAAC;QACvC,IAAK,CAAA,KAAA,GAA8B,EAAE,CAAC;QAGtC,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAavB,IAAO,CAAA,OAAA,GAAuD,EAAE,CAAC;QAEjE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAOkC;AArB3D,IAAA,IAAW,cAAc,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc;AACtB,YAAA,OAAO,EAAE,CAAC;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AACjF,QAAA,IAAI,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9C,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAC9B,YAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,OAAO,CAAA,EAAG,YAAY,CAAM,GAAA,EAAA,UAAU,QAAQ,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;KACjE;AAQD,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAID,QAAQ,GAAA;QAEN,IAAI,IAAI,CAAC,kBAAkB;YACzB,OAAO;AAET,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,GAAG,CAAC,WAAW;AACrB,gBAAA,UAAU,EAAE,GAAG;AAChB,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,GAAG,KAAK,CAAA,CAAE,CAAC,CAAC;AAChE,SAAA;QACD,IAAI,IAAI,CAAC,WAAW;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAO;KACR;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;AACrC,aAAA,IAAI,CACH,MAAM,CAAC,IAAI,IAAG;YACZ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;AACtB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,EACF,GAAG,CAAC,IAAI,IAAG;AACT,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,aAAa;AACrB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;gBAE7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzF,SAAC,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAChD,SAAS,CAAC,IAAI,IAAG;AACf,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;IAEM,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,wBAAwB,EAAE;AAC5B,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,IAAG;AACf,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;AAEM,IAAA,aAAa,CAAC,IAAa,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;KACtE;AAEM,IAAA,UAAU,CAAC,QAAyB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9E;AAEO,IAAA,WAAW,CAAC,QAA0B,EAAA;QAC5C,OAAO,IAAI,CAAC,eAAe;AACzB,YAAA,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACzE,aAAA,IAAI,CACH,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,OAAO,EAAE,CAA0C;AACjD,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC,CAAA;SACH,CAAC,CACH,CAAC;KACL;AAEO,IAAA,mBAAmB,CAAC,OAAgD,EAAA;QAC1E,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAiC,IAAI,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,cAAc;YACxB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAE3B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACzB;IAEO,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzE;AAEO,IAAA,uBAAuB,CAAC,WAAiC,EAAA;AAC/D,QAAA,MAAM,SAAS,GAA4B,IAAI,GAAG,EAAE,CAAC;QACrD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAwB,EAAE,CAAC;AAC5C,QAAA,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;AAChC,YAAA,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,YAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC,WAAW;AACxB,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,CAAC,CAAC;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,WAAW;AAClB,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,GAAG,KAAK,CAAA,CAAE,CAAC,CAAC;KAC/D;;oHAvKU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAevB,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B/C,2uIA4GM,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqD,kCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,iCAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhE,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAiE,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9FO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,+BAA+B,EAAA,QAAA,EAAA,2uIAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,CAAA;qGAKhC,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBAOwC,SAAS,EAAA,CAAA;sBAAvD,SAAS;uBAAC,kCAAkC,CAAA;;;MEjBlC,kCAAkC,CAAA;AAsC7C,IAAA,WAAA,CAAmB,kBAAoC,EAAA;QAApC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAkB;QArC9C,IAAe,CAAA,eAAA,GAAwB,EAAE,CAAC;QAC1C,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAE9B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAE1B,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;QACvB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAC1B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAuB,CAAC;QAG1D,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QACpB,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QACpB,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,eAAe,GAAG,WAAW,CAAC,aAAa,CAAC;KAmBS;AAd5D,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;KAC1E;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;YACvC,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAI,CAAA,EAAA,EAAE,CAAC,IAAI,CAAE,CAAA;YACjC,WAAW,EAAE,EAAE,CAAC,WAAW;YAC3B,IAAI,EAAE,EAAE,CAAC,IAAI;AACS,SAAA,CAAA,CAAC,CAAC;KAC3B;IAIM,eAAe,GAAA;;AAEpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;KACnF;AAEM,IAAA,oBAAoB,CAAC,IAA4E,EAAA;AACtG,QAAA,IAAI,MAA0B,CAAC;AAC/B,QAAA,IAAI,QAAiB,CAAC;QACtB,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACrB,YAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1B,SAAA;AACI,aAAA;YACH,MAAM,GAAG,IAAI,CAAC;AACd,YAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7G,SAAA;AAED,QAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC/B,IAAI,CAAC,iBAAiB,CAAC;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,IAAI;AACjB,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,CACzB,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CACvE,CACF,CAAC;AACH,SAAA;KACF;IAEM,gBAAgB,CAAC,GAA4B,EAAE,KAAc,EAAA;AAClE,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,iBAAiB,CAAC;gBACrB,IAAI,EAAE,GAAG,CAAC,UAAU;gBACpB,UAAU,EAAE,GAAG,CAAC,GAAG;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,gBAAA,WAAW,EAAE,EAAE;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,EAAE,GAAG,CAAC,UAAU;AACpB,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CACzD,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,KAAK,GAAG,CAAC,GAAG,CAChE,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,OAOzB,EAAA;QACC,IAAI,IAAI,CAAC,YAAY;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;YACH,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAE1D,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;AACrG,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACxG,SAAA;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACvD;;+HA7GU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/D,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,ulBCZ/C,muFA0CM,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8D,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mCAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9BO,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,muFAAA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA,CAAA;uGAKnC,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBAQiB,aAAa,EAAA,CAAA;sBAApC,SAAS;uBAAC,WAAW,CAAA;;;MEzBX,kCAAkC,CAAA;AAL/C,IAAA,WAAA,GAAA;QAMW,IAAgB,CAAA,gBAAA,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAG3D,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAuB,CAAC;AAO3E,KAAA;AALC,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAC7D,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CACvE,CAAC,CAAC,CAAC;KACL;;+HAVU,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,qLCR/C,y/DAoEM,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD5DO,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,y/DAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,CAAA;8BAOnC,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;;;MEHI,0BAA0B,CAAA;AALvC,IAAA,WAAA,GAAA;QAOW,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AACpC,KAAA;;uHAHY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,gHCTvC,sOAMM,EAAA,MAAA,EAAA,CAAA,mQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,sOAAA,EAAA,MAAA,EAAA,CAAA,mQAAA,CAAA,EAAA,CAAA;8BAKzB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,mCAAmC,CAAA;IAoB9C,WACmC,CAAA,IAA2B,EACpD,SAA4B,EAAA;QADH,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAuB;QACpD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;;QApB/B,IAAe,CAAA,eAAA,GAAwB,EAAE,CAAC;;QAI1C,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAkB,CAAA,kBAAA,GAAW,CAAC,CAAC;QAiBpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS;YACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/F;IAEM,IAAI,GAAA;QACT,IAAI,IAAI,CAAC,kBAAkB;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;;YAEpD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC9C;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;AAEM,IAAA,qBAAqB,CAAC,eAAoC,EAAA;QAC/D,IAAI,IAAI,CAAC,kBAAkB;YACzB,IAAI,CAAC,kBAAkB,CAAC,CAAG,EAAA,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAA,CAAA,EAAI,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAE,CAAA,CAAC,CAAC;;AAExI,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEzC,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;AAEO,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;AAEtD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5D,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KACtD;IAEM,OAAO,sBAAsB,CAAC,OAAuC,EAAA;QAC1E,MAAM,GAAG,GAAwB,EAAE,CAAC;AAEpC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvC,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACtB,MAAM,EAAE,GAAG,CAAA,EAAG,GAAG,CAAC,IAAI,CAAA,CAAA,EAAI,GAAG,CAAC,UAAU,CAAA,CAAE,CAAC;AAC3C,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO;AAEjC,YAAA,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAErB,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,GAAG,EAAE,EAAE;AACR,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;KACZ;;AA1FU,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,kBAqBpC,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBd,mCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,qLCXhD,68FAkEM,EAAA,MAAA,EAAA,CAAA,k8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmE,kCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDvDO,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACE,mCAAmC,EAAA,QAAA,EAAA,68FAAA,EAAA,MAAA,EAAA,CAAA,k8BAAA,CAAA,EAAA,CAAA;;0BAyB1C,MAAM;2BAAC,eAAe,CAAA;yEAHF,cAAc,EAAA,CAAA;sBAApC,SAAS;uBAAC,UAAU,CAAA;;;MErBV,0BAA0B,CAAA;AALvC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;AACxD,KAAA;;uHAJY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,4KCRvC,qbAWM,EAAA,MAAA,EAAA,CAAA,y/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDHO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,qbAAA,EAAA,MAAA,EAAA,CAAA,y/BAAA,CAAA,EAAA,CAAA;8BAK1B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MEHI,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;AAYxD,KAAA;IAVQ,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,YAAY;gBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAA;KACF;;yHAnBU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,wSCRzC,+jBAYM,EAAA,MAAA,EAAA,CAAA,48BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwE,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDJO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,+jBAAA,EAAA,MAAA,EAAA,CAAA,48BAAA,CAAA,EAAA,CAAA;8BAK5B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEFI,wBAAwB,CAAA;IAiBnC,WACS,CAAA,MAAc,EACd,SAA2B,EAC1B,cAA8B,EAC9B,YAAmC,EACnC,uBAAgD,EAAA;QAJjD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QACnC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;QApBjD,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;QACzB,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QAK5B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAyB,CAAC;QAElE,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QACxB,IAAS,CAAA,SAAA,GAAgB,EAAE,CAAC;KAWlC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,MAAM;aACf,IAAI,CAAC6B,QAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAAC;AACrD,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE;YACnC,MAAM,WAAW,GAAmB,EAAE,CAAC;AACvC,YAAA,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;gBACzC,MAAM,YAAY,GAAmB,EAAE,CAAC;AACxC,gBAAA,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ;AACpC,oBAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9D,wBAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE/B,gBAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;AACzB,oBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;AACtE,aAAA;YAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ;AAC/C,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACtC;AAEM,IAAA,WAAW,CAAC,WAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC;AAEM,IAAA,YAAY,CAAC,cAAuB,EAAA;QACzC,QAAQ,cAAc,CAAC,QAAQ;AAC7B,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC1C,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM;AACT,SAAA;KACF;AAEM,IAAA,eAAe,CAAC,GAAW,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACpB;IAEM,cAAc,GAAA;AACnB,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACrD,QAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrB;AAEM,IAAA,MAAM,CAAC,GAAW,EAAA;AACvB,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,SAAA;;AAAM,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACxC;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;AACnC,aAAA,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;KAC1C;AAEO,IAAA,QAAQ,CAAC,MAAqB,EAAA;AACpC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/D;AAEO,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC1B,KAAK,CAAC,GAAG,CAAC;AACP,aAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;YACjB,QAAQ,CAAC,IAAI,EAAE;AACZ,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;gBACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,CAAC,KAAI;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3B,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,+CAA+C,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACjH,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,cAAc,CAAC,GAAW,EAAA;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACjH,IAAI,IAAI,CAAC,eAAe;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;YAExH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AACzE,SAAA;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1D,SAAA;KACF;;qHAnJU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,qUCdrC,yrDA4CM,EAAA,MAAA,EAAA,CAAA,qhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqE,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9BO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,yrDAAA,EAAA,MAAA,EAAA,CAAA,qhBAAA,CAAA,EAAA,CAAA;4NAKvB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEI,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;;;MEhBI,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAFvC,IAAM,CAAA,MAAA,GAAG,2BAA2B,CAAC;KAEO;AAEpD,IAAA,SAAS,CAAC,SAAgD,EAAA;AAExD,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,OAAO,EAAE,CAAC;QAEZ,IAAI,YAAY,IAAI,SAAS;AAC3B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,cAAc,IAAI,SAAS;AAC7B,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,kBAAkB,IAAI,SAAS;AACjC,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAE5C,QAAA,OAAO,EAAE,CAAC;KACX;AAEO,IAAA,iBAAiB,CAAC,UAAsB,EAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,SAAS;YACvB,OAAO,UAAU,CAAC,IAAI,CAAC;AAEzB,QAAA,IAAI,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI;AAC3C,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAA2B,yBAAA,CAAA,CAAC,CAAC;AAC3E,QAAA,IAAI,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK;AAC5C,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAA4B,0BAAA,CAAA,CAAC,CAAC;QAE5E,OAAO,UAAU,CAAC,IAAI,CAAC;KACxB;AAEO,IAAA,YAAY,CAAC,KAAY,EAAA;AAE/B,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,aAAa;AACtC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAqB,mBAAA,CAAA,CAAC,CAAC;AAErE,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM;AAC/B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAsB,oBAAA,CAAA,CAAC,CAAC;QAEtE,OAAO,KAAK,CAAC,IAAI,CAAC;KACnB;AAEO,IAAA,kBAAkB,CAAC,WAA6B,EAAA;QACtD,IAAI,WAAW,CAAC,SAAS;AACvB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAuB,qBAAA,CAAA,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC,IAAI,CAAC;KACzB;;qHAlDU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3E,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;mHAAxB,wBAAwB,EAAA,IAAA,EAAA,kCAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,kCAAkC;AACzC,iBAAA,CAAA;;;MCOY,yBAAyB,CAAA;AAqIpC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAnI7C,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,aAAa,GAAmB;YACvC,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,MAAM;YACN,OAAO;SACR,CAAC;AACQ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AAE1C,QAAA,IAAA,CAAA,oBAAoB,GAAiB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAElD,IAAc,CAAA,cAAA,GAAG,8BAA8B,IAAI,CAAC,gBAAgB,CAAC,WAAW,yBAAyB,CAAC;AAE1G,QAAA,IAAA,CAAA,SAAS,GAAyB;AAChD,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAChC,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAChC,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;AACjC,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;AACrC,YAAA,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;AACvC,YAAA,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE;AAC5C,YAAA,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;AACnC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;AACtC,YAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;AACjD,YAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;AAChD,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;AACzC,YAAA,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE;AACvC,YAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1C,YAAA,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE;AACxC,YAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3C,YAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;AACzC,YAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1C,YAAA,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE;AACxC,YAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;AACzC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACjC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/B,YAAA,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAChC,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;SACtB,CAAC;AAEH,QAAA,IAAA,CAAA,mBAAmB,GAA2B;YACpD,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,CAAC;YACjE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACnC,kCAAkC,CACnC;YACD,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACrC,oCAAoC,CACrC;YACD,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC1C,oCAAoC,CACrC;AACD,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,iCAAiC,EACjC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB;AACD,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,iCAAiC,EACjC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB;AACD,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,iCAAiC,EACjC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB;AACD,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACtC,iCAAiC,EACjC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB;AACD,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACxC,iCAAiC,EACjC,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB;AACD,YAAA,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACnD,mCAAmC,EACnC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAC7B;AACD,YAAA,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAClD,mCAAmC,EACnC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAC5B;AACD,YAAA,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC9C,gCAAgC,EAChC,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB;AACD,YAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC5C,gCAAgC,EAChC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB;YACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC7C,4CAA4C,CAC7C;YACD,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC;YACzE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACrE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gCAAgC,CAAC;SACxE,CAAC;KAEyD;AAEpD,IAAA,aAAa,CAAC,QAAgB,EAAA;QACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAC1E,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC3C;;sHA1IU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,sOCdtC,2zCAyCA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD3Ba,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,2zCAAA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,CAAA;uGAMlC,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAOI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;MElBI,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAa9C,KAAA;IAXQ,SAAS,CAAC,IAAuB,EAAE,MAA2B,EAAA;AACnE,QAAA,IAAI,CAAC,IAAI;AACP,YAAA,OAAO,IAAI,CAAC;QAEd,IAAI,OAAO,IAAI,KAAK,QAAQ;AAC1B,YAAA,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,OAAO,IAAI;AACR,aAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACrC,aAAA,cAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;KACrE;;yGAdU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,sBAAsB;AAC7B,iBAAA,CAAA;;;MCCY,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAe9C,KAAA;AAbC,IAAA,SAAS,CAAC,QAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ;AACX,YAAA,OAAO,IAAI,CAAC;QAEd,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC9B,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAE5F,QAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,YAAA,OAAO,SAAS,CAAA;AAElB,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAC,CAAC,CAAC;KACtE;;yGAfU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,sBAAsB;AAC7B,iBAAA,CAAA;;;MCQY,8BAA8B,CAAA;IAOzC,WACS,CAAA,SAAuD,EACrC,IAA+B,EAAA;QADjD,IAAS,CAAA,SAAA,GAAT,SAAS,CAA8C;QAPzD,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAGnB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AAK3B,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,SAAA;KACF;;AAjBU,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,gDAS/B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AATd,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,oDCd3C,0dAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDFa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,SAAS;;;0BAYL,MAAM;2BAAC,eAAe,CAAA;;;MEbd,2BAA2B,CAAA;AALxC,IAAA,WAAA,GAAA;QAOW,IAAe,CAAA,eAAA,GAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAmB,CAAC;AACpD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAmB,CAAC;QAE3D,IAAQ,CAAA,QAAA,GAAsB,EAAE,CAAC;QACjC,IAAW,CAAA,WAAA,GAAoB,IAAI,CAAC;QACpC,IAAQ,CAAA,QAAA,GAAoB,IAAI,CAAC;AAqCzC,KAAA;IAnCQ,OAAO,CAAC,IAAqB,EAAE,gBAAiC,EAAA;QAErE,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;AACR,SAAA;QAED,IAAI,gBAAgB,KAAK,UAAU;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAE5B,IAAI,gBAAgB,KAAK,OAAO;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;AAEf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;IAEM,gBAAgB,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5F,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvC;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;IAEM,gBAAgB,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACzC;;wHA7CU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,4PCVxC,4uBAqBM,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDXO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,4uBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA;8BAM1B,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;MEEI,iCAAiC,CAAA;AAc5C,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAZrC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAkB,CAAC;QAK7D,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAO8B;AAE7C,IAAA,OAAO,CAAC,KAAkB,EAAA;QAC/B,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClF,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC7E,CAAC;KACH;AAEM,IAAA,OAAO,CAAC,IAAqB,EAAA;QAClC,IAAI,IAAI,KAAK,OAAO;YAClB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;YAE1G,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KACvG;IAEM,UAAU,GAAA;QAEf,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM;YACb,OAAO;AAET,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB,EAAE,CAAC,CAAC,CAAC;KACP;IAEM,OAAO,GAAA;QACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpC,YAAA,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,CAAC,+BAA+B,CAAC;AACtC,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;AAChC,YAAA,OAAO,EAAE;gBACP,WAAW;gBACX,UAAU;gBACV,SAAS;AACV,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE;AACpC,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,QAAQ,EAAE;AACR,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,KAAK,EAAE,IAAI;AACZ,iBAAA;AACD,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAEtF,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAElF,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAgB,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;KAC9E;;8HApFU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,kRClB9C,w2DAuDA,EAAA,MAAA,EAAA,CAAA,gdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAuE,YAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrCa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,w2DAAA,EAAA,MAAA,EAAA,CAAA,gdAAA,CAAA,EAAA,CAAA;uGAKlC,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBAEc,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ,CAAA;;;MEXR,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAWW,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAW,CAAC;AAChD,KAAA;;qHAXY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,iSCXrC,06BAsBM,EAAA,MAAA,EAAA,CAAA,klDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5E,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDXO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,06BAAA,EAAA,MAAA,EAAA,CAAA,klDAAA,CAAA,EAAA,CAAA;8BAKvB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;;;AE+FI,MAAA,sBAAsB,GAAsB;AACvD,IAAA,KAAK,EAAE;QACL,SAAS,EAAE,gBAAgB,CAAC,UAAU;AACvC,KAAA;AACD,IAAA,OAAO,EAAE;QACP,SAAS,EAAE,gBAAgB,CAAC,UAAU;AACtC,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;EACD;MAqLW,oBAAoB,CAAA;IAE/B,WAAmB,CAAA,eAAgC,EAAE,SAAuB,EAAA;QAAzD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AACjD,QAAA,eAAe,CAAC,UAAU,CACxB,kBAAkB,EAClB,SAAS,CAAC,8BAA8B,CAAC,iDAAiD,CAAC,CAC5F,CAAC;KACH;IAED,OAAO,OAAO,CAAC,MAAgB,EAAA;AAC7B,QAAA,kBAAkB,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC5D,IAAI,MAAM,CAAC,eAAe;AACxB,YAAA,kBAAkB,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9D,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;SAC/B,CAAC;KACH;;iHAhBU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAjL7B,8BAA8B;QAC9B,uBAAuB;QACvB,4BAA4B;QAC5B,4BAA4B;QAC5B,mCAAmC;QACnC,8BAA8B;QAC9B,iCAAiC;QACjC,iCAAiC;QACjC,yBAAyB;QACzB,YAAY;QACZ,iCAAiC;QACjC,8BAA8B;QAC9B,uBAAuB;QACvB,cAAc;QACd,mBAAmB;QACnB,+BAA+B;QAC/B,oBAAoB;QACpB,wBAAwB;QACxB,kCAAkC;QAClC,kCAAkC;QAClC,oCAAoC;QACpC,gCAAgC;QAChC,4BAA4B;QAC5B,mBAAmB;QACnB,6BAA6B;QAC7B,mBAAmB;QACnB,wCAAwC;QACxC,oCAAoC;QACpC,gCAAgC;QAChC,0BAA0B;QAC1B,sCAAsC;QACtC,2BAA2B;QAC3B,kBAAkB;QAClB,+BAA+B;QAC/B,0BAA0B;QAC1B,0BAA0B;QAC1B,qBAAqB;QACrB,+BAA+B;QAC/B,sBAAsB;QACtB,yBAAyB;QACzB,oBAAoB;QACpB,iBAAiB;QACjB,iCAAiC;QACjC,uBAAuB;QACvB,oBAAoB;QACpB,4BAA4B;QAC5B,gBAAgB;QAChB,kCAAkC;QAClC,mCAAmC;QACnC,mCAAmC;QACnC,kCAAkC;QAClC,wBAAwB;QACxB,yBAAyB;QACzB,4BAA4B;QAC5B,0BAA0B;QAC1B,4BAA4B;QAC5B,sBAAsB;QACtB,0BAA0B;QAC1B,0BAA0B;QAC1B,wBAAwB;QACxB,yBAAyB;QACzB,YAAY;QACZ,8BAA8B;QAC9B,2BAA2B;QAC3B,iCAAiC;QACjC,wBAAwB;QACxB,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,YAAY,EAAAI,EAAA,CAAA,eAAA,EAEZ,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,oBAAoB;QACpB,aAAa;QACb,iBAAiB;QACjB,wBAAwB;QACxB,oBAAoB;QACpB,iBAAiB;QACjB,sBAAsB;QACtB,0BAA0B;QAC1B,kBAAkB;QAClB,eAAe;AACf,QAAA,aAAa,yBAIb,mBAAmB;QACnB,eAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,aAAa;QACb,cAAc;AACd,QAAA,aAAa,aAGb,4BAA4B;QAC5B,8BAA8B;QAC9B,uBAAuB;QACvB,4BAA4B;QAC5B,4BAA4B;QAC5B,mCAAmC;QACnC,8BAA8B;QAC9B,iCAAiC;QACjC,iCAAiC;QACjC,yBAAyB;QACzB,YAAY;QACZ,iCAAiC;QACjC,8BAA8B;QAC9B,uBAAuB;QACvB,cAAc;QACd,wBAAwB;QACxB,kCAAkC;QAClC,kCAAkC;QAClC,oCAAoC;QACpC,gCAAgC;QAChC,4BAA4B;QAC5B,wCAAwC;QACxC,6BAA6B;QAC7B,mBAAmB;QACnB,+BAA+B;QAC/B,oBAAoB;QACpB,oCAAoC;QACpC,mBAAmB;QACnB,gCAAgC;QAChC,0BAA0B;QAC1B,sCAAsC;QACtC,2BAA2B;QAC3B,kBAAkB;QAClB,0BAA0B;QAC1B,0BAA0B;QAC1B,uBAAuB;QACvB,qBAAqB;QACrB,iCAAiC;QACjC,wBAAwB;QACxB,oBAAoB;QACpB,gBAAgB;QAChB,kCAAkC;QAClC,mCAAmC;QACnC,mCAAmC;QACnC,kCAAkC;QAClC,wBAAwB;QACxB,yBAAyB;QACzB,4BAA4B;QAC5B,0BAA0B;QAC1B,4BAA4B;QAC5B,sBAAsB;QACtB,0BAA0B;QAC1B,0BAA0B;QAC1B,wBAAwB;QACxB,yBAAyB;QACzB,YAAY;QACZ,8BAA8B;QAC9B,2BAA2B;QAC3B,iCAAiC;QACjC,wBAAwB;QACxB,YAAY,CAAA,EAAA,CAAA,CAAA;AAMH,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJpB,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AACpE,KAAA,EAAA,OAAA,EAAA,CA1GC,YAAY;QACZ,eAAe,CAAC,QAAQ,EAAE;QAC1B,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,mBAAmB;QACnB,cAAc;QACd,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,oBAAoB;QACpB,aAAa;QACb,iBAAiB;QACjB,wBAAwB;QACxB,oBAAoB;QACpB,iBAAiB;QACjB,sBAAsB;QACtB,0BAA0B;QAC1B,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,gBAAgB,CAAC,OAAO,CAAC;AACvB,YAAA,OAAO,EAAE,MAAM,OAAO,SAAS,CAAC;SACjC,CAAC;QACF,mBAAmB;QACnB,eAAe;QACf,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,aAAa;QACb,cAAc;QACd,aAAa,CAAA,EAAA,CAAA,CAAA;2FAqEJ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnLhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,8BAA8B;wBAC9B,uBAAuB;wBACvB,4BAA4B;wBAC5B,4BAA4B;wBAC5B,mCAAmC;wBACnC,8BAA8B;wBAC9B,iCAAiC;wBACjC,iCAAiC;wBACjC,yBAAyB;wBACzB,YAAY;wBACZ,iCAAiC;wBACjC,8BAA8B;wBAC9B,uBAAuB;wBACvB,cAAc;wBACd,mBAAmB;wBACnB,+BAA+B;wBAC/B,oBAAoB;wBACpB,wBAAwB;wBACxB,kCAAkC;wBAClC,kCAAkC;wBAClC,oCAAoC;wBACpC,gCAAgC;wBAChC,4BAA4B;wBAC5B,mBAAmB;wBACnB,6BAA6B;wBAC7B,mBAAmB;wBACnB,wCAAwC;wBACxC,oCAAoC;wBACpC,gCAAgC;wBAChC,0BAA0B;wBAC1B,sCAAsC;wBACtC,2BAA2B;wBAC3B,kBAAkB;wBAClB,+BAA+B;wBAC/B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,qBAAqB;wBACrB,+BAA+B;wBAC/B,sBAAsB;wBACtB,yBAAyB;wBACzB,oBAAoB;wBACpB,iBAAiB;wBACjB,iCAAiC;wBACjC,uBAAuB;wBACvB,oBAAoB;wBACpB,4BAA4B;wBAC5B,gBAAgB;wBAChB,kCAAkC;wBAClC,mCAAmC;wBACnC,mCAAmC;wBACnC,kCAAkC;wBAClC,wBAAwB;wBACxB,yBAAyB;wBACzB,4BAA4B;wBAC5B,0BAA0B;wBAC1B,4BAA4B;wBAC5B,sBAAsB;wBACtB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,wBAAwB;wBACxB,yBAAyB;wBACzB,YAAY;wBACZ,8BAA8B;wBAC9B,2BAA2B;wBAC3B,iCAAiC;wBACjC,wBAAwB;wBACxB,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe,CAAC,QAAQ,EAAE;wBAC1B,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,mBAAmB;wBACnB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,kBAAkB;wBAClB,gBAAgB;wBAChB,oBAAoB;wBACpB,aAAa;wBACb,iBAAiB;wBACjB,wBAAwB;wBACxB,oBAAoB;wBACpB,iBAAiB;wBACjB,sBAAsB;wBACtB,0BAA0B;wBAC1B,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,gBAAgB,CAAC,OAAO,CAAC;AACvB,4BAAA,OAAO,EAAE,MAAM,OAAO,SAAS,CAAC;yBACjC,CAAC;wBACF,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,gBAAgB;wBAChB,eAAe;wBACf,iBAAiB;wBACjB,wBAAwB;wBACxB,aAAa;wBACb,cAAc;wBACd,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,8BAA8B;wBAC9B,uBAAuB;wBACvB,4BAA4B;wBAC5B,4BAA4B;wBAC5B,mCAAmC;wBACnC,8BAA8B;wBAC9B,iCAAiC;wBACjC,iCAAiC;wBACjC,yBAAyB;wBACzB,YAAY;wBACZ,iCAAiC;wBACjC,8BAA8B;wBAC9B,uBAAuB;wBACvB,cAAc;wBACd,wBAAwB;wBACxB,kCAAkC;wBAClC,kCAAkC;wBAClC,oCAAoC;wBACpC,gCAAgC;wBAChC,4BAA4B;wBAC5B,wCAAwC;wBACxC,6BAA6B;wBAC7B,mBAAmB;wBACnB,+BAA+B;wBAC/B,oBAAoB;wBACpB,oCAAoC;wBACpC,mBAAmB;wBACnB,gCAAgC;wBAChC,0BAA0B;wBAC1B,sCAAsC;wBACtC,2BAA2B;wBAC3B,kBAAkB;wBAClB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,uBAAuB;wBACvB,qBAAqB;wBACrB,iCAAiC;wBACjC,wBAAwB;wBACxB,oBAAoB;wBACpB,gBAAgB;wBAChB,kCAAkC;wBAClC,mCAAmC;wBACnC,mCAAmC;wBACnC,kCAAkC;wBAClC,wBAAwB;wBACxB,yBAAyB;wBACzB,4BAA4B;wBAC5B,0BAA0B;wBAC1B,4BAA4B;wBAC5B,sBAAsB;wBACtB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,wBAAwB;wBACxB,yBAAyB;wBACzB,YAAY;wBACZ,8BAA8B;wBAC9B,2BAA2B;wBAC3B,iCAAiC;wBACjC,wBAAwB;wBACxB,YAAY;AACb,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AACpE,qBAAA;AACF,iBAAA,CAAA;;;MCpSY,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CAA6B,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAK;IAEpD,SAAS,CACP,GAAqB,EACrB,IAAiB,EAAA;AAEjB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAU,CAAC,CAAC,QAA2B,KAAI;YACzC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACtC,gBAAA,OAAO,UAAU,CAAC,MAAM,QAAQ,CAAC,CAAC;YAEpC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAE9D,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBACzB,YAAY,CAAC,UAAU,CAAC;AACtB,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA,CAAC,CAAC;AACA,iBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAChC,YAAY,CAAC,UAAU,CAAC;AACtB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA,CAAC,CAAC;AACJ,aAAA;AACI,iBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAChC,YAAY,CAAC,UAAU,CAAC;AACtB,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA,CAAC,CAAC;AACJ,aAAA;AACI,iBAAA;gBACH,IAAI,MAAM,GAAqB,IAAI,CAAC;gBACpC,IAAI,SAAS,GAAW,IAAI,CAAC;gBAE7B,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,oBAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,wBAAA,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAChC,qBAAA;AAAM,yBAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;wBAC/B,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC,qBAAA;AACD,oBAAA,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;AAChG,iBAAA;gBAED,YAAY,CAAC,UAAU,CACrB;AACE,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,SAAS,EAAE,SAAS;oBACpB,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtC,iBAAA,CACF,CAAC;AACH,aAAA;AAED,YAAA,OAAO,UAAU,CAAC,MAAM,QAAQ,CAAC,CAAC;SACnC,CAAC,CACH,CAAC;KACH;AAEO,IAAA,aAAa,CAAC,GAAW,EAAA;AAC/B,QAAA,QAAQ,IAAI;AACV,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC;AAC9C,gBAAA,OAAO,QAAQ,CAAC;AAClB,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC;AAClD,gBAAA,OAAO,YAAY,CAAC;AACtB,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC;AAChD,gBAAA,OAAO,UAAU,CAAC;AACpB,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC;AAClD,gBAAA,OAAO,OAAO,CAAC;AACjB,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACnD,gBAAA,OAAO,UAAU,CAAC;AACpB,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACpD,gBAAA,OAAO,UAAU,CAAC;AACpB,YAAA,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACnD,gBAAA,OAAO,YAAY,CAAC;AACtB,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACF;;qHAhFU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAxB,wBAAwB,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;MCFE,kBAAkB,CAAA;IAC7B,WACU,CAAA,kBAAsC,EACtC,kBAAoC,EAAA;QADpC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QACtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAkB;KAC1C;IAEJ,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,WAAW,KAAI;YAClB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClD,YAAA,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAC1C,MAAM,EACN,WAAW,CAAC,QAAQ,CACrB,CAAC;AACJ,SAAC,CAAC,EACF,KAAK,EAAE,CACR,CAAC;KACH;;+GAjBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA2E,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCHE,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAAK;IAEvD,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc;AACtC,aAAA,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/C;;2GANU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/C,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCEE,+BAA+B,CAAA;AAU1C,IAAA,WAAA,CAAoB,QAAqB,EAAA;QAArB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QATjC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;KASkB;AAP7C,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAOM,OAAO,CAAC,OAAe,EAAE,IAAqB,EAAA;QACnD,IAAI,IAAI,CAAC,UAAU;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAC9C,wCAAwC,EACxC,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,SAAA,CAAC,CAAC;KACJ;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;4HArCU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9B,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cAF9B,MAAM,EAAA,CAAA,CAAA;2FAEP,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}