ng-zenduit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +24 -0
  2. package/esm2020/lib/breadcrumbs/zendu-breadcrumbs.component.mjs +37 -0
  3. package/esm2020/lib/card-block/zendu-card-block.component.mjs +21 -0
  4. package/esm2020/lib/checkbox/zendu-checkbox.component.mjs +44 -0
  5. package/esm2020/lib/colorpicker/zendu-colorpicker.component.mjs +106 -0
  6. package/esm2020/lib/column-configuration/columnState.mjs +2 -0
  7. package/esm2020/lib/column-configuration/zendu-column-configuration.component.mjs +118 -0
  8. package/esm2020/lib/datepicker/date-picker-day.mjs +2 -0
  9. package/esm2020/lib/datepicker/date-picker-hint.mjs +2 -0
  10. package/esm2020/lib/datepicker/datepicker.mjs +9 -0
  11. package/esm2020/lib/datepicker/zendu-datepicker.component.mjs +434 -0
  12. package/esm2020/lib/doc-scanner/zendu-doc-scanner.component.mjs +628 -0
  13. package/esm2020/lib/file-upload/zendu-file-upload.component.mjs +107 -0
  14. package/esm2020/lib/filter/dateRange.mjs +2 -0
  15. package/esm2020/lib/filter/filtersConfig.mjs +2 -0
  16. package/esm2020/lib/filter/numberRange.mjs +2 -0
  17. package/esm2020/lib/filter/zendu-filter.component.mjs +461 -0
  18. package/esm2020/lib/icon/zendu-icon.component.mjs +24 -0
  19. package/esm2020/lib/local.lock.mjs +33 -0
  20. package/esm2020/lib/location-search/location.address.mjs +2 -0
  21. package/esm2020/lib/location-search/zendu-location-search.component.mjs +129 -0
  22. package/esm2020/lib/map/map.types.mjs +2 -0
  23. package/esm2020/lib/map/zendu-map.component.mjs +129 -0
  24. package/esm2020/lib/map-preview/zendu-map-preview.component.mjs +30 -0
  25. package/esm2020/lib/ng-zenduit.module.mjs +158 -0
  26. package/esm2020/lib/pagination-bar/pageItem.mjs +2 -0
  27. package/esm2020/lib/pagination-bar/zendu-pagination-bar.component.mjs +71 -0
  28. package/esm2020/lib/phone-input/zendu-phone-input.component.mjs +141 -0
  29. package/esm2020/lib/progress/zendu-progress.component.mjs +29 -0
  30. package/esm2020/lib/radio-button/radio-button.component.mjs +48 -0
  31. package/esm2020/lib/search-box/zendu-search-box.component.mjs +124 -0
  32. package/esm2020/lib/select/templates/zendu-select-option.directive.mjs +16 -0
  33. package/esm2020/lib/select/templates/zendu-select-value.directive.mjs +16 -0
  34. package/esm2020/lib/select/zendu-select.component.mjs +303 -0
  35. package/esm2020/lib/services/geoconding.service.mjs +61 -0
  36. package/esm2020/lib/services/map.service.mjs +181 -0
  37. package/esm2020/lib/services/opencv.service.mjs +109 -0
  38. package/esm2020/lib/services/zendu-notify.service.mjs +92 -0
  39. package/esm2020/lib/sort-header/zendu-sort-header.component.mjs +36 -0
  40. package/esm2020/lib/spinner/zendu-spinner.component.mjs +11 -0
  41. package/esm2020/lib/toggle/zendu-toggle.component.mjs +32 -0
  42. package/esm2020/lib/toggle-slide/zendu-toggle-slide.component.mjs +27 -0
  43. package/esm2020/lib/util.mjs +93 -0
  44. package/esm2020/ng-zenduit.mjs +5 -0
  45. package/esm2020/public-api.mjs +42 -0
  46. package/fesm2015/ng-zenduit.mjs +3768 -0
  47. package/fesm2015/ng-zenduit.mjs.map +1 -0
  48. package/fesm2020/ng-zenduit.mjs +3735 -0
  49. package/fesm2020/ng-zenduit.mjs.map +1 -0
  50. package/icons/arrow-down-small.svg +3 -0
  51. package/icons/arrow-up-small.svg +3 -0
  52. package/icons/calendar.svg +6 -0
  53. package/icons/cross.svg +3 -0
  54. package/icons/date.svg +3 -0
  55. package/icons/expand.svg +3 -0
  56. package/icons/filter.svg +3 -0
  57. package/icons/play.svg +10 -0
  58. package/icons/redo.svg +3 -0
  59. package/icons/rotate.svg +3 -0
  60. package/icons/time.svg +4 -0
  61. package/icons/undo.svg +3 -0
  62. package/index.d.ts +5 -0
  63. package/lib/breadcrumbs/zendu-breadcrumbs.component.d.ts +22 -0
  64. package/lib/card-block/zendu-card-block.component.d.ts +9 -0
  65. package/lib/checkbox/zendu-checkbox.component.d.ts +17 -0
  66. package/lib/colorpicker/zendu-colorpicker.component.d.ts +28 -0
  67. package/lib/column-configuration/columnState.d.ts +7 -0
  68. package/lib/column-configuration/zendu-column-configuration.component.d.ts +43 -0
  69. package/lib/datepicker/date-picker-day.d.ts +8 -0
  70. package/lib/datepicker/date-picker-hint.d.ts +5 -0
  71. package/lib/datepicker/datepicker.d.ts +7 -0
  72. package/lib/datepicker/zendu-datepicker.component.d.ts +94 -0
  73. package/lib/doc-scanner/zendu-doc-scanner.component.d.ts +82 -0
  74. package/lib/file-upload/zendu-file-upload.component.d.ts +28 -0
  75. package/lib/filter/dateRange.d.ts +4 -0
  76. package/lib/filter/filtersConfig.d.ts +88 -0
  77. package/lib/filter/numberRange.d.ts +4 -0
  78. package/lib/filter/zendu-filter.component.d.ts +59 -0
  79. package/lib/icon/zendu-icon.component.d.ts +10 -0
  80. package/lib/local.lock.d.ts +8 -0
  81. package/lib/location-search/location.address.d.ts +12 -0
  82. package/lib/location-search/zendu-location-search.component.d.ts +32 -0
  83. package/lib/map/map.types.d.ts +33 -0
  84. package/lib/map/zendu-map.component.d.ts +23 -0
  85. package/lib/map-preview/zendu-map-preview.component.d.ts +11 -0
  86. package/lib/ng-zenduit.module.d.ts +34 -0
  87. package/lib/pagination-bar/pageItem.d.ts +4 -0
  88. package/lib/pagination-bar/zendu-pagination-bar.component.d.ts +25 -0
  89. package/lib/phone-input/zendu-phone-input.component.d.ts +39 -0
  90. package/lib/progress/zendu-progress.component.d.ts +14 -0
  91. package/lib/radio-button/radio-button.component.d.ts +18 -0
  92. package/lib/search-box/zendu-search-box.component.d.ts +26 -0
  93. package/lib/select/templates/zendu-select-option.directive.d.ts +8 -0
  94. package/lib/select/templates/zendu-select-value.directive.d.ts +8 -0
  95. package/lib/select/zendu-select.component.d.ts +107 -0
  96. package/lib/services/geoconding.service.d.ts +23 -0
  97. package/lib/services/map.service.d.ts +22 -0
  98. package/lib/services/opencv.service.d.ts +46 -0
  99. package/lib/services/zendu-notify.service.d.ts +10 -0
  100. package/lib/sort-header/zendu-sort-header.component.d.ts +10 -0
  101. package/lib/spinner/zendu-spinner.component.d.ts +5 -0
  102. package/lib/toggle/zendu-toggle.component.d.ts +14 -0
  103. package/lib/toggle-slide/zendu-toggle-slide.component.d.ts +13 -0
  104. package/lib/util.d.ts +11 -0
  105. package/package.json +36 -0
  106. package/public-api.d.ts +38 -0
  107. package/styles/action-menu.scss +127 -0
  108. package/styles/all.scss +11 -0
  109. package/styles/button.scss +188 -0
  110. package/styles/colors.scss +125 -0
  111. package/styles/common-form.scss +159 -0
  112. package/styles/extenal.scss +2 -0
  113. package/styles/ghost.scss +38 -0
  114. package/styles/global-restyle.scss +25 -0
  115. package/styles/page-layout.scss +82 -0
  116. package/styles/snackbar.scss +91 -0
  117. package/styles/table.scss +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-zenduit.mjs","sources":["../../../projects/ng-zenduit/src/lib/services/zendu-notify.service.ts","../../../projects/ng-zenduit/src/lib/checkbox/zendu-checkbox.component.ts","../../../projects/ng-zenduit/src/lib/checkbox/zendu-checkbox.component.html","../../../projects/ng-zenduit/src/lib/colorpicker/zendu-colorpicker.component.ts","../../../projects/ng-zenduit/src/lib/colorpicker/zendu-colorpicker.component.html","../../../projects/ng-zenduit/src/lib/util.ts","../../../projects/ng-zenduit/src/lib/search-box/zendu-search-box.component.ts","../../../projects/ng-zenduit/src/lib/search-box/zendu-search-box.component.html","../../../projects/ng-zenduit/src/lib/column-configuration/zendu-column-configuration.component.ts","../../../projects/ng-zenduit/src/lib/column-configuration/zendu-column-configuration.component.html","../../../projects/ng-zenduit/src/lib/datepicker/datepicker.ts","../../../projects/ng-zenduit/src/lib/icon/zendu-icon.component.ts","../../../projects/ng-zenduit/src/lib/icon/zendu-icon.component.html","../../../projects/ng-zenduit/src/lib/datepicker/zendu-datepicker.component.ts","../../../projects/ng-zenduit/src/lib/datepicker/zendu-datepicker.component.html","../../../projects/ng-zenduit/src/lib/toggle-slide/zendu-toggle-slide.component.ts","../../../projects/ng-zenduit/src/lib/toggle-slide/zendu-toggle-slide.component.html","../../../projects/ng-zenduit/src/lib/radio-button/radio-button.component.ts","../../../projects/ng-zenduit/src/lib/radio-button/radio-button.component.html","../../../projects/ng-zenduit/src/lib/filter/zendu-filter.component.ts","../../../projects/ng-zenduit/src/lib/filter/zendu-filter.component.html","../../../projects/ng-zenduit/src/lib/select/templates/zendu-select-option.directive.ts","../../../projects/ng-zenduit/src/lib/select/templates/zendu-select-value.directive.ts","../../../projects/ng-zenduit/src/lib/select/zendu-select.component.ts","../../../projects/ng-zenduit/src/lib/select/zendu-select.component.html","../../../projects/ng-zenduit/src/lib/pagination-bar/zendu-pagination-bar.component.ts","../../../projects/ng-zenduit/src/lib/pagination-bar/zendu-pagination-bar.component.html","../../../projects/ng-zenduit/src/lib/phone-input/zendu-phone-input.component.ts","../../../projects/ng-zenduit/src/lib/phone-input/zendu-phone-input.component.html","../../../projects/ng-zenduit/src/lib/sort-header/zendu-sort-header.component.ts","../../../projects/ng-zenduit/src/lib/sort-header/zendu-sort-header.component.html","../../../projects/ng-zenduit/src/lib/toggle/zendu-toggle.component.ts","../../../projects/ng-zenduit/src/lib/toggle/zendu-toggle.component.html","../../../projects/ng-zenduit/src/lib/card-block/zendu-card-block.component.ts","../../../projects/ng-zenduit/src/lib/card-block/zendu-card-block.component.html","../../../projects/ng-zenduit/src/lib/map-preview/zendu-map-preview.component.ts","../../../projects/ng-zenduit/src/lib/map-preview/zendu-map-preview.component.html","../../../projects/ng-zenduit/src/lib/spinner/zendu-spinner.component.ts","../../../projects/ng-zenduit/src/lib/spinner/zendu-spinner.component.html","../../../projects/ng-zenduit/src/lib/local.lock.ts","../../../projects/ng-zenduit/src/lib/services/opencv.service.ts","../../../projects/ng-zenduit/src/lib/doc-scanner/zendu-doc-scanner.component.ts","../../../projects/ng-zenduit/src/lib/doc-scanner/zendu-doc-scanner.component.html","../../../projects/ng-zenduit/src/lib/breadcrumbs/zendu-breadcrumbs.component.ts","../../../projects/ng-zenduit/src/lib/breadcrumbs/zendu-breadcrumbs.component.html","../../../projects/ng-zenduit/src/lib/services/map.service.ts","../../../projects/ng-zenduit/src/lib/map/zendu-map.component.ts","../../../projects/ng-zenduit/src/lib/map/zendu-map.component.html","../../../projects/ng-zenduit/src/lib/file-upload/zendu-file-upload.component.ts","../../../projects/ng-zenduit/src/lib/file-upload/zendu-file-upload.component.html","../../../projects/ng-zenduit/src/lib/progress/zendu-progress.component.ts","../../../projects/ng-zenduit/src/lib/progress/zendu-progress.component.html","../../../projects/ng-zenduit/src/lib/services/geoconding.service.ts","../../../projects/ng-zenduit/src/lib/location-search/zendu-location-search.component.ts","../../../projects/ng-zenduit/src/lib/location-search/zendu-location-search.component.html","../../../projects/ng-zenduit/src/lib/ng-zenduit.module.ts","../../../projects/ng-zenduit/src/public-api.ts","../../../projects/ng-zenduit/src/ng-zenduit.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport { show as showSnackbar } from \"node-snackbar\"\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ZenNotifyService {\n\n public info(\n msg: string,\n duration: number = 5000,\n hasDismiss: boolean = true\n ): void {\n console.log(msg);\n\n showSnackbar({\n pos: \"top-center\",\n text: msg,\n textColor: \"white\",\n duration: duration,\n actionText: \"dismiss\",\n actionTextColor: \"white\",\n showAction: hasDismiss\n })\n }\n\n public success(\n msg: string,\n duration: number = 5000,\n hasDismiss: boolean = true\n ): void {\n console.log(msg);\n showSnackbar({\n pos: \"top-center\",\n text: msg,\n textColor: \"white\",\n backgroundColor: \"#5cbb3a\",// $color-success-primary\n duration: duration,\n actionText: \"dismiss\",\n actionTextColor: \"white\",\n showAction: hasDismiss\n })\n }\n\n public warn(\n msg: string,\n duration: number = 5000,\n hasDismiss: boolean = true\n ): void {\n console.warn(msg);\n showSnackbar({\n pos: \"top-center\",\n text: msg,\n textColor: \"white\",\n backgroundColor: \"#f1b10b\",// $color-alert-primary\n duration: duration,\n actionText: \"dismiss\",\n actionTextColor: \"white\",\n showAction: hasDismiss\n })\n }\n\n public error(\n err: unknown,\n duration: number = 5000,\n hasDismiss: boolean = true\n ): void {\n console.error(err);\n showSnackbar({\n pos: \"top-center\",\n text: this.getErrorMessage(err),\n textColor: \"white\",\n backgroundColor: \"#dc3e33\",// $color-error-primary\n duration: duration,\n actionText: \"dismiss\",\n actionTextColor: \"white\",\n showAction: hasDismiss\n })\n }\n\n private getErrorMessage(ex: any): string {\n if (!ex) {\n return '';\n }\n\n if (typeof ex === 'string') {\n return ex;\n }\n else if (typeof ex.error === 'string') {\n return ex.error;\n }\n else if (ex.error && ex.error.message) {\n return ex.error.message;\n }\n else if (ex.message) {\n return ex.message;\n }\n else if (ex.status && ex.statusText) {\n return `Http error ${ex.status} ${ex.statusText}`;\n }\n else if (ex.statusText) {\n return ex.statusText;\n }\n else {\n console.warn('Can\\'t extract error message from object:', ex);\n return '';\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'zen-checkbox',\n templateUrl: './zendu-checkbox.component.html',\n styleUrls: ['./zendu-checkbox.component.scss']\n})\nexport class ZenduCheckboxComponent {\n\n @Input() checked: boolean;\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n @Input() label: string | number = 'Enable';\n\n @Input() disabled = false;\n\n @Input() disableValueChange = false;\n\n @Input() indeterminate = false;\n\n @Input() imageUrl: string;\n\n /**\n * Toggle state\n */\n public toggle(): void {\n if (this.disabled || this.disableValueChange) {\n return;\n }\n\n this.checked = !this.checked;\n this.indeterminate = false;\n\n this.checkedChange.emit(this.checked);\n }\n}\n","<div class=\"checkbox-component\"\n [ngClass]=\"{'app-disabled': disabled}\"\n (click)=\"toggle()\">\n <button class=\"app-checkbox\"\n [ngClass]=\"{ 'app-checked': checked && !indeterminate, 'app-indeterminate': indeterminate }\">\n <i *ngIf=\"checked && !indeterminate\"\n class=\"material-icons app-checkbox-icon\">done</i>\n <i *ngIf=\"indeterminate\"\n class=\"material-icons app-checkbox-icon\">remove</i>\n </button>\n <div class=\"app-checkbox-label\"\n *ngIf=\"label\">\n <img class=\"checkbox-image\"\n [src]=\"imageUrl\"\n *ngIf=\"imageUrl\">\n {{label}}\n </div>\n</div>","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'zen-colorpicker',\n templateUrl: './zendu-colorpicker.component.html',\n styleUrls: ['./zendu-colorpicker.component.scss']\n})\nexport class ZenduColorPickerComponent implements OnChanges {\n\n @Input() color: string;\n\n @Output() colorChange = new EventEmitter<string>();\n\n @Input() icon = \"text\";\n\n @Input() customTarget: HTMLElement;\n\n @Input() showNone = true;\n\n public opened = false;\n\n public menuLeft = \"0px\";\n\n public menuTop = \"\";\n\n public menuBottom = \"\";\n\n public colorsRows: { colors: string[] }[] = [\n { colors: [\"#000000\", \"#666666\", \"#b7b7b7\", \"#cccccc\", \"#d9d9d9\", \"#efefef\", \"#ffffff\"] },\n { colors: [\"#CC0000\", \"#E69138\", \"#F1C232\", \"#6AA84F\", \"#3C78D8\", \"#674EA7\", \"#A64D79\"] },\n { colors: [\"#E06666\", \"#F6B26B\", \"#FFD966\", \"#93C47D\", \"#6D9EEB\", \"#8E7CC3\", \"#C27BA0\"] },\n { colors: [\"#EA9999\", \"#F9CB9C\", \"#FFE599\", \"#B6D7A8\", \"#A4C2F4\", \"#B4A7D6\", \"#D5A6BD\"] },\n { colors: [\"#F4CCCC\", \"#FCE5CD\", \"#FFF2CC\", \"#D9EAD3\", \"#C9DAF8\", \"#D9D2E9\", \"#EAD1DC\"] }\n ]\n\n @HostListener('window:mousedown', ['$event'])\n outsideHandling(event) {\n if (!document.body.contains(event.target)) {\n // element not in the DOM\n return;\n }\n if (this._element.nativeElement.contains(event.target)) {\n return;\n }\n this.hidePicker();\n }\n\n @HostListener('window:scroll', [])\n scroll() {\n this.updatePlacement();\n }\n\n constructor(\n private _element: ElementRef\n ) { }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"customTarget\"] &&\n changes[\"customTarget\"].currentValue &&\n this.customTarget) {\n this.customTarget.addEventListener(\"click\", this.toggleEvent.bind(this));\n }\n this.updatePlacement();\n }\n\n public toggleEvent(evt: MouseEvent) {\n this.toggle();\n evt.stopPropagation();\n }\n\n public toggle() {\n this.updatePlacement();\n this.opened = !this.opened;\n }\n\n public updatePlacement() {\n\n let container: HTMLElement;\n if (this.customTarget) {\n container = this.customTarget;\n }\n else {\n const component = this._element.nativeElement as HTMLElement;\n container = component.getElementsByClassName(\"colorpicker-component\").item(0) as HTMLElement;\n }\n\n const left = container.getBoundingClientRect().left;\n const top = container.getBoundingClientRect().top;\n const bottom = container.getBoundingClientRect().bottom;\n\n const margin = 8;\n\n this.menuLeft = `${left}px`;\n const distToBottomOfPage = window.innerHeight - top;\n if (distToBottomOfPage > 150) {\n this.menuTop = `${bottom + margin}px`;\n this.menuBottom = \"\";\n }\n else {\n const bottomFixed = window.innerHeight - top + margin;\n this.menuBottom = `${bottomFixed}px`;\n this.menuTop = \"\";\n }\n }\n\n private hidePicker() {\n this.opened = false;\n }\n\n public selectColor(color: string) {\n this.color = color;\n this.colorChange.emit(color);\n }\n}\n","<div class=\"colorpicker-component\"\n (click)=\"toggle()\"\n [class.opened]=\"opened\"\n [class.no-size]=\"customTarget\">\n\n <ng-container *ngIf=\"!customTarget\">\n <div *ngIf=\"icon == 'text'\">\n <img src=\"https://storage.googleapis.com/zenduit-icons/components/color_picker_text.svg\"\n class=\"icon-text\">\n </div>\n\n <div *ngIf=\"icon == 'paint'\">\n <img src=\"https://storage.googleapis.com/zenduit-icons/components/color_picker_paint.svg\"\n class=\"icon-paint\">\n </div>\n\n <div class=\"toggle\">\n <i class=\"material-icons\">arrow_drop_down</i>\n </div>\n\n <div class=\"color-line\"\n [ngStyle]=\"{'border-color': color}\">\n </div>\n </ng-container>\n\n <div *ngIf=\"opened\"\n class=\"color-menu\"\n [ngStyle]=\"{ 'left': menuLeft, 'top': menuTop, 'bottom': menuBottom }\">\n\n <div class=\"colors-container\">\n <div *ngFor=\"let row of colorsRows\"\n class=\"color-row\">\n <div *ngFor=\"let rowColor of row.colors\"\n (click)=\"selectColor(rowColor)\"\n class=\"color-item\"\n [ngStyle]=\"{'background-color': rowColor}\">\n <div *ngIf=\"rowColor == color\"\n class=\"select-icon\">\n <i class=\"material-icons\">check</i>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"showNone\"\n class=\"no-color\"\n (click)=\"selectColor('')\">\n None\n </div>\n </div>\n</div>\n","export class Util {\n public static debounce(func: any, wait: number, immediate?: boolean) {\n let timeout: any;\n const context: any = this;\n\n return function executedFunction() {\n const args = arguments;\n\n const later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n\n const callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n }\n\n public static clone<T>(source: T): T\n {\n let str = JSON.stringify(source);\n let outObj = JSON.parse(str);\n\n this.updateClone(outObj);\n\n // Convert in the output object ISO string to Date object\n //\n // @ts-ignore\n for(let key of Object.keys(source))\n {\n const val = (source as any)[key];\n if(val &&\n typeof val == \"object\" &&\n typeof val.getTime == \"function\" &&\n typeof val.getDate == \"function\")\n {\n outObj[key] = new Date(val);\n }\n }\n\n return outObj;\n }\n\n\n\n /**\n * Remove internal angularjs properties\n * @param obj\n */\n private static updateClone(obj: any)\n {\n if(!obj)\n {\n return;\n }\n if(Array.isArray(obj))\n {\n for(let item of obj)\n {\n if(!item)\n {\n item = item;\n }\n this.updateClone(item);\n }\n return;\n }\n\n let type = typeof obj;\n if(type == \"string\" || type == \"number\")\n {\n return;\n }\n\n // Remove invalid props\n let keys = Object.keys(obj);\n keys.forEach((key) =>\n {\n if(key[0] == '$' ||\n key[0] == '&')\n {\n delete obj[key];\n return;\n }\n\n let val = obj[key];\n if(Array.isArray(val))\n {\n let arr = <Array<any>>val;\n for(let k of arr)\n {\n this.updateClone(k);\n }\n }\n else if(typeof val == \"object\")\n {\n this.updateClone(val);\n }\n });\n }\n\n\n public static copyProperties(source: any, dest: any)\n {\n for(let key of Object.keys(source))\n {\n dest[key] = source[key];\n }\n }\n\n public static sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, ms);\n })\n }\n\n}","import { Component, ElementRef, EventEmitter, Input, NgZone, OnInit, Output, ViewChild } from '@angular/core';\nimport { Util } from '../util';\n\n@Component({\n selector: 'zen-search-box',\n templateUrl: './zendu-search-box.component.html',\n styleUrls: ['./zendu-search-box.component.scss']\n})\nexport class ZenduSearchBoxComponent implements OnInit {\n\n @Input() text: string;\n\n @Output() textChange = new EventEmitter<string>();\n\n @Input() set delay(val: number) {\n this.setDelay(val);\n }\n\n @Input() autoFocus = true;\n\n @Input() public placeholder = \"Search\";\n\n @ViewChild('searchInput', { static: false }) searchInput!: ElementRef;\n\n private _debouncedInvoke!: () => void;\n\n private _focusAttempts = 0;\n\n public constructor(\n private _element: ElementRef,\n private _ngZone: NgZone) {\n\n this.setDelay(500);\n }\n\n public ngOnInit(): void {\n // give 100ms for autoFocus initalization\n setTimeout(() => {\n if (this.autoFocus) {\n this.doFocus();\n }\n }, 100);\n }\n\n public onChange() {\n this._debouncedInvoke();\n }\n\n public clearFromParent() {\n this.text = \"\";\n }\n\n public clear() {\n this.text = \"\";\n this._debouncedInvoke();\n }\n\n private invokeChange() {\n this._ngZone.run(() => {\n this.textChange.emit(this.text);\n })\n }\n\n private setDelay(delay: number) {\n this._debouncedInvoke = Util.debounce(() => {\n this.invokeChange();\n }, delay);\n }\n\n public activateSearchBox() {\n this.searchInput.nativeElement.focus();\n }\n\n public doFocus() {\n\n this._focusAttempts++;\n if (this._focusAttempts > 100) {\n // stop attempts to initalize\n return;\n }\n\n const input = this.getInput(this._element.nativeElement);\n if (!input) {\n // wait 100ms to run the next check\n setTimeout(() => {\n this.doFocus();\n }, 100);\n return;\n }\n // check if element visible or not\n const height = input.clientHeight;\n if (height == 0) {\n // wait 100ms to run the next check\n setTimeout(() => {\n this.doFocus();\n }, 100);\n return;\n }\n\n // set focus to element\n setTimeout(() => {\n input.focus();\n }, 1);\n }\n\n private getInput(element: HTMLElement | null): HTMLInputElement | null {\n if (!element) {\n return null;\n }\n if (element.nodeName == \"INPUT\") {\n return element as HTMLInputElement;\n }\n\n for (let idx = 0; idx < element.children.length; idx++) {\n const el = element.children.item(idx);\n if (el && el.nodeName == \"INPUT\") {\n return el as HTMLInputElement;\n }\n }\n\n // find input in the children tree\n for (let idx = 0; idx < element.children.length; idx++) {\n const el = element.children.item(idx);\n if (!el) {\n continue;\n }\n const elInput = this.getInput(el as HTMLElement);\n if (elInput) {\n return elInput;\n }\n }\n\n return null;\n }\n}\n","<div class=\"search-box-component\">\n <i class=\"svg-icons\"\n (click)=\"activateSearchBox()\">\n <svg width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8.33333\"\n cy=\"8.33333\"\n r=\"5.83333\"\n stroke=\"#828282\"\n stroke-width=\"1.6\" />\n <path d=\"M17.5 17.5001L12.9166 12.9167\"\n stroke=\"#828282\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\" />\n </svg>\n </i>\n <input [(ngModel)]=\"text\"\n class=\"search-box\"\n (ngModelChange)=\"onChange()\"\n placeholder=\"{{placeholder}}\"\n #searchInput>\n <i class=\"material-icons close-icon\"\n *ngIf=\"text\"\n (click)=\"clear()\">close</i>\n</div>","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ColumnState } from './columnState';\nimport { Util } from './../util';\n\n@Component({\n selector: 'zen-column-configuration',\n templateUrl: './zendu-column-configuration.component.html',\n styleUrls: ['./zendu-column-configuration.component.scss'],\n})\nexport class ZenduColumnConfigurationComponent implements OnChanges {\n /**\n * callback to emit changes for parent component\n */\n @Output() configurationChange = new EventEmitter<ColumnState[]>();\n\n /**\n * input propery\n */\n @Input() configuration: ColumnState[] = [];\n\n /**\n * Default configuration for reset button\n */\n @Input() defaultConfiguration: ColumnState[] = [];\n\n /**\n * dropdown position\n */\n @Input() dropdownPosition: 'right' | 'left' = 'right';\n\n /**\n * Inital configuration\n */\n private _sourceConfiguration: ColumnState[] = [];\n\n public tempColumnConfiguration: ColumnState[] = [];\n\n public filteredColumnsConfiguration: ColumnState[] = [];\n\n public showPanel: boolean = false;\n\n public searchText = '';\n\n constructor(private _element: ElementRef) {}\n\n @HostListener('window:mousedown', ['$event'])\n outsideHandling(event) {\n if (!document.body.contains(event.target)) {\n // element not in the DOM\n return;\n }\n if (this._element.nativeElement.contains(event.target)) {\n return;\n }\n // hide the menu for outside click\n this.hide();\n }\n\n ngOnChanges(changes: any): void {\n if (changes.configuration.currentValue && this.configuration) {\n this.initData();\n }\n }\n\n public initData() {\n this.tempColumnConfiguration = Util.clone(this.configuration);\n this._sourceConfiguration = Util.clone(this.configuration);\n this.filterItems();\n }\n\n public togglePanel() {\n this.showPanel = !this.showPanel;\n // clear search\n this.searchText = '';\n if (this.showPanel) {\n // restore inital values on open\n this.tempColumnConfiguration = Util.clone(this._sourceConfiguration);\n }\n this.filterItems();\n }\n\n public apply() {\n this.configuration = Util.clone(this.tempColumnConfiguration);\n // overwrite the default as well\n this._sourceConfiguration = Util.clone(this.tempColumnConfiguration);\n this.showPanel = false;\n this.configurationChange.emit(this.configuration);\n }\n\n public hide() {\n this.showPanel = false;\n }\n\n public onDrop(event: CdkDragDrop<string[]>): void {\n moveItemInArray(\n this.filteredColumnsConfiguration,\n event.previousIndex,\n event.currentIndex\n );\n this.tempColumnConfiguration = this.filteredColumnsConfiguration;\n }\n\n public reset() {\n if (this.defaultConfiguration && this.defaultConfiguration.length) {\n // use the default configuration\n this.tempColumnConfiguration = Util.clone(this.defaultConfiguration);\n } else {\n // activate all items\n for (const item of this.tempColumnConfiguration) {\n item.isVisible = true;\n }\n }\n this.filterItems();\n }\n\n public filterItems(): void {\n this.filteredColumnsConfiguration = this.tempColumnConfiguration.filter(\n (col) =>\n col.displayName\n .toLowerCase()\n .includes(this.searchText.trim().toLowerCase())\n );\n }\n}\n","<div class=\"column-config-component\">\n <button class=\"button-basic button-icon\"\n [ngClass]=\"{ 'active': showPanel }\"\n (click)=\"togglePanel()\">\n <i class=\"material-icons\">view_column</i>\n </button>\n\n <div *ngIf=\"showPanel\"\n class=\"action-menu column-config-menu\"\n [ngClass]=\"{'right': dropdownPosition === 'right'}\">\n <div class=\"action-menu-header\">\n <div class=\"title\">Manage Columns</div>\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"filterItems()\"></zen-search-box>\n </div>\n\n\n <div class=\"action-menu-body dnd-container\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\">\n <div *ngFor=\"let config of filteredColumnsConfiguration\"\n class=\"action-item-checkbox drag-item\"\n cdkDrag>\n <zen-checkbox class=\"flex-1\"\n [(checked)]=\"config.isVisible\"\n [label]=\"config.displayName\"></zen-checkbox>\n <i class=\"material-icons drag-icon\">drag_handle</i>\n </div>\n </div>\n\n <div class=\"action-menu-footer\">\n <button (click)=\"reset()\"\n type=\"button\"\n class=\"button-stroked full-width\">Reset</button>\n <button (click)=\"apply()\"\n type=\"button\"\n class=\"button-flat full-width\">Apply</button>\n </div>\n </div>\n</div>\n","export enum DATEPICKER_POSITION {\n AUTO = 'auto',\n LEFT = 'left',\n RIGHT = 'right',\n TOP = 'top',\n BOTTOM = 'bottom'\n}","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'zen-icon',\n templateUrl: './zendu-icon.component.html',\n styleUrls: ['./zendu-icon.component.scss']\n})\nexport class ZenduIconComponent implements OnChanges {\n\n @Input() src: string;\n\n constructor(private _host: ElementRef) { }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.src) {\n // apply styles to host\n const host = this._host.nativeElement as HTMLElement;\n host.style[\"mask-image\"] = `url(${this.src})`;\n host.style[\"-webkit-mask-image\"] = `url(${this.src})`;\n }\n }\n}\n","","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport moment from 'moment/moment';\nimport { DatePickerDay } from './date-picker-day';\nimport { DatePickerHint } from \"./date-picker-hint\";\nimport { DATEPICKER_POSITION } from './datepicker';\n\nconst defaultHours = '12';\nconst defaultMinuts = '00';\n\n@Component({\n selector: 'zen-datepicker',\n templateUrl: './zendu-datepicker.component.html',\n styleUrls: ['./zendu-datepicker.component.scss']\n})\nexport class ZenduDatepickerComponent implements OnChanges {\n\n /**\n * Component property\n */\n @Input() date: Date;\n\n /**\n * callback to emit changes for parent component\n */\n @Output() dateChange = new EventEmitter<Date>();\n\n @Input() showTime = false;\n\n @Input() showDate = true;\n\n @Input() containerClass: string;\n\n @Input() minDate: Date;\n\n @Input() maxDate: Date;\n\n @Input() boxDesign: boolean = false;\n\n @Input() highlightDays: number[] = [];\n\n @Input() autoConfirm: boolean = false;\n\n @Input() hint: DatePickerHint;\n\n /**\n * datepicker states\n */\n @Input() highlightError: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() readonly: boolean = false;\n\n @Input() xPosition: DATEPICKER_POSITION = DATEPICKER_POSITION.AUTO;\n\n @Input() yPosition: DATEPICKER_POSITION = DATEPICKER_POSITION.AUTO;\n\n public selectedTime: { Hr: number, Min: number } = { Hr: 1, Min: 0 };\n\n public isPickerVisible = false;\n\n public dayRows: Array<{ days: DatePickerDay[] }> = [];\n\n public daysTitle = \"\";\n\n public weekDays = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fri\", \"Sa\", \"Su\"];\n\n public currentSlot = new Date();\n\n public hour = defaultHours;\n\n public min = defaultMinuts;\n\n public isPM = false;\n\n public _dateToSet: Date;\n\n public months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n public years = [];\n\n public monthPickerVisible: boolean = false;\n\n public yearPickerVisible: boolean = false;\n\n right: boolean = false;\n bottom: boolean = false;\n\n constructor(\n private _element: ElementRef\n ) { }\n\n\n @HostListener('window:mousedown', ['$event'])\n outsideHandling(event) {\n if (!document.body.contains(event.target)) {\n // element not in the DOM\n return;\n }\n if (this._element.nativeElement.contains(event.target)) {\n return;\n }\n this.hideTimePicker()\n }\n\n @HostListener('window:scroll', [])\n scroll() {\n this.updatePlacement();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.date) {\n this._dateToSet = new Date(this.date);\n\n this.selectedTime = {\n Hr: moment(this.date).hours(),\n Min: moment(this.date).minutes()\n };\n }\n }\n\n public updatePlacement() {\n this.right = false;\n this.bottom = false;\n if (this.xPosition === DATEPICKER_POSITION.AUTO && this.getHorizontalMenuDirection() === DATEPICKER_POSITION.LEFT) {\n this.right = true;\n }\n if (this.yPosition === DATEPICKER_POSITION.AUTO && this.getVerticalMenuDirection() === DATEPICKER_POSITION.TOP) {\n this.bottom = true;\n }\n if (this.xPosition === DATEPICKER_POSITION.RIGHT) {\n this.right = true;\n }\n if (this.yPosition === DATEPICKER_POSITION.TOP) {\n this.bottom = true;\n }\n }\n\n private getVerticalMenuDirection(): DATEPICKER_POSITION {\n const element = this._element.nativeElement;\n const top = element.getBoundingClientRect().top;\n const height = window.innerHeight;\n if (top > (height / 2)) {\n return DATEPICKER_POSITION.TOP\n }\n else {\n return DATEPICKER_POSITION.BOTTOM;\n }\n }\n\n /**\n * Used to get datepicker position\n * @returns either \"left\" or \"right\"\n */\n private getHorizontalMenuDirection(): DATEPICKER_POSITION {\n const element = this._element.nativeElement;\n const left = element.getBoundingClientRect().left;\n const width = window.innerWidth;\n if (left > (width / 2)) {\n return DATEPICKER_POSITION.LEFT;\n }\n else {\n return DATEPICKER_POSITION.RIGHT;\n }\n }\n\n\n public togglePicker() {\n if (this.disabled) return;\n\n this._dateToSet = this.date ? new Date( this.date ) : null;\n\n this.isPickerVisible = !this.isPickerVisible;\n if (this.showDate) {\n this.currentSlot = this._dateToSet || new Date();\n this.updateDays();\n }\n if (this.showTime) {\n this.selectedTime = {\n Hr: moment(this.date).hours(),\n Min: moment(this.date).minutes()\n };\n\n if (this.date) {\n const formatted = moment(this.date).format('hh:mm A');\n\n this.isPM = formatted.includes('PM');\n this.hour = formatted.slice(0, 2);\n this.min = formatted.slice(3, 5);\n }\n }\n\n this.updatePlacement();\n\n }\n\n private updateDays() {\n if (!this.currentSlot) {\n this.currentSlot = new Date();\n }\n this.daysTitle = moment(this.currentSlot).format(\"MMM yyyy\");\n this.dayRows = [];\n let current = moment(this.currentSlot).startOf(\"month\").startOf(\"week\").add(1, \"day\");\n let end = moment(this.currentSlot).endOf(\"month\").endOf(\"week\").add(1, \"day\");\n\n const currentMonth = moment(this.currentSlot).month();\n\n const date = moment(this._dateToSet);\n\n while (current <= end) {\n const row = { days: [] as DatePickerDay[] };\n this.dayRows.push(row);\n for (let idx = 0; idx < 7; idx++) {\n\n let isSelected = false;\n if (date) {\n isSelected = current.date() == date.date() &&\n date.month() == current.month();\n }\n\n let isOutside = currentMonth != current.month();\n\n let isDisabled = false;\n\n if (this.minDate && current.toDate() < this.minDate) {\n isDisabled = true;\n } else if (this.maxDate && current.toDate() > this.maxDate) {\n isDisabled = true;\n }\n\n let isHighlighted = false;\n\n if (this.highlightDays && this.highlightDays.length) {\n isHighlighted = this.highlightDays.indexOf(current.valueOf()) >= 0;\n }\n\n row.days.push({\n date: current.toDate(),\n lbl: moment(current).date().toString(),\n isOutside: isOutside,\n selected: isSelected,\n isDisabled: isDisabled,\n isHighlighted: isHighlighted\n });\n\n current = moment(current).add(1, \"day\");\n }\n }\n }\n\n public nextMonth() {\n this.currentSlot = moment(this.currentSlot).add(1, \"month\").toDate();\n this.updateDays();\n }\n\n public prevMonth() {\n this.currentSlot = moment(this.currentSlot).subtract(1, \"month\").toDate();\n this.updateDays();\n }\n\n public nextYear() {\n this.currentSlot = moment(this.currentSlot).add(1, \"year\").toDate();\n this.updateDays();\n }\n\n public prevYear() {\n this.currentSlot = moment(this.currentSlot).subtract(1, \"year\").toDate();\n this.updateDays();\n }\n\n public nextYearGroup() {\n this.years = this.years.map(year => year + 15);\n }\n\n public prevYearGroup() {\n this.years = this.years.map(year => year - 15);\n }\n\n public selectDay(day: DatePickerDay) {\n if (day.isDisabled) {\n // day is disabled\n return;\n }\n\n if (this.showTime) {\n this._dateToSet = moment(day.date).hour(this.selectedTime.Hr).minute(this.selectedTime.Min).toDate();\n } else {\n this._dateToSet = new Date(day.date);\n\n if (this.autoConfirm) {\n this.apply();\n }\n }\n\n this.updateDays();\n }\n\n public selectMonth(month: number) {\n const newDate = new Date(this.currentSlot);\n newDate.setMonth(month);\n this.currentSlot = newDate;\n this.updateDays();\n this.monthPickerVisible = false;\n }\n\n public selectYear(year: number) {\n const newDate = new Date(this.currentSlot);\n newDate.setFullYear(year);\n this.currentSlot = newDate;\n this.updateDays();\n this.yearPickerVisible = false;\n }\n\n public hideTimePicker() {\n this.isPickerVisible = false;\n }\n\n\n public timeChanged() {\n let min = parseInt(this.min);\n let hour = parseInt(this.hour);\n if (isNaN(hour) || isNaN(min)) {\n return;\n }\n\n hour = Math.min(hour, 12);\n hour = Math.max(hour, 1);\n\n min = Math.min(min, 59);\n min = Math.max(min, 0);\n\n const time = moment(`${hour} ${min} ${this.isPM ? \"pm\" : \"am\"}`, \"h:m a\");\n\n this.selectedTime = {\n Hr: time.hours(),\n Min: time.minutes()\n };\n\n // added below condition because we can select the time without date, and it was showing invalid date in the input box\n // second condition is required to disable apply button when date is not selected\n if (this._dateToSet) {\n this._dateToSet = moment(this._dateToSet).hour(this.selectedTime.Hr).minute(this.selectedTime.Min).toDate();\n } else if (!this.showDate) {\n this._dateToSet = moment().hour(this.selectedTime.Hr).minute(this.selectedTime.Min).toDate();\n }\n\n // format\n if (hour < 10) {\n this.hour = `0${hour}`;\n }\n else {\n this.hour = `${hour}`;\n }\n\n if (min < 10) {\n this.min = `0${min}`;\n }\n else {\n this.min = `${min}`;\n }\n }\n\n public formattedDate() {\n if (!this.date) {\n return \"\";\n }\n\n if (this.boxDesign && moment(this.date).isSame(moment(), \"day\")) {\n return 'Today';\n }\n\n if (this.showDate && !this.showTime && !this.boxDesign) {\n // Expanded formatting for date only picker\n return moment(this.date).format(\"ddd, DD MMM YYYY\");\n }\n\n return moment(this.date).format(\"MMM DD, YY\");\n }\n\n public formattedTime() {\n if (!this.date) {\n return \"\";\n }\n return moment(this.date).format(\"h:mm A\");\n }\n\n public toggleTime() {\n this.isPM = !this.isPM;\n this.timeChanged();\n }\n\n public showMonthPicker() {\n this.monthPickerVisible = true;\n }\n\n public showYearPicker() {\n this.yearPickerVisible = true;\n this.years = [];\n for (let i = this.currentSlot.getFullYear() - 7; i < this.currentSlot.getFullYear() + 8; i++) {\n this.years.push(i);\n }\n }\n\n public hourUp() {\n let hour = parseInt(this.hour);\n if (isNaN(hour)) {\n return;\n }\n hour++;\n this.hour = hour.toString();\n this.timeChanged();\n }\n\n public hourDown() {\n let hour = parseInt(this.hour);\n if (isNaN(hour)) {\n return;\n }\n hour--;\n this.hour = hour.toString();\n this.timeChanged();\n }\n\n public minUp() {\n let min = parseInt(this.min);\n if (isNaN(min)) {\n return;\n }\n min++;\n this.min = min.toString();\n this.timeChanged();\n }\n\n public minDown() {\n let min = parseInt(this.min);\n if (isNaN(min)) {\n return;\n }\n min--;\n this.min = min.toString();\n this.timeChanged();\n }\n\n public apply() {\n if ( this._dateToSet ) {\n // If time selection has enabled and user keeps default time then triggering the timeChanged function\n if (this.showTime && this.hour === defaultHours && this.min === defaultMinuts) {\n this.timeChanged();\n }\n\n this.date = new Date( this._dateToSet );\n }\n this.dateChange.emit(this.date);\n this.hideTimePicker();\n }\n\n public cancel() {\n this.hideTimePicker();\n }\n\n public clear() {\n this._dateToSet = null;\n this.hour = defaultHours;\n this.min = defaultMinuts;\n this.date = null;\n this.apply();\n }\n\n public getIcon() {\n // Change picker icon based on mode\n switch (true) {\n case this.showDate && this.showTime:\n // Date + Time\n return 'assets/ng-zenduit/icons/date.svg';\n case this.showDate && !this.showTime:\n // Date only\n return 'assets/ng-zenduit/icons/calendar.svg';\n case !this.showDate && this.showTime:\n // Time only\n return 'assets/ng-zenduit/icons/time.svg';\n default:\n return 'assets/ng-zenduit/icons/date.svg';\n }\n }\n\n public selectHintDate(date: Date): void {\n if (!date) {\n console.error('Invalid hint');\n return;\n }\n\n this._dateToSet = new Date(date);\n this.selectedTime = {\n Hr: moment(date).hours(),\n Min: moment(date).minutes()\n };\n\n if (this.autoConfirm) {\n this.apply();\n }\n\n this.updateDays();\n }\n}\n","<div class=\"date-component\">\n <!-- Material design datepicker toggle -->\n <ng-container *ngIf=\"!boxDesign\">\n <button class=\"date-toggle\"\n [disabled]=\"disabled || readonly\"\n (click)=\"togglePicker()\"\n [ngClass]=\"{'active': isPickerVisible,'error': highlightError,'readonly': readonly}\">\n\n <div class=\"date-content\">\n <!-- date placeholder -->\n <div class=\"date-placeholder\"\n *ngIf=\"!date\">\n Select Date\n </div>\n\n <!-- Selected datetime -->\n <div *ngIf=\"date\">\n <span *ngIf=\"showDate\">{{formattedDate()}}</span>\n <span *ngIf=\"showTime\">&nbsp;{{formattedTime()}}</span>\n </div>\n </div>\n\n <!-- Datepicker icon, depends on picker type -->\n <zen-icon class=\"date-icon\"\n [src]=\"getIcon()\"\n [ngClass]=\"{'filled': date}\">\n </zen-icon>\n </button>\n </ng-container>\n\n <!-- Box design datepicker toggle -->\n <ng-container *ngIf=\"boxDesign\">\n <button class=\"date-toggle new-box-design\"\n [disabled]=\"disabled || readonly\"\n (click)=\"togglePicker()\"\n [ngClass]=\"{'active': isPickerVisible,'error': highlightError,'readonly': readonly}\">\n\n <!-- Datepicker icon, depends on picker type -->\n <zen-icon class=\"date-icon\"\n [src]=\"getIcon()\"\n [ngClass]=\"{'filled': date}\">\n </zen-icon>\n\n <div class=\"date-content new-box-design\">\n <!-- date placeholder -->\n <div class=\"date-placeholder\"\n *ngIf=\"!date\">\n Select Date\n </div>\n\n <!-- Selected datetime -->\n <div *ngIf=\"date\">\n <span *ngIf=\"showDate\">{{formattedDate()}}</span>\n <span *ngIf=\"showTime\">&nbsp;{{formattedTime()}}</span>\n </div>\n </div>\n </button>\n </ng-container>\n\n <!-- Datepicker popup -->\n <div *ngIf=\"isPickerVisible\"\n class=\"date-menu\"\n [ngClass]=\"{ 'right': right, 'bottom': bottom }\">\n <div class=\"date-modal\">\n <ng-container *ngIf=\"showDate\">\n <div class=\"days-toolbar\">\n <i (click)=\"prevMonth()\"\n class=\"material-icons\">navigate_before</i>\n <span class=\"title\"\n (click)=\"showMonthPicker()\">{{daysTitle}}</span>\n <i (click)=\"nextMonth()\"\n class=\"material-icons\">navigate_next</i>\n </div>\n <div class=\"days-container\">\n <div class=\"week-days\">\n <div *ngFor=\"let weekDay of weekDays\"\n class=\"week-day\">\n {{weekDay}}\n </div>\n </div>\n <div *ngFor=\"let row of dayRows\"\n class=\"day-row\">\n <div *ngFor=\"let day of row.days\"\n (click)=\"selectDay(day)\"\n class=\"day-item\"\n [class.ousideRange]=\"day.isOutside\"\n [class.selected]=\"day.selected\"\n [class.disabledDay]=\"day.isDisabled\">\n {{day.lbl}}\n <zen-icon *ngIf=\"day.isHighlighted\"\n class=\"highlight-icon\"\n src=\"assets/ng-zenduit/icons/play.svg\"></zen-icon>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"showTime\"\n class=\"time-container\">\n\n <div class=\"time-lbl\">\n Select Time:\n </div>\n\n <div class=\"time-picker\">\n <div class=\"input-wrapper\">\n <zen-icon (click)=\"hourUp()\"\n src=\"assets/ng-zenduit/icons/arrow-up-small.svg\"></zen-icon>\n <input [(ngModel)]=\"hour\"\n (ngModelChange)=\"timeChanged()\" />\n <zen-icon (click)=\"hourDown()\"\n src=\"assets/ng-zenduit/icons/arrow-down-small.svg\"></zen-icon>\n </div>\n <label>:</label>\n <div class=\"input-wrapper\">\n <zen-icon (click)=\"minUp()\"\n src=\"assets/ng-zenduit/icons/arrow-up-small.svg\"></zen-icon>\n <input [(ngModel)]=\"min\"\n (ngModelChange)=\"timeChanged()\" />\n <zen-icon (click)=\"minDown()\"\n src=\"assets/ng-zenduit/icons/arrow-down-small.svg\"></zen-icon>\n </div>\n <div class=\"am-pm-picker\">\n <div class=\"main\"\n (click)=\"toggleTime()\">\n {{isPM ? 'PM' : 'AM'}}\n </div>\n <div class=\"sub\"\n (click)=\"toggleTime()\">\n {{isPM ? 'AM' : 'PM'}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"hint\"\n *ngIf=\"hint\">\n <div class=\"hint-description\">\n {{hint.description}}\n </div>\n <div class=\"hint-date\"\n (click)=\"selectHintDate(hint.date)\">\n {{hint.maskText}}\n </div>\n </div>\n\n <div class=\"footer\"\n *ngIf=\"!autoConfirm || showTime\">\n <button *ngIf=\"date\"\n (click)=\"clear()\"\n class=\"button-stroked\">\n Clear\n </button>\n <button *ngIf=\"!date\"\n (click)=\"cancel()\"\n class=\"button-stroked\">\n Cancel\n </button>\n <button [disabled]=\"!_dateToSet\"\n (click)=\"apply()\"\n class=\"button-flat\">\n Apply\n </button>\n </div>\n\n <ng-container *ngIf=\"monthPickerVisible\">\n <div class=\"month-picker\">\n <div class=\"days-toolbar\">\n <i (click)=\"prevYear()\"\n class=\"material-icons\">navigate_before</i>\n <span class=\"title\"\n (click)=\"showYearPicker()\">{{ currentSlot | date: 'yyyy' }}</span>\n <i (click)=\"nextYear()\"\n class=\"material-icons\">navigate_next</i>\n </div>\n <div class=\"months-container\">\n <div class=\"month-item\"\n *ngFor=\"let month of months; index as index\"\n (click)=\"selectMonth(index)\">\n {{ month }}\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"yearPickerVisible\">\n <div class=\"month-picker\">\n <div class=\"days-toolbar\">\n <i (click)=\"prevYearGroup()\"\n class=\"material-icons\">navigate_before</i>\n <span class=\"title\"\n (click)=\"showYearPicker()\">{{ currentSlot | date: 'yyyy' }}</span>\n <i (click)=\"nextYearGroup()\"\n class=\"material-icons\">navigate_next</i>\n </div>\n <div class=\"months-container\">\n <div class=\"month-item\"\n *ngFor=\"let year of years\"\n (click)=\"selectYear(year)\">\n {{ year }}\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"date-modal-extra-space\"></div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'zen-toggle-slide',\n templateUrl: './zendu-toggle-slide.component.html',\n styleUrls: ['./zendu-toggle-slide.component.scss']\n})\nexport class ZenduToggleSlideComponent {\n\n @Input() enabled!: boolean;\n\n @Output() enabledChange = new EventEmitter<boolean>();\n\n @Input() disabled!: boolean;\n\n /**\n * Toggle state\n */\n public toggle() {\n this.enabled = !this.enabled;\n this.enabledChange.emit(this.enabled);\n }\n}\n","<button class=\"toggle-slide-component\"\n (click)=\"toggle()\"\n [disabled]=\"disabled\"\n [class.active]=\"enabled\"\n [class.disabled]=\"disabled\">\n\n <div class=\"toggle-slider\"></div>\n <div class=\"toggle-btn\"></div>\n</button>\n","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'zen-radio',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss']\n})\nexport class ZenduRadioButtonComponent implements OnInit {\n\n @Input() selected: boolean;\n\n @Output() radioChange = new EventEmitter<string>();\n\n @Input() label: string;\n\n @Input() value: string;\n\n @Input() name: string;\n\n @Input() disabled = false;\n\n @Input() imageUrl: string;\n\n public selectedRadio: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"selected\"]) {\n if (changes[\"selected\"].currentValue) {\n this.selectedRadio = this.value;\n }\n else {\n this.selectedRadio = \"\";\n }\n }\n }\n\n public emitChange(event: any): void {\n if (this.disabled) {\n return;\n }\n this.radioChange.emit(event.target.value);\n }\n}\n","<div class=\"radio-component\"\n [ngClass]=\"{'disabled-radio': disabled}\">\n <input type=\"radio\"\n class=\"radio-input\"\n name=\"{{name}}\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n id=\"{{value}}\"\n [checked]=\"selectedRadio === value\"\n (change)=\"emitChange($event)\" />\n\n <label class=\"app-radio-button-label\"\n for=\"{{value}}\">\n <img class=\"radio-image\"\n [src]=\"imageUrl\"\n *ngIf=\"imageUrl\">\n {{label}}\n </label>\n</div>","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { FiltersConfig, FiltersConfigItem } from './filtersConfig';\nimport uniqBy from 'lodash.uniqby';\nimport { ZenduSearchBoxComponent } from '../search-box/zendu-search-box.component';\nimport { Util } from '../util';\nimport { DATEPICKER_POSITION } from '../datepicker/datepicker';\n\n@Component({\n\tselector: 'zen-filter',\n\ttemplateUrl: './zendu-filter.component.html',\n\tstyleUrls: ['./zendu-filter.component.scss']\n})\nexport class ZenduFilterComponent implements OnChanges {\n\n\t@Input() config: FiltersConfig = { items: [] };\n\n\t@Input() filter: object;\n\n\t@Input() position = 'right';\n\n\t@Input() resetBehavior: \"set_all\" | \"clear\" = 'clear';\n\n\t@Output() filterChange = new EventEmitter<object>();\n\n\t@Input() isVisible = false;\n\n\t@Output() isVisibleChange = new EventEmitter<boolean>();\n\n\t@Input() customTrigger = false;\n\n\t@Input() imageUrl: string;\n\n\t@Input() label: string;\n\n\tpublic searchText = '';\n\n\tpublic isApplied = false;\n\n\tprivate lastAppliedFilter: any = {};\n\n\tprivate resetedFilter: any;\n\n\tpublic menuLeft = \"0px\";\n\n\tpublic menuRight = \"0px\";\n\n\tpublic menuTop = \"0px\";\n\n\tpublic menuBottom = \"0px\";\n\n\tpublic showNoFilterResult: boolean;\n\n\tpublic errorMessage: string[] = []\n\n\tpublic datepickerPosition = DATEPICKER_POSITION;\n\n\t@ViewChild('searchBox', { static: false }) searchBox: ZenduSearchBoxComponent;\n\n\t@ViewChild('mainComponent', { static: false }) _componentElement: ElementRef<HTMLElement>;\n\n\tconstructor() { }\n\n\tpublic ngOnChanges(changes: any): void {\n\t\tif (changes.config && changes.config.currentValue) {\n\n\t\t\t// init values\n\t\t\tfor (const item of this.config.items) {\n\t\t\t\tif (item.type === 'multiselect') {\n\t\t\t\t\titem.dataSource = item.dataSource ? this.extractUniqueDataSource(item.dataSource) : [];\n\t\t\t\t} else if (item.type === 'dateRange' && !item.dateRange) {\n\t\t\t\t\titem.dateRange = { start: null, end: null };\n\t\t\t\t} else if (item.type === 'numberRange' && !item.numberRange) {\n\t\t\t\t\titem.numberRange = {};\n\t\t\t\t}\n\n\t\t\t\tif (typeof item.showTime !== 'boolean') {\n\t\t\t\t\titem.showTime = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.filterItems();\n\n\t\t\tthis.resetedFilter = this.getFilterObject();\n\t\t\tthis.filter = this.getFilterObject();\n\t\t\tthis.lastAppliedFilter = Util.clone(this.filter);\n\t\t}\n\n\t\tif (changes.filter && changes.filter.currentValue) {\n\t\t\tthis.lastAppliedFilter = Util.clone(changes.filter.currentValue);\n\n\t\t\tthis.updateAppliedState();\n\t\t}\n\n\t\tif (changes.isVisible && changes.isVisible.currentValue) {\n\t\t\tthis.updatePlacement();\n\t\t\tthis.focusSearchBox();\n\t\t}\n\t}\n\t\n\t@HostListener('window:mousedown', ['$event'])\n\toutsideHandling(event: MouseEvent) {\n\t\tif (!this.isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = event.target as HTMLElement;\n\t\tif (!document.body.contains(target)) {\n\t\t\t// element not in the DOM\n\t\t\treturn;\n\t\t}\n\t\tif (this._componentElement.nativeElement.contains(target)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// hide the menu for outside click\n\t\tthis.hide();\n\n\t\t// restore values\n\t\tthis.restorePreviousApplied();\n\t}\n\n\t@HostListener('window:resize', ['$event'])\n\twindowSizeHandling() {\n\t\tif (!this.isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updatePlacement();\n\t}\n\n\t@HostListener('window:scroll', ['$event'])\n\twindowScroll() {\n\t\tif (!this.isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updatePlacement();\n\t}\n\n\t@HostListener('window:wheel', ['$event'])\n\thandleMouseScroll(event: WheelEvent): void {\n\t\tif (!this.isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = event.target as HTMLElement;\n\t\tif (!document.body.contains(target)) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._componentElement.nativeElement.contains(target) && !target.classList.contains('button-stroked')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.hide();\n\t\tthis.restorePreviousApplied();\n\t}\n\n\t@HostListener('window:keydown', ['$event'])\n\tonWindowKeyDown(event: KeyboardEvent) {\n\t\tif (!this.isVisible) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'PageUp' || event.key === 'PageDown' || event.key === 'Home' || event.key === 'End') {\n\n\t\t\tconst target = event.target as HTMLElement;\n\t\t\tif (!document.body.contains(target)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._componentElement.nativeElement.contains(target) && !target.classList.contains('button-stroked')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.hide();\n\t\t\tthis.restorePreviousApplied();\n\t\t}\n\t}\n\n\tpublic focusSearchBox() {\n\t\tthis.searchBox.doFocus();\n\t}\n\n\tpublic isMenuIsVisible(item: FiltersConfigItem) {\n\t\tif (item.filteredDataSource && this.searchText) {\n\t\t\tif (!item.filteredDataSource.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate extractUniqueDataSource(\n\t\tarray: {\n\t\t\tid: string | number,\n\t\t\tname: string | number\n\t\t}[]\n\t): {\n\t\tid: string | number,\n\t\tname: string | number\n\t}[] {\n\t\tconst items = array.filter(el => {\n\t\t\treturn Boolean(\n\t\t\t\ttypeof el.id === 'number' ? typeof el.id !== undefined : el.id &&\n\t\t\t\t\ttypeof el.name === 'number' ? typeof el.name !== undefined : el.name\n\t\t\t);\n\t\t});\n\t\treturn uniqBy(items, (el) => el.id);\n\t}\n\n\tpublic onSelectAll(item: FiltersConfigItem) {\n\t\titem.dataSource.forEach(d => d.checked = item.isSelectedAll);\n\t}\n\n\tpublic isItemActive(item: FiltersConfigItem): boolean {\n\t\tif (item.type === 'multiselect') {\n\t\t\tconst checkedItems = item.dataSource.filter(el => el.checked);\n\t\t\titem.isSelectedAll = checkedItems.length === item.dataSource.length\n\t\t\treturn checkedItems.length > 0;\n\t\t} else if (item.type === 'radio') {\n\t\t\tconst selectedRadio = item.radioOptions.find(ro => ro.selected);\n\t\t\treturn selectedRadio ? true : false;\n\t\t} else if (item.type === 'numberRange') {\n\t\t\treturn Boolean(item.numberRange.from || item.numberRange.to);\n\t\t} else if (item.type === 'dateRange') {\n\t\t\treturn Boolean(item.dateRange.start || item.dateRange.end);\n\t\t} else if (item.type === 'date') {\n\t\t\treturn Boolean(item.date);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic searchTextChanged() {\n\t\tthis.filterItems();\n\t}\n\n\tpublic filterItems() {\n\t\tlet filteredItemsCount = 0; // Initialize with 0\n\n\t\tfor (const configItem of this.config.items) {\n\t\t\tif (configItem.type === 'multiselect') {\n\t\t\t\tconfigItem.filteredDataSource = configItem.dataSource.filter(el => {\n\t\t\t\t\tconst preparedName = typeof el.name === 'number' ? el.name.toString() : el.name;\n\t\t\t\t\treturn preparedName.toLowerCase().includes(this.searchText.toLowerCase());\n\t\t\t\t});\n\n\t\t\t\tfilteredItemsCount += configItem.filteredDataSource.length; // Increment the count by the length of filteredDataSource\n\t\t\t} else if (configItem.type === 'dateRange') {\n\t\t\t\tif (this.searchText && !Boolean(configItem.dateRange.start || configItem.dateRange.end)) {\n\t\t\t\t\tconfigItem.filteredDataSource = [];\n\t\t\t\t}\n\t\t\t} else if (configItem.type === 'numberRange') {\n\t\t\t\tif (this.searchText && !Boolean(configItem.numberRange.from || configItem.numberRange.to)) {\n\t\t\t\t\tconfigItem.filteredDataSource = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.showNoFilterResult = this.searchText && filteredItemsCount === 0;\n\n\t}\n\n\tprivate resetFilters() {\n\t\tlet selectAll = this.resetBehavior === \"set_all\";\n\t\tfor (const item of this.config.items) {\n\t\t\tif (item.dataSource) {\n\t\t\t\titem.isSelectedAll = selectAll;\n\n\t\t\t\tfor (const dsItem of item.dataSource) {\n\t\t\t\t\tdsItem.checked = selectAll;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (item.dateRange) {\n\t\t\t\titem.dateRange = { start: null, end: null };\n\t\t\t}\n\n\t\t\tif (item.numberRange) {\n\t\t\t\titem.numberRange = { from: null, to: null };\n\t\t\t}\n\n\t\t\tif (item.date) {\n\t\t\t\titem.date = new Date();\n\t\t\t}\n\t\t\tif (item.type === 'toggle') {\n\t\t\t\titem.enabled = false;\n\t\t\t}\n\t\t\tif (item.type === 'radio') {\n\t\t\t\titem.radioOptions.forEach(e => {\n\t\t\t\t\tif (e.id === item.selectedRadio) {\n\t\t\t\t\t\te.selected = true\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.selected = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate restorePreviousApplied(): void {\n\t\tfor (const item of this.config.items) {\n\t\t\tswitch (item.type) {\n\t\t\t\tcase 'multiselect':\n\t\t\t\t\tif (item.dataSource) {\n\t\t\t\t\t\tconst selection = this.lastAppliedFilter[item.key];\n\n\t\t\t\t\t\tfor (const dataItem of item.dataSource) {\n\t\t\t\t\t\t\tdataItem.checked = selection ? selection.includes(dataItem.id) : false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'dateRange':\n\t\t\t\t\titem.dateRange = this.lastAppliedFilter[item.key] || { start: null, end: null };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'numberRange':\n\t\t\t\t\titem.numberRange = this.lastAppliedFilter[item.key] || {};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'toggle':\n\t\t\t\t\titem.dateRange = this.lastAppliedFilter[item.key];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'date':\n\t\t\t\t\titem.date = this.lastAppliedFilter[item.key];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'radio':\n\t\t\t\t\titem.selectedRadio = this.lastAppliedFilter[item.key];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic reset() {\n\t\tthis.resetFilters();\n\n\t\tthis.filter = this.getFilterObject();\n\t\tthis.resetedFilter = this.getFilterObject();\n\t}\n\n\tpublic apply() {\n\t\tthis.filter = this.getFilterObject();\n\t\tlet hasError = false;\n\t\tfor (const iterator of this.config.items) {\n\t\t\tconst itemFlag = this.onCheckValidity(iterator);\n\t\t\tif (!itemFlag) {\n\t\t\t\thasError = true\n\t\t\t}\n\t\t}\n\t\tif (hasError) {\n\t\t\tsetTimeout(() => this.errorMessage = [], 5000);\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis.errorMessage = [];\n\t\t}\n\t\tthis.lastAppliedFilter = Util.clone(this.filter);\n\n\t\tthis.filterChange.emit(this.filter);\n\n\t\t// update the apply state\n\t\tthis.updateAppliedState();\n\n\t\tthis.hide();\n\t}\n\n\tprivate updateAppliedState() {\n\t\tthis.isApplied = false;\n\t\tif (Object.keys(this.filter).length > 0) {\n\t\t\tif (this.resetedFilter) {\n\t\t\t\t// Filter was reset, so compare the reset filter object with the current filter\n\t\t\t\t// When user click on Reset and Then Apply, filter must unhighlighted\n\t\t\t\tif (JSON.stringify(this.resetedFilter) !== JSON.stringify(this.filter)) {\n\t\t\t\t\tthis.isApplied = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.isApplied = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getFilterObject() {\n\t\tconst filter = {};\n\n\t\tfor (const item of this.config.items) {\n\t\t\tswitch (item.type) {\n\t\t\t\tcase 'multiselect':\n\t\t\t\t\tif (item.dataSource && item.dataSource.length) {\n\t\t\t\t\t\tconst checkedIds = item.dataSource\n\t\t\t\t\t\t\t.filter(i => i.checked)\n\t\t\t\t\t\t\t.map(i => i.id);\n\n\t\t\t\t\t\tif (checkedIds.length) {\n\t\t\t\t\t\t\tfilter[item.key] = checkedIds;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'dateRange':\n\t\t\t\t\tif (\n\t\t\t\t\t\titem.dateRange &&\n\t\t\t\t\t\titem.dateRange.start &&\n\t\t\t\t\t\titem.dateRange.end\n\t\t\t\t\t) {\n\t\t\t\t\t\tfilter[item.key] = item.dateRange;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'numberRange':\n\t\t\t\t\tif (\n item.numberRange &&\n typeof item?.numberRange?.from === 'number' &&\n\t\t\t\t\t\ttypeof item?.numberRange?.to === 'number'\n ) {\n filter[item.key] = item.numberRange;\n }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'toggle':\n\t\t\t\t\tfilter[item.key] = item.enabled || false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'date':\n\t\t\t\t\tif (item.date) {\n\t\t\t\t\t\tfilter[item.key] = item.date;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'radio':\n\t\t\t\t\tfilter[item.key] = item.radioOptions.find(ro => ro.selected)?.id;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn filter;\n\t}\n\n\tpublic hide() {\n\t\tthis.isVisible = false;\n\t\tthis.searchText = '';\n\t\tthis.filterItems();\n\n\t\tthis.isVisibleChange.emit(false);\n\t}\n\n\tpublic radioChanged(value: string, item: FiltersConfigItem): void {\n\t\titem.radioOptions.forEach(opt => opt.selected = opt.id === value);\n\t}\n\n\tpublic toggle() {\n\t\tthis.isVisible = !this.isVisible;\n\t\tthis.updatePlacement();\n\t\tthis.focusSearchBox()\n\t}\n\n\tpublic onCheckValidity(item: FiltersConfigItem) {\n\t\tif (item.type === 'numberRange') {\n\t\t\tif (typeof item.numberRange.from === 'number' && typeof item.numberRange.to === 'number' && item.numberRange.from >= item.numberRange.to) {\n\t\t\t\tthis.errorMessage.push(`Invalid Number range, Min number should be less than Max number.`); \n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif (item.type === 'dateRange') {\n\t\t\tif (item.dateRange.start && item.dateRange.end && new Date(item.dateRange.start) >= new Date(item.dateRange.end)) {\n\t\t\t\tthis.errorMessage.push(`Invalid Date range, Start date should be less than End date.`); \n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\n\tpublic updatePlacement() {\n\t\tconst container = this._componentElement.nativeElement as HTMLElement;\n\t\tconst rect = container.getBoundingClientRect();\n\t\tconst left = rect.left;\n\t\tconst right = rect.right;\n\t\tconst top = rect.top;\n\t\tconst bottom = window.innerHeight - top;\n\n\t\t//Update left-right position \n\t\tif (this.position.includes(\"auto\")) {\n\t\t\tconst horizontalPosition = this.getHorizontalPosition();\n\t\t\tthis.menuRight = horizontalPosition === \"left\" ? `${window.innerWidth - right}px` : \"unset\";\n\t\t\tthis.menuLeft = horizontalPosition === \"right\" ? `${left}px` : \"unset\";\n\t\t} else if (this.position.includes(\"left\")) {\n\t\t\tthis.menuRight = `${window.innerWidth - right}px`;\n\t\t\tthis.menuLeft = \"unset\";\n\t\t} else {\n\t\t\tthis.menuLeft = `${left}px`;\n\t\t\tthis.menuRight = \"unset\";\n\t\t}\n\n\t\t//Update top-bottom position \n\t\tif (this.position.includes(\"auto\")) {\n\t\t\tconst verticalPosition = this.getVerticalPosition();\n\t\t\tthis.menuTop = verticalPosition === \"bottom\" ? `${top + 42}px` : \"unset\";\n\t\t\tthis.menuBottom = verticalPosition === \"top\" ? `${bottom}px` : \"unset\";\n\t\t} else if (this.position.includes(\"top\")) {\n\t\t\tthis.menuTop = \"unset\";\n\t\t\tthis.menuBottom = `${bottom + 10}px`;\n\t\t} else {\n\t\t\tthis.menuTop = `${top + 55}px`;\n\t\t\tthis.menuBottom = \"unset\";\n\t\t}\n\t}\n\n\tprivate getVerticalPosition(): \"bottom\" | \"top\" {\n\t\tconst top = this._componentElement.nativeElement.getBoundingClientRect().top;\n\t\treturn top > window.innerHeight / 2 ? \"top\" : \"bottom\";\n\t}\n\n\tprivate getHorizontalPosition(): \"right\" | \"left\" {\n\t\tconst left = this._componentElement.nativeElement.getBoundingClientRect().left;\n\t\treturn left > window.innerWidth / 2 ? \"left\" : \"right\";\n\t}\n}\n","<div class=\"filters-component\"\n\t #mainComponent\n\t click-out=\"isVisible && hide()\">\n\n\t<ng-container *ngIf=\"!customTrigger\">\n\t\t<button (click)=\"toggle()\"\n\t\t\t\tclass=\"button-stroked filter {{isApplied ? 'applied' : ''}}\">\n\t\t\t<zen-icon [src]=\"imageUrl\"\n\t\t\t\t\t *ngIf=\"imageUrl\"></zen-icon>\n\t\t\t<i class=\"filter-icon material-icons\"\n\t\t\t *ngIf=\"!imageUrl\">filter_list</i>\n\t\t\t<span *ngIf=\"label\">{{ label }}</span>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-content *ngIf=\"customTrigger\"></ng-content>\n\n\t<div [hidden]=\"!isVisible\"\n\t\t class=\"action-menu menu-content\"\n\t\t [class.customTrigger]=\"customTrigger\"\n\t\t [ngStyle]=\"{ 'left': menuLeft, 'right': menuRight, 'top': menuTop, 'bottom': menuBottom }\">\n\t\t<div class=\"action-menu-header\">\n\t\t\t<zen-search-box [(text)]=\"searchText\"\n\t\t\t\t\t\t\t#searchBox\n\t\t\t\t\t\t\t(textChange)=\"searchTextChanged()\"></zen-search-box>\n\t\t</div>\n\n\t\t<div class=\"action-menu-body items-wrapper\">\n\t\t\t<ng-container *ngIf=\"errorMessage.length\">\n\t\t\t\t<li *ngFor=\"let item of errorMessage\" class=\"error-msg\">{{item}}</li>\n\t\t\t</ng-container>\n\t\t\t\n\t\t\t<div *ngFor=\"let item of config.items\">\n\t\t\t\t<div class=\"menu-item\"\n\t\t\t\t\t *ngIf=\"isMenuIsVisible(item)\">\n\n\t\t\t\t\t<!-- Divider between two filter -->\n\t\t\t\t\t<div *ngIf=\"item.type === 'divider'\">\n\t\t\t\t\t\t<p class=\"filter-divider\"></p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Boolean toggle -->\n\t\t\t\t\t<div *ngIf=\"item.type === 'toggle'\"\n\t\t\t\t\t\t class=\"action-item toggle-row\">\n\t\t\t\t\t\t<div>{{item.title}}</div>\n\t\t\t\t\t\t<zen-toggle-slide [(enabled)]=\"item.enabled\"></zen-toggle-slide>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<button class=\"action-item expander-item\"\n\t\t\t\t\t\t\t*ngIf=\"item.type != 'toggle' && item.type != 'divider' && !item.disableCollapse\"\n\t\t\t\t\t\t\t(click)=\"item.expanded = !item.expanded\"\n\t\t\t\t\t\t\t[ngClass]=\"{'active': isItemActive(item), 'expanded': item.expanded}\">\n\t\t\t\t\t\t<i class=\"material-icons expand-icon\"\n\t\t\t\t\t\t [ngClass]=\"{'active': item.expanded}\">expand_more</i>\n\t\t\t\t\t\t{{item.title}}\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<ng-container *ngIf=\"item.expanded || item.disableCollapse\">\n\t\t\t\t\t\t<div [ngSwitch]=\"item.type\">\n\t\t\t\t\t\t\t<!-- Multiselect -->\n\t\t\t\t\t\t\t<div *ngSwitchCase=\"'multiselect'\">\n\t\t\t\t\t\t\t\t<div class=\"action-item-checkbox ds-item select-all\">\n\t\t\t\t\t\t\t\t\t<zen-checkbox *ngIf=\"item.dataSource.length === item.filteredDataSource.length\"\n\t\t\t\t\t\t\t\t\t\t\t\t [(checked)]=\"item.isSelectedAll\"\n\t\t\t\t\t\t\t\t\t\t\t\t [indeterminate]=\"isItemActive(item) && !item.isSelectedAll\"\n\t\t\t\t\t\t\t\t\t\t\t\t label=\"Select All\"\n\t\t\t\t\t\t\t\t\t\t\t\t (checkedChange)=\"onSelectAll(item)\">\n\t\t\t\t\t\t\t\t\t</zen-checkbox>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div *ngFor=\"let dsItem of item.filteredDataSource\"\n\t\t\t\t\t\t\t\t\t class=\"action-item-checkbox ds-item\">\n\t\t\t\t\t\t\t\t\t<zen-checkbox [(checked)]=\"dsItem.checked\"\n\t\t\t\t\t\t\t\t\t\t\t\t [imageUrl]=\"dsItem.imageUrl\"\n\t\t\t\t\t\t\t\t\t\t\t\t [label]=\"dsItem.name\"></zen-checkbox>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Date range picker -->\n\t\t\t\t\t\t\t<div *ngSwitchCase=\"'dateRange'\">\n\t\t\t\t\t\t\t\t<div class=\"ds-item filter-row\">\n\t\t\t\t\t\t\t\t\t<div class=\"lbl\">From:</div>\n\t\t\t\t\t\t\t\t\t<zen-datepicker class=\"width-full\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[(date)]=\"item.dateRange.start\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"item.showTime\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\">\n\t\t\t\t\t\t\t\t\t</zen-datepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"ds-item filter-row\">\n\t\t\t\t\t\t\t\t\t<div class=\"lbl\">To:</div>\n\t\t\t\t\t\t\t\t\t<zen-datepicker class=\"width-full\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[(date)]=\"item.dateRange.end\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"item.showTime\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\">\n\t\t\t\t\t\t\t\t\t</zen-datepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Date picker -->\n\t\t\t\t\t\t\t<div *ngSwitchCase=\"'date'\">\n\t\t\t\t\t\t\t\t<div class=\"ds-item filter-row\">\n\t\t\t\t\t\t\t\t\t<div class=\"lbl\">Date:</div>\n\t\t\t\t\t\t\t\t\t<zen-datepicker class=\"width-full\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[(date)]=\"item.date\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[showTime]=\"item.showTime\">\n\t\t\t\t\t\t\t\t\t</zen-datepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Number range -->\n\t\t\t\t\t\t\t<div *ngSwitchCase=\"'numberRange'\"\n\t\t\t\t\t\t\t\t class=\"filter-row number-range-row\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<div class=\"lbl\">Min:</div>\n\t\t\t\t\t\t\t\t\t<input class=\"material-input\"\n\t\t\t\t\t\t\t\t\t\t [(ngModel)]=\"item.numberRange.from\"\n\t\t\t\t\t\t\t\t\t\t type=\"number\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<div class=\"lbl\">Max:</div>\n\t\t\t\t\t\t\t\t\t<input class=\"material-input\"\n\t\t\t\t\t\t\t\t\t\t [(ngModel)]=\"item.numberRange.to\"\n\t\t\t\t\t\t\t\t\t\t type=\"number\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Radio -->\n\t\t\t\t\t\t\t<div *ngSwitchCase=\"'radio'\">\n\t\t\t\t\t\t\t\t<div *ngFor=\"let option of item.radioOptions\"\n\t\t\t\t\t\t\t\t\t class=\"action-item-radio ds-item\"\n\t\t\t\t\t\t\t\t\t [ngClass]=\"{'active': option.selected}\">\n\t\t\t\t\t\t\t\t\t<zen-radio [value]=\"option.id\"\n\t\t\t\t\t\t\t\t\t\t\t [label]=\"option.name\"\n\t\t\t\t\t\t\t\t\t\t\t [name]=\"item.key\"\n\t\t\t\t\t\t\t\t\t\t\t [imageUrl]=\"option.imageUrl\"\n\t\t\t\t\t\t\t\t\t\t\t [selected]=\"option.selected\"\n\t\t\t\t\t\t\t\t\t\t\t (radioChange)=\"radioChanged($event, item)\"\n\t\t\t\t\t\t\t\t\t\t\t [disabled]=\"option.disabled\"></zen-radio>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<span *ngIf=\"showNoFilterResult\"\n\t\t\t\t class=\"no-item\">No Results Found..</span>\n\t\t</div>\n\n\t\t<div class=\"action-menu-footer\">\n\t\t\t<button (click)=\"reset()\"\n\t\t\t\t\tclass=\"button-stroked full-width\">\n\t\t\t\tReset\n\t\t\t</button>\n\t\t\t<button (click)=\"apply()\"\n\t\t\t\t\tclass=\"button-flat full-width\">\n\t\t\t\tApply\n\t\t\t</button>\n\t\t</div>\n\n\t</div>\n</div>","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[zen-select-option]'\n})\nexport class ZenduSelectOptionDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[zen-select-value]'\n})\nexport class ZenduSelectValueDirective {\n\n constructor(public template: TemplateRef<any>) { }\n\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, ContentChild } from '@angular/core';\n\nimport { ZenduSelectOptionDirective } from './templates/zendu-select-option.directive';\nimport { ZenduSelectValueDirective } from './templates/zendu-select-value.directive';\n\n@Component({\n selector: 'zen-select',\n templateUrl: './zendu-select.component.html',\n styleUrls: ['./zendu-select.component.scss']\n})\nexport class ZenduSelectComponent implements OnChanges {\n /**\n * 2-Way component property for selected items.\n * Don't initialize property on constructor to prevent change source parameter\n */\n @Input() selectModel: any | any[];\n\n /**\n * callback to emit changes for parent component\n */\n @Output() selectModelChange = new EventEmitter<any>();\n\n /**\n * List of options for select\n */\n @Input() options: any[] = [];\n\n /**\n * Property to set custom placeholder value\n */\n @Input() placeholder = 'Select Items';\n\n /**\n * This is a key value to get display name from option object\n */\n @Input() displayProp: string;\n\n /**\n * This is a key value to get id from option object\n */\n @Input() idProp: string;\n\n /**\n * Component property to enable search\n */\n @Input() hasSearch: boolean;\n\n /**\n * Component property to return whole option object\n * By default only id value is returned\n */\n @Input() returnOption: boolean;\n\n /**\n * Component property to enable multiselect\n */\n @Input() isMultiselect: boolean;\n\n /**\n * Component property to disable component\n */\n @Input() disabled = false;\n\n /**\n * Show the custom icon for toggle\n */\n @Input() customIcon = \"\";\n\n /**\n * Color for custom icon\n */\n @Input() customIconColor = \"\";\n\n /**\n * Truncate text with \"...\" at the end\n */\n @Input() isTruncate: boolean = false;\n\n /**\n * Filtered items visible on dropdown\n */\n public filteredOptions: any[];\n\n /**\n * Is dropdown expanded\n */\n public isExpanded = false;\n\n public searchText = '';\n\n public labelText = '';\n\n public isTopMenuDirection = false;\n\n public constructor(\n private _element: ElementRef) {\n }\n\n /**\n * Select Option Template for custom HTML\n */\n @ContentChild(ZenduSelectOptionDirective) optionTemplate: ZenduSelectOptionDirective;\n\n /**\n * Select Value Template for custom HTML\n */\n @ContentChild(ZenduSelectValueDirective) valueTemplate: ZenduSelectValueDirective;\n\n @HostListener('window:mousedown', ['$event'])\n outsideHandling(event) {\n if (!document.body.contains(event.target)) {\n // element not in the DOM\n return;\n }\n if (this._element.nativeElement.contains(event.target)) {\n return;\n }\n // hide the menu for outside click\n this.hideDropDown();\n }\n\n @HostListener('window:scroll', [])\n scroll() {\n this.updatePlacement();\n }\n\n public ngOnChanges(changeObj: any): void {\n this.filterOptions();\n this.updateLabel();\n }\n\n public isModelEmpty(): boolean {\n if (this.isMultiselect) {\n return !this.selectModel || !this.selectModel.length;\n } else {\n return typeof this.selectModel === 'undefined' || this.selectModel === null;\n }\n }\n\n public handleOptionClick(option: string | object) {\n const optionValue = this.returnOption ? option : this.getId(option);\n\n if (this.isMultiselect) {\n this.toggleOption(optionValue);\n } else {\n this.singleSelect(optionValue);\n }\n\n this.emitChange();\n }\n\n // Logic for single select\n private singleSelect(value: string | object) {\n this.selectModel = value;\n\n // Hide dropdown if single select\n this.hideDropDown();\n }\n\n public toggleExpand() {\n this.isExpanded = !this.isExpanded;\n this.searchText = \"\";\n this.filterOptions();\n this.updatePlacement();\n }\n\n // Logic for multiselect\n private toggleOption(value: string | object): void {\n if (!Array.isArray(this.selectModel)) {\n this.selectModel = [];\n }\n\n const index = this.getElementIndex(value);\n\n if (index < 0) {\n this.selectModel.push(value);\n } else {\n this.selectModel.splice(index, 1);\n }\n\n this.updateLabel();\n }\n\n private getElementIndex(value: string | object): number {\n if (typeof value === 'object') {\n const valueId = this.getId(value);\n return this.selectModel.findIndex(el => this.getId(el) === valueId);\n } else {\n return this.selectModel.indexOf(value);\n }\n }\n\n public toggleAll(): void {\n if (this.selectModel.length !== this.options.length) {\n this.selectModel = this.options.map(el => this.returnOption ? el : this.getId(el));\n } else {\n this.selectModel = [];\n }\n\n this.emitChange();\n }\n\n public onSearchChange(): void {\n this.filterOptions();\n }\n\n private filterOptions(): void {\n const options = this.options.slice(0);\n\n if (!this.searchText) {\n this.filteredOptions = options;\n return;\n }\n\n const regex = new RegExp(this.searchText, 'i');\n this.filteredOptions = options.filter(option => regex.test(this.getName(option)));\n }\n\n public isSelected(option: string | object): boolean {\n if (this.isModelEmpty()) {\n return false;\n }\n\n const optionId = this.getId(option);\n\n if (this.isMultiselect) {\n return this.selectModel.findIndex(el => this.getId(el) === optionId) >= 0;\n } else {\n return this.getId(this.selectModel) === optionId;\n }\n }\n\n public updateLabel() {\n if (this.isModelEmpty()) {\n return;\n }\n\n if (this.isMultiselect) {\n const selectedCount = this.selectModel.length;\n\n if (selectedCount === 1) {\n this.labelText = this.getNameFromValue(this.selectModel[0]);\n } else {\n this.labelText = `${selectedCount} Selected`;\n }\n } else {\n this.labelText = this.getNameFromValue(this.selectModel);\n }\n }\n\n public getNameFromValue(val: string | object): string {\n if (this.returnOption) {\n return this.getName(val);\n } else {\n if (!this.options || !this.options.length) {\n return '';\n }\n\n return this.getName(this.options.find(el => this.getId(el) === val));\n }\n }\n\n public getName(option: string | object): string {\n if (typeof option === 'object') {\n if (this.displayProp) {\n return this.GetRecursiveProperty(option, this.displayProp);\n } else {\n console.error('App-Select: when using objects as model, a displayProp value is mandatory.');\n return \"\";\n }\n } else {\n return option;\n }\n }\n\n private getId(option: string | object): string {\n if (typeof option === 'object') {\n if (this.idProp) {\n return this.GetRecursiveProperty(option, this.idProp);\n } else {\n console.error('App-Select: when using objects as model, a idProp value is mandatory.');\n return \"\";\n }\n } else {\n return option;\n }\n }\n\n private GetRecursiveProperty(object: any, path: string): string {\n return path.split('.').reduce((obj, x) => {\n if (obj) {\n return obj[x];\n } else {\n return null;\n }\n }, object);\n }\n\n public async hideDropDown(): Promise<void> {\n this.isExpanded = false;\n }\n\n private emitChange() {\n // notify with timeout\n // allow output property \"enabled\" applied by parent first and then emit the onChange\n setTimeout(() => {\n this.selectModelChange.emit(this.selectModel);\n }, 1);\n }\n\n private updatePlacement() {\n // update menu position base on scroll\n this.isTopMenuDirection = this.getMenuDirection() === \"top\";\n }\n\n private getMenuDirection(): \"bottom\" | \"top\" {\n\n const element = this._element.nativeElement;\n const top = element.getBoundingClientRect().top;\n\n const height = window.innerHeight;\n\n if (top > (height / 2)) {\n return \"top\";\n }\n else {\n return \"bottom\"\n }\n }\n\n private getMaxMenuHeight() {\n const containerElement = this.getContainerElement();\n if (!containerElement || !containerElement.clientHeight) {\n return \"190px\";\n }\n\n const parentHeight = containerElement.clientHeight;\n let height = Math.round((parentHeight / 2) - 25);\n height = Math.min(216, height);\n height = Math.max(96, height);\n return `${height}px`;\n }\n\n private getContainerElement() {\n const component = this._element.nativeElement as HTMLElement;\n const container = component.getElementsByClassName(\"app-select\").item(0) as HTMLElement;\n return container.offsetParent;\n }\n}\n","<div class=\"app-select\">\n <button class=\"app-select-toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleExpand()\"\n [ngClass]=\"{'active': isExpanded}\">\n <div class=\"app-select-label\">\n <div class=\"placeholder\"\n *ngIf=\"isModelEmpty()\">\n <span>{{placeholder}}</span>\n </div>\n <div class=\"selected-item\"\n *ngIf=\"!isMultiselect && !isModelEmpty()\">\n <ng-template *ngIf=\"valueTemplate && selectModel[0]; else tplValueText\"\n [ngTemplateOutlet]=\"valueTemplate.template\"\n [ngTemplateOutletContext]=\"{ selectModel: selectModel, labelText: labelText }\"></ng-template>\n <ng-template #tplValueText>\n <span>{{ labelText }}</span>\n </ng-template>\n </div>\n <div class=\"selected-item\"\n *ngIf=\"isMultiselect && !isModelEmpty()\">\n <span>{{ labelText }}</span>\n </div>\n </div>\n <i *ngIf=\"!customIcon\"\n class=\"material-icons app-select-icon\">expand_more</i>\n <i *ngIf=\"customIcon\"\n class=\"material-icons-outlined custom-icon\"\n [style.color]=\"customIconColor\">{{customIcon}}</i>\n </button>\n\n <div class=\"action-menu-container\">\n <div class=\"action-menu app-select-dropdown-wrapper\"\n [ngClass]=\"{ 'show-top': isTopMenuDirection }\">\n <div class=\"app-select-dropdown\"\n *ngIf=\"isExpanded\">\n <div class=\"action-menu-header\"\n *ngIf=\"hasSearch\">\n <!--Search options-->\n <div class=\"search-wrapper\">\n <zen-search-box [(text)]=\"searchText\"\n (textChange)=\"onSearchChange()\"></zen-search-box>\n </div>\n </div>\n <div class=\"action-menu-body\">\n <!--No options found-->\n <div class=\"no-options-found\"\n *ngIf=\"!filteredOptions.length\">\n No matching options found\n </div>\n\n <!--Select All Option-->\n <div class=\"action-item-checkbox select-all\"\n *ngIf=\"isMultiselect && !searchText\"\n (click)=\"toggleAll()\">\n <zen-checkbox [checked]=\"selectModel.length === options.length\"\n [indeterminate]=\"selectModel.length !== options.length && selectModel.length\"\n [disableValueChange]=\"true\"\n [label]=\"'Select All'\"></zen-checkbox>\n </div>\n\n <!--Single select Options-->\n <ng-container *ngIf=\"!isMultiselect\">\n <a class=\"action-item\"\n *ngFor=\"let option of filteredOptions\"\n (click)=\"handleOptionClick(option)\"\n [ngClass]=\"{ 'active': isSelected(option) }\">\n <span *ngIf=\"!isMultiselect\"\n [class.action-item-truncate]=\"isTruncate\">\n <ng-template *ngIf=\"optionTemplate; else tplOptionText\"\n [ngTemplateOutlet]=\"optionTemplate.template\"\n [ngTemplateOutletContext]=\"{ option: option }\">\n </ng-template>\n <ng-template #tplOptionText>\n {{ getName(option) }}\n </ng-template>\n </span>\n </a>\n </ng-container>\n\n <!--Multiselect Options-->\n <ng-container *ngIf=\"isMultiselect\">\n <div class=\"action-item-checkbox\"\n *ngFor=\"let option of filteredOptions\"\n (click)=\"handleOptionClick(option)\">\n <zen-checkbox *ngIf=\"isMultiselect\"\n [checked]=\"isSelected(option)\"\n [label]=\"getName(option)\"\n [disableValueChange]=\"true\"></zen-checkbox>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { PageItem } from './pageItem';\n\n\n@Component({\n selector: 'zen-pagination-bar',\n templateUrl: './zendu-pagination-bar.component.html',\n styleUrls: ['./zendu-pagination-bar.component.scss']\n})\nexport class ZenduPaginationBarComponent implements OnChanges {\n /*\n\t * 2-Way component property for current page number.\n\t */\n @Input() page: number;\n\n /*\n * property for page size.\n */\n @Input() perPage: number;\n\n /*\n * Component property for total records\n */\n @Input() count: number;\n\n @Output() pageChange = new EventEmitter<number>();\n\n @Output() perPageChange = new EventEmitter<number>();\n\n public CurrentPageItemsCount: number;\n\n public pagesCount: number;\n\n public pages: PageItem[];\n\n public pagesInGroup = 7;\n\n public availablePagesSize = [10, 20, 30, 40, 50];\n\n public totalPages: number;\n\n public constructor() {\n this.page = 1;\n this.perPage = 10;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"count\"]) {\n this.reCalculatePageCount();\n }\n }\n\n public nextPage(): void {\n if (this.page + 1 > this.totalPages) {\n return;\n }\n\n this.page++;\n\n this.pageChange.emit(this.page);\n }\n\n public prevPage(): void {\n if (this.page - 1 <= 0) {\n return;\n }\n\n this.page--;\n\n this.pageChange.emit(this.page);\n }\n\n public updatePageSize(): void {\n this.reCalculatePageCount();\n this.page = 1;\n\n this.pageChange.emit(this.page);\n this.perPageChange.emit(this.perPage);\n }\n\n public endRowSize(): number {\n const to = this.page * this.perPage;\n\n if (to <= this.count) {\n return to;\n } else {\n return this.count;\n }\n }\n\n public reCalculatePageCount() {\n let pages = this.count / this.perPage;\n\n if (this.count % this.perPage !== 0) {\n pages++;\n }\n\n this.totalPages = pages;\n }\n}\n","<div class=\"pagination-component\">\n <div class=\"select-dropdown\">\n <label>Rows per page:</label>\n <zen-select [(selectModel)]=\"perPage\"\n [options]=\"availablePagesSize\"\n (selectModelChange)=\"updatePageSize()\"></zen-select>\n </div>\n <div class=\"pages\">\n <button class=\"pagination-button\"\n [disabled]=\"page - 1 <= 0\"\n (click)=\"prevPage()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </button>\n <label>{{((page - 1) * perPage) + 1 }} - {{endRowSize()}} of {{count}}</label>\n <button class=\"pagination-button\"\n [disabled]=\"page + 1 > totalPages\"\n (click)=\"nextPage()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { PhoneNumberUtil } from 'google-libphonenumber';\n\n@Component({\n selector: 'zen-phone-input',\n templateUrl: './zendu-phone-input.component.html',\n styleUrls: ['./zendu-phone-input.component.scss']\n})\nexport class ZenduPhoneInputComponent implements OnInit, OnChanges {\n\n @Input() phone: string;\n\n @Input() maxLength: number = 12;\n\n @Output() phoneChange = new EventEmitter<string>();\n\n @Output() validChange = new EventEmitter<boolean>();\n\n @Input() disabled = false;\n\n public phoneText = \"\";\n\n public countryList: { countryCode: string, countryName: string, countryCallingCode: string, flag: string }[] = [\n {\n countryCode: \"US\",\n countryName: \"America\",\n countryCallingCode: \"+1\",\n flag: \"https://storage.googleapis.com/zenduit-icons/Flags/USA.svg\"\n },\n {\n countryCode: \"CA\",\n countryName: \"Canada\",\n countryCallingCode: \"+1\",\n flag: \"https://storage.googleapis.com/zenduit-icons/Flags/Canada.svg\"\n },\n {\n countryCode: \"MX\",\n countryName: \"Mexico\",\n countryCallingCode: \"+52\",\n flag: \"https://storage.googleapis.com/zenduit-icons/Flags/Mexico.svg\"\n }\n ];\n\n public customCountry = {\n countryCode: \"\",\n countryName: \"Custom\",\n countryCallingCode: \"\",\n flag: \"https://storage.googleapis.com/zenduit-icons/Flags/Custom.svg\"\n };\n\n public selectedCountry: { countryCode: string, countryName: string, countryCallingCode: string, flag: string };\n\n public isExpanded = false;\n\n public constructor() {\n this.selectedCountry = this.countryList[1];\n }\n\n public ngOnInit(): void {\n this.parseNumber();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"phone\"] && (!this.selectedCountry || !this.selectedCountry.countryCode)) {\n this.parseNumber();\n }\n }\n\n public parseNumber(): void {\n try {\n this.phoneText = this.phone;\n\n if (this.phone) {\n const countryFromList = this.countryList.find(country => this.phone.startsWith(country.countryCallingCode) || `+${this.phone}`.startsWith(country.countryCallingCode));\n if (countryFromList) {\n this.selectedCountry = countryFromList || this.customCountry;\n const phoneNumberUtil = PhoneNumberUtil.getInstance();\n const parsedPhone = phoneNumberUtil.parse(this.phone || \"\", 'US');\n setTimeout(() => {\n if (this.phoneText.startsWith('+')) {\n this.phoneText = this.phoneText.replace(`+${parsedPhone.getCountryCode()}`, \"\");\n } else if (this.phoneText.startsWith(parsedPhone.getCountryCode())) {\n this.phoneText = this.phoneText.replace(parsedPhone.getCountryCode(), \"\");\n }\n this.phoneChanged();\n });\n } else {\n this.selectedCountry = this.customCountry; \n }\n } else {\n this.selectedCountry = this.customCountry;\n }\n } catch (err) {\n console.warn(`Can't parse phone: ${this.phone}`, err);\n this.selectedCountry = this.customCountry;\n }\n }\n\n public countryChanged(country): void {\n this.isExpanded = false;\n this.selectedCountry = country;\n this.phoneChanged();\n }\n\n public phoneChanged(input?: HTMLInputElement): void {\n \n // allow + in custom country\n let custom = false;\n if (this.selectedCountry === this.customCountry && this.phoneText.includes('+')) {\n custom = true;\n }\n \n const phoneText = (this.phoneText || '').replace(/\\D/g, '');\n this.phoneText = custom ? `+${phoneText}`: phoneText\n if (input && input.value !== this.phoneText) {\n input.value = this.phoneText;\n }\n const fullNumber = `${this.selectedCountry.countryCallingCode}${this.phoneText}`;\n if (this.phone !== fullNumber) {\n this.phoneChange.emit(fullNumber);\n }\n const phoneNumberUtil = PhoneNumberUtil.getInstance();\n if (this.selectedCountry === this.customCountry) {\n this.validChange.emit(true);\n } else {\n try {\n this.validChange.emit(phoneNumberUtil.isValidNumber(phoneNumberUtil.parseAndKeepRawInput(fullNumber)));\n } catch {\n this.validChange.emit(false);\n }\n }\n }\n\n public hideDropDown(): void {\n this.isExpanded = false;\n }\n\n public toggle() {\n if (this.disabled) {\n return;\n }\n this.isExpanded = !this.isExpanded;\n }\n}\n","<div class=\"phone-input-component\">\n <div class=\"material-input\">\n <a class=\"country-select\"\n (click)=\"toggle()\">\n <img class=\"country-flag\"\n [src]=\"selectedCountry.flag\">\n <i class=\"material-icons expand-icon\"\n [ngClass]=\"{'active': isExpanded}\">expand_more</i>\n <div class=\"code\">{{ selectedCountry.countryCallingCode }}</div>\n </a>\n <input class=\"phone-input\"\n type=\"text\"\n [(ngModel)]=\"phoneText\"\n (ngModelChange)=\"phoneChanged(input)\"\n (click)=\"isExpanded = false\"\n [disabled]=\"disabled\"\n country-code=\"selectedCountry.countryCode\"\n [maxlength]=\"maxLength\"\n #input>\n </div>\n\n <div class=\"action-menu country-dropdown-list\"\n *ngIf=\"isExpanded\">\n <div class=\"action-menu-body\">\n <!--Country's List-->\n <a class=\"action-item\"\n *ngFor=\"let country of countryList\"\n [ngClass]=\"{'active': selectedCountry.countryName === country.countryName}\"\n (click)=\"countryChanged(country)\">\n <img class=\"country-flag\"\n [src]=\"country.flag\">\n <div>{{ country.countryName }}</div>\n <div>{{ country.countryCallingCode }}</div>\n </a>\n\n <!--Custom Country-->\n <a class=\"action-item\"\n [ngClass]=\"{'active': selectedCountry.countryName === customCountry.countryName}\"\n (click)=\"countryChanged(customCountry)\">\n <img class=\"country-flag\"\n [src]=\"customCountry.flag\">\n <div>{{ customCountry.countryName }}</div>\n <div>{{ customCountry.countryCallingCode }}</div>\n </a>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'zen-sort',\n templateUrl: './zendu-sort-header.component.html',\n styleUrls: ['./zendu-sort-header.component.scss']\n})\nexport class ZenduSortHeaderComponent {\n\n @Input() sort!: 'asc' | 'desc' | '';\n\n @Output() sortChange = new EventEmitter<'asc' | 'desc'>();\n\n @Input() active!: boolean;\n\n public toggleSort() {\n switch (this.sort) {\n case 'asc':\n this.sort = 'desc';\n this.sortChange.emit(this.sort);\n break;\n case 'desc':\n this.sort = 'asc';\n this.sortChange.emit(this.sort);\n break;\n default:\n this.sort = 'asc';\n this.sortChange.emit(this.sort);\n }\n }\n}\n","<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <div>\n <i class=\"material-icons sort-icon\"\n [ngClass]=\"active && sort === 'asc' ? 'sort-icon-active' : ''\">\n keyboard_arrow_up\n </i>\n </div>\n <div>\n <i class=\"material-icons sort-icon\"\n [ngClass]=\"active && sort === 'desc' ? 'sort-icon-active' : ''\">\n keyboard_arrow_down\n </i>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'zen-toggle',\n templateUrl: './zendu-toggle.component.html',\n styleUrls: ['./zendu-toggle.component.scss']\n})\nexport class ZenduToggleComponent {\n\n @Input() enabled!: boolean;\n\n @Output() enabledChange = new EventEmitter<boolean>();\n\n @Input() onLabel = \"On\";\n\n @Input() offLabel = \"Off\";\n\n /**\n * Toggle state\n */\n public toggle() {\n this.enabled = !this.enabled;\n this.enabledChange.emit(this.enabled);\n }\n}\n","<div class=\"toggle-component\">\n <div class=\"toggle-component-content\"\n (click)=\"toggle()\">\n <div class=\"toggle-state toggle-state-left\"\n [ngClass]=\"enabled ? 'toggle-active' : ''\">\n {{onLabel}}\n </div>\n <div class=\"toggle-state toggle-state-right\"\n [ngClass]=\"enabled ? '' : 'toggle-active'\">\n {{offLabel}}\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'zen-card-block',\n templateUrl: './zendu-card-block.component.html',\n styleUrls: ['./zendu-card-block.component.scss']\n})\nexport class ZenduCardBlockComponent {\n\n @Input() icon: string;\n\n @Input() title: string;\n\n @Input() text: string;\n\n @Input() selected: boolean;\n\n}\n","<div class=\"component\">\n <zen-icon *ngIf=\"icon\"\n [src]=\"icon\"></zen-icon>\n\n <div class=\"title\">\n {{title}}\n </div>\n <div class=\"text\">\n {{text}}\n </div>\n</div>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'zen-map-preview',\n templateUrl: './zendu-map-preview.component.html',\n styleUrls: ['./zendu-map-preview.component.scss']\n})\nexport class ZenduMapPreviewComponent implements OnChanges {\n\n @Input() lat: number;\n\n @Input() lng: number;\n\n @Input() apiKey: string;\n\n public source = \"\";\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.apiKey && this.lat && this.lng) {\n this.source = `https://image.maps.ls.hereapi.com/mia/1.6/mapview?apiKey=${this.apiKey}&c=${this.lat},${this.lng}` +\n `&z=14&w=222&h=80&&base=reduced.night&incidents=off&traffic=off`;\n }\n else {\n this.source = \"\";\n }\n }\n\n}\n","<div class=\"component\"\n [ngStyle]=\"{ 'background-image': 'url('+source+')' }\">\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'zen-spinner',\n templateUrl: './zendu-spinner.component.html',\n styleUrls: ['./zendu-spinner.component.scss']\n})\nexport class ZenduSpinner {\n\n}\n","<div class=\"component\">\n</div>\n","export class LocalLock {\n private _acquired: boolean;\n\n private _waitingResolvers: Array<() => void>;\n\n constructor() {\n this._acquired = false;\n this._waitingResolvers = [];\n }\n\n public lock(): Promise<any> {\n return new Promise<void>(resolve => {\n if (!this._acquired) {\n this._acquired = true;\n resolve();\n return;\n }\n\n this._waitingResolvers.push(resolve);\n });\n }\n\n public release(): void {\n if (!this._acquired) {\n // Trying to release an unacquired lock\n return;\n }\n if (this._waitingResolvers.length > 0) {\n const resolve = this._waitingResolvers.shift() as (() => void);\n resolve();\n } else {\n this._acquired = false;\n }\n }\n\n\n public isLock(): boolean\n {\n return this._acquired;\n }\n\n}","import { Injectable } from '@angular/core';\nimport { LocalLock } from '../local.lock';\nimport { Util } from '../util';\n\nexport interface ScanifyCorners {\n topLeftCorner: { x: number, y: number };\n topRightCorner: { x: number, y: number };\n bottomLeftCorner: { x: number, y: number };\n bottomRightCorner: { x: number, y: number };\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OpenCVService {\n\n private static _isOpenCVLoaded = false;\n\n private static _lock = new LocalLock();\n\n /**\n * extract paper from the image\n * @returns\n */\n public async extractPaper(options: {\n src: string;\n height: number;\n width: number;\n corners: ScanifyCorners;\n }): Promise<HTMLCanvasElement> {\n // load open cv\n await this.loadOpenCv();\n\n const htmlImage = await this.loadImage(options.src);\n console.log(\"image is ready\");\n\n const scanner = new window[\"jscanify\"];\n\n return scanner.extractPaper(htmlImage, options.height, options.width, options.corners);\n }\n\n /**\n * Get the paper corners from the specific image\n * @param src\n * @returns\n */\n public async getPaperCorners(src: string,height:number, width:number): Promise<ScanifyCorners> {\n // load opencv\n await this.loadOpenCv();\n\n const cv = this.getCVInternal();\n\n const htmlImage = await this.loadImage(src);\n console.log(\"image is ready\", htmlImage);\n\n const scanner = new window[\"jscanify\"];\n\n const img = cv.imread(htmlImage);\n\n const maxContour = scanner.findPaperContour(img);\n if (!maxContour) {\n return null;\n }\n\n const res = scanner.getCornerPoints(maxContour, img);\n return res;\n }\n\n private loadImage(src: string) {\n return new Promise((resolve) => {\n const image = new Image();\n image.src = src;\n image.onload = function () {\n resolve(image);\n };\n })\n\n }\n\n private async loadOpenCv() {\n try {\n await OpenCVService._lock.lock();\n\n if (OpenCVService._isOpenCVLoaded) {\n return;\n }\n\n console.log(\"load opencv...\")\n\n // Storage bucket available here:\n // https://console.cloud.google.com/storage/browser/ng-zenduit/scripts?project=zendu-one\n\n // load open cv script\n this.loadScript(\"https://storage.googleapis.com/ng-zenduit/scripts/opencv_4.7.0.js\");\n await this.waitInitalization(\"cv\");\n\n // load jscanify script\n this.loadScript(\"https://storage.googleapis.com/ng-zenduit/scripts/jscanify_1.2.0.js\");\n await this.waitInitalization(\"jscanify\");\n\n console.log(\"OpenCV is ready\")\n\n OpenCVService._isOpenCVLoaded = true;\n }\n finally {\n OpenCVService._lock.release();\n }\n }\n\n private loadScript(src: string) {\n const script = <HTMLScriptElement>document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n\n script.src = src;\n // insert script to document\n const node = document.getElementsByTagName('script')[0];\n if (node) {\n node.parentNode.insertBefore(script, node);\n } else {\n document.head.appendChild(script);\n }\n }\n\n private async waitInitalization(globalVarName: string) {\n\n const timeout = Date.now() + 60000;\n\n // wait cv first\n while (true) {\n if (window[globalVarName]) {\n break;\n }\n await Util.sleep(1000);\n\n if (Date.now() > timeout) {\n throw `Failed initalize OpenCV. Reason: timeout`\n }\n }\n }\n\n private getCVInternal() {\n return window[\"cv\"];\n }\n}\n","import { fabric } from 'fabric';\nimport {\n Component,\n ElementRef,\n Input,\n AfterViewInit,\n ViewChild,\n OnChanges,\n Output,\n EventEmitter,\n SimpleChanges,\n} from '@angular/core';\nimport { OpenCVService } from '../services/opencv.service';\nimport { IText } from 'fabric/fabric-impl';\n\n@Component({\n selector: 'zen-doc-scanner',\n templateUrl: './zendu-doc-scanner.component.html',\n styleUrls: ['./zendu-doc-scanner.component.scss'],\n})\nexport class ZenduDocScanner implements AfterViewInit, OnChanges {\n @ViewChild('drawCanas') _canvasElement!: ElementRef<HTMLCanvasElement>;\n\n @ViewChild('componentWrapper') _component!: ElementRef<HTMLDivElement>;\n\n @Input() src = '';\n\n @Input() width = 0;\n\n @Input() height = 0;\n\n @Input() isScanStart: boolean = false;\n\n @Input() canAddText: boolean = false;\n\n @Input() canDoodle: boolean = false;\n\n currentStateIndex: number = -1;\n\n canvasStates: { state: string; customControl: any }[] = [];\n\n isResize: boolean = false;\n initialMouseY: number;\n originalFontSize: number;\n\n @Input() isRedoing: boolean = false;\n @Input() isUndoing: boolean = false;\n @Input() set done(completed: boolean) {\n console.log('mark as completed',completed);\n if (completed) {\n this.completeScan(completed);\n }\n }\n\n @Output() extracted = new EventEmitter<HTMLCanvasElement>();\n\n @Output() cornersChanged = new EventEmitter<void>();\n\n @Output() canAddTextOrDoole = new EventEmitter<{}>();\n\n @Output() canRedoOrUndo = new EventEmitter<{\n canRedo: boolean;\n canUndo: boolean;\n }>();\n\n private screenPoints: { x: number; y: number }[] = [];\n\n private _canvas!: fabric.Canvas;\n\n private _cornersPg!: fabric.Polygon;\n\n private _scaleFactor = 1;\n\n private _controls: fabric.Circle[] = [];\n\n selectedColor: string = '#121212';\n\n isScaned: boolean = false;\n\n textAdded: boolean = false;\n\n icons = {\n cross: new Image(),\n rotate: new Image(),\n expand: new Image(),\n };\n private Image = {\n height: 0,\n width: 0,\n };\n borderWidth: number = 5;\n colors = [\n { hexCode: '#FFFFFF', selected: false },\n { hexCode: '#121212', selected: false },\n { hexCode: '#2188D9', selected: false },\n { hexCode: '#DC3E33', selected: false },\n { hexCode: '#219653', selected: false },\n { hexCode: '#F1B10B', selected: false },\n { hexCode: '#00F0FF', selected: false },\n ];\n resizeIcon: HTMLElement;\n rotateIcon: HTMLElement;\n removeIcon: HTMLElement;\n constructor(private _opencv: OpenCVService) {}\n\n public ngAfterViewInit() {\n this.icons.cross.src = 'assets/ng-zenduit/icons/cross.svg';\n this.icons.rotate.src = 'assets/ng-zenduit/icons/rotate.svg';\n this.icons.expand.src= 'assets/ng-zenduit/icons/expand.svg';\n setTimeout(async () => {\n await this.init();\n // Add an event listener for canvas edits\n }, 1);\n }\n\n public onCanvasEdit() {\n let objects = this._canvas.getObjects();\n if (objects && objects.length)\n this._canvas._activeObject = objects[objects.length - 1];\n if (!this.isScanStart && !this.isRedoing && !this.isUndoing) {\n this.canRedoOrUndo.emit({\n canUndo: this.currentStateIndex >= 0 ? true : false,\n canRedo: this.currentStateIndex < this.canvasStates.length - 1 ? true : false,\n });\n this.saveCanvasState();\n }\n }\n public ngOnChanges(changes: SimpleChanges) {\n\n // When src changes\n if (changes['src'] && this._canvas) {\n this.build();\n }\n //When user start scan\n if (changes['isScanStart'] && changes['isScanStart'].currentValue) {\n if (this.src && this._canvas && this.isScanStart) {\n this.addPointsTodoc();\n this.canDoodle = false;\n this._canvas.isDrawingMode = false;\n this.isScaned = true;\n this._canvas.selection = false;\n this.textAdded = false;\n }\n }\n // When user wants to draw\n if (\n changes['canDoodle'] &&\n changes['canDoodle'].currentValue &&\n this._canvas\n ) {\n if (this.canDoodle) {\n this._canvas.isDrawingMode = this.canDoodle;\n this._canvas.freeDrawingBrush = this.canDoodle\n ? new fabric.PencilBrush(this._canvas)\n : null;\n this._canvas.freeDrawingBrush.width = 10;\n this._canvas.freeDrawingBrush.color = this.selectedColor;\n this._canvas.selection = false;\n this.isScanStart = false;\n this.textAdded = false;\n this._canvas.renderAll();\n }\n }\n // When user wants to add text\n if (\n changes['canAddText'] &&\n changes['canAddText'].currentValue &&\n this.canAddText\n ) {\n this.canDoodle = false;\n this._canvas.isDrawingMode = false;\n this.isScanStart = false;\n }\n if (changes['isUndoing'] && changes['isUndoing'].currentValue) this.undo();\n if (changes['isRedoing'] && changes['isRedoing'].currentValue) this.redo();\n }\n // To change the color of brush or text\n chngClrTextOrBrush(color: string, changeFor: string) {\n this.selectedColor = color;\n this.colors.map((clr, index) => {\n this.colors[index] = { ...this.colors[index], selected: false };\n if (this.colors[index].hexCode === color) {\n this.colors[index] = { ...this.colors[index], selected: true };\n }\n });\n if (changeFor === 'text') {\n const activeObject = this._canvas.getActiveObject();\n if (activeObject && activeObject.type === 'i-text') {\n // Check if an active text object is selected\n activeObject.set('fill', this.selectedColor); // Update the fill color\n this._canvas.renderAll(); // Render the canvas to see the changes\n }\n this._canvas.renderAll();\n // this.onCanvasEdit();\n } else {\n this._canvas.freeDrawingBrush.color = color;\n }\n this.selectedColor = color;\n }\n async addPointsTodoc() {\n const corners = await this._opencv.getPaperCorners(\n this._canvas.toDataURL({\n format: 'jpeg',\n quality: 1,\n }),\n this.Image.height,\n this.Image.width\n );\n if (corners) {\n this.screenPoints = [\n corners.topLeftCorner,\n corners.topRightCorner,\n corners.bottomRightCorner,\n corners.bottomLeftCorner,\n ];\n } else {\n console.error(`can't detect document corners`);\n const width = this._canvas.getWidth() / this._scaleFactor;\n const height = this._canvas.getHeight() / this._scaleFactor;\n const offset = 20;\n this.screenPoints = [\n { x: offset, y: 0 },\n { x: width - offset, y: 0 },\n { x: width - offset, y: height - offset },\n { x: offset, y: height - offset },\n ];\n }\n\n // add polygon\n //\n this._cornersPg = new fabric.Polygon(this.screenPoints, {\n stroke: '#2188d9',\n strokeWidth: 10,\n selectable: false,\n fill: 'rgba(33, 136, 217, 0.1)',\n hasBorders: true,\n objectCaching: false,\n });\n this._canvas.add(this._cornersPg);\n this.createControls(this._cornersPg);\n }\n\n private async init(src?: string) {\n // Create canvas with new changed src\n if (src) {\n this.createCanvas();\n } else {\n try {\n if (!this._canvasElement || !this._canvasElement.nativeElement) {\n // canvas is not ready\n return;\n }\n\n if (this._canvas) {\n // canvas already initalized\n return;\n }\n this.createCanvas();\n } catch (err) {\n console.error(err);\n }\n }\n }\n\n async createCanvas() {\n // documentation: http://fabricjs.com/docs/fabric.Canvas.html\n let canvas = this._canvasElement.nativeElement;\n this._canvas = new fabric.Canvas(canvas, {\n backgroundColor: 'white',\n selection: false,\n });\n const { width, height } = this.getCanvasSize();\n this._canvas.setWidth(width);\n this._canvas.setHeight(height);\n this._canvas.on('object:added', this.onCanvasEdit.bind(this));\n this._canvas.on('object:modified', this.onCanvasEdit.bind(this));\n this._canvas.on('mouse:down', this.addTextOnClick.bind(this));\n this._canvas.on('mouse:move', this.resizeText.bind(this));\n this._canvas.on('mouse:up', this.stopResizeText.bind(this));\n if (this.src) {\n await this.build();\n }\n }\n\n renderIcon(\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n styleOverride,\n fabricObject: fabric.Object,\n iconName: string\n ) {\n var size = 42;\n var iconBackgroundSize = 50; // Adjust the size as needed\n ctx.save();\n\n // Draw a background circle behind the icon\n ctx.fillStyle = 'white'; // Set the background color\n ctx.beginPath();\n ctx.arc(left, top - 10, iconBackgroundSize / 2, 0, 2 * Math.PI);\n ctx.fill();\n\n var img = this.icons[iconName];\n img.onload = function (){}\n ctx.translate(left, top - 10);\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\n ctx.drawImage(img, -size / 2, -size / 2, size, size);\n ctx.restore();\n }\n\n stopResizeText(event:any) {\n if(this.isResize){\n this.saveCanvasState()\n this.isResize = false;\n }\n }\n resizeText(event: any) {\n if (this.isResize) {\n const target = event.target;\n const deltaY = event.e.clientY - this.initialMouseY;\n\n // Limit the scaling factor to prevent excessive resizing\n const scalingFactor = Math.min(2, Math.max(0.5, 1 + deltaY / 100));\n\n // Calculate the new font size based on the original size and scaling factor\n const newFontSize = this.originalFontSize * scalingFactor;\n\n // Set the font size of the text object\n target.fontSize = newFontSize;\n\n // Re-render the canvas to see the live change\n event.target.canvas.renderAll();\n }\n }\n addTextOnClick(event: any) {\n let _text: IText = new fabric.IText('Type your text here', {\n left: event.pointer.x,\n top: event.pointer.y,\n fill: this.selectedColor,\n fontSize: 50,\n fontFamily: 'Roboto',\n selectable: true,\n fontWeight: 400,\n borderScaleFactor: 3,\n borderColor: 'white',\n backgroundColor: 'transparent', // Set background color of the text box\n cornerColor: 'white', // Set corner (resize handle) color of the text box\n padding: 42, // Set padding inside the text box\n width: 200, // Set the initial width of the text box\n });\n //Custom controls for add text box\n let customControls = {\n removeControl: new fabric.Control({\n x: -0.5,\n y: -0.5,\n offsetY: 16,\n cursorStyle: 'pointer',\n render: (ctx, left, top, styleOverride, fabricObject) => {\n return this.renderIcon(\n ctx,\n left,\n top,\n styleOverride,\n fabricObject,\n 'cross'\n );\n },\n mouseUpHandler: (eventData, transform) => {\n var target = transform.target;\n var canvas = target.canvas;\n canvas.remove(target);\n canvas.requestRenderAll();\n this.saveCanvasState();\n return true;\n },\n }),\n\n rotateControl: new fabric.Control({\n x: 0.5,\n y: -0.5,\n offsetY: 16,\n cursorStyle: 'pointer',\n render: (ctx, left, top, styleOverride, fabricObject) => {\n return this.renderIcon(\n ctx,\n left,\n top,\n styleOverride,\n fabricObject,\n 'rotate'\n );\n },\n mouseUpHandler: (eventData, transform) => {\n let fabricObject = transform.target;\n const rotationIncrement = 30; // Rotation increment in degrees\n fabricObject.set(\n 'angle',\n (fabricObject.angle + rotationIncrement) % 360\n );\n fabricObject.setCoords(); // Update object's coordinates\n this.saveCanvasState();\n return true;\n },\n }),\n\n expantControl: new fabric.Control({\n x: 0.5,\n y: 0.5,\n offsetY: 16,\n cursorStyle: 'grab',\n render: (ctx, left, top, styleOverride, fabricObject) => {\n return this.renderIcon(\n ctx,\n left,\n top,\n styleOverride,\n fabricObject,\n 'expand'\n );\n },\n }),\n };\n if (event.transform && event.transform.action === 'scale') {\n this.isResize = true;\n this.initialMouseY = event.e.clientY;\n this.originalFontSize = event.target.fontSize;\n }\n if (\n !this.textAdded &&\n !this.canDoodle &&\n !this.isScanStart &&\n this.canAddText\n ) {\n _text.controls = customControls;\n this._canvas.add(_text);\n this._canvas.renderAll();\n this.textAdded = true;\n }\n }\n\n // Function to save the canvas state\n saveCanvasState() {\n const state = JSON.stringify(this._canvas.toJSON());\n // const state = this._canvas.getObjects()[this._canvas.getObjects.length - 1]\n if (this.currentStateIndex < this.canvasStates.length - 1) {\n this.canvasStates.length = this.currentStateIndex + 1; // Remove future states\n }\n let activeObj = this._canvas.getActiveObject();\n\n if (activeObj && activeObj.type === 'path'){\n\n // set remove border and controls for drawing\n activeObj.set({\n hasControls: false,\n selectable: false,\n hasBorders: false,\n });\n }\n const customControl =\n activeObj && activeObj.controls ? activeObj.controls : null;\n this.canvasStates.push({ state, customControl });\n this.currentStateIndex++;\n }\n public redo() {\n this.isRedoing = true;\n if (this.currentStateIndex < this.canvasStates.length - 1) {\n this.currentStateIndex++;\n const nextState = this.canvasStates[this.currentStateIndex];\n this.canRedoOrUndo.emit({\n canUndo: this.currentStateIndex > 0 ? true : false,\n canRedo: this.currentStateIndex < this.canvasStates.length - 1 ? true : false,\n });\n this._canvas.loadFromJSON(nextState.state, () => {\n let activeObject = this._canvas.getActiveObject();\n this._canvas.getObjects().forEach((obj) => {\n if (obj !== activeObject) {\n obj.evented = false;\n }\n });\n if (activeObject && activeObject.type !== 'path') {\n activeObject.controls =\n nextState && nextState.customControl\n ? nextState.customControl\n : null;\n activeObject.set({\n padding: 42,\n borderScaleFactor: 3,\n borderColor: 'white',\n });\n this.textAdded = true;\n this.canAddTextOrDoole.emit({ key: 'doodle', value: false });\n this.canAddTextOrDoole.emit({ key: 'text', value: true });\n } else {\n activeObject.set({\n hasControls: false,\n selectable: false,\n hasBorders: false,\n });\n this.canAddTextOrDoole.emit({ key: 'text', value: false });\n this.canAddTextOrDoole.emit({ key: 'doodle', value: true });\n this._canvas.selection = false;\n }\n this._canvas.renderAll();\n });\n }\n }\n public undo() {\n this.isUndoing = true;\n if (this.currentStateIndex > 0) {\n this.currentStateIndex--;\n const previousState = this.canvasStates[this.currentStateIndex];\n this.canRedoOrUndo.emit({\n canUndo: this.currentStateIndex > 0 ? true : false,\n canRedo: this.currentStateIndex < this.canvasStates.length - 1 ? true : false,\n });\n\n this._canvas.loadFromJSON(previousState.state, () => {\n let activeObject = this._canvas.getActiveObject();\n if (activeObject) {\n if (activeObject.type !== 'path') {\n activeObject.set({\n padding: 42,\n borderScaleFactor: 3,\n borderColor: 'white',\n });\n this._canvas.isDrawingMode = false;\n this._canvas.freeDrawingBrush = null;\n this.textAdded = true;\n this.canAddTextOrDoole.emit({ key: 'doodle', value: false });\n this.canAddTextOrDoole.emit({ key: 'text', value: true });\n } else {\n activeObject.set({\n hasControls: false,\n hasBorders: false,\n });\n this._canvas.selection = false;\n this.canAddTextOrDoole.emit({ key: 'text', value: false });\n this.canAddTextOrDoole.emit({ key: 'doodle', value: true });\n }\n this._canvas.getActiveObject().controls =\n previousState && previousState.customControl\n ? previousState.customControl\n : null;\n }\n this._canvas.getObjects().forEach((obj) => {\n if (obj !== activeObject) {\n obj.evented = false;\n }\n });\n this._canvas.renderAll();\n });\n }\n }\n private getCanvasSize() {\n const img = new Image();\n img.src = this.src;\n const box = this._component.nativeElement.getBoundingClientRect();\n\n const width = this.width || box.width || 1;\n const height = this.height || box.height || 1;\n return { width, height };\n }\n\n /**\n * recognize paper corners\n */\n private async build() {\n if (!this.src || !this._canvas) {\n return;\n }\n const bg = await this.loadBackgroundImage(this.src);\n\n // Remove all the existing objects before add the new image to background\n this._canvas.clear();\n\n const imgSize = bg.getOriginalSize();\n this.Image = {\n height: imgSize.height * this._scaleFactor,\n width: imgSize.width * this._scaleFactor,\n };\n const scaleX = this._canvas.width / imgSize.width;\n const scaleY = this._canvas.height / imgSize.height;\n this._scaleFactor = Math.min(scaleY, scaleX);\n this._canvas.setDimensions(\n {\n width: imgSize.width,\n height: imgSize.height,\n },\n {\n backstoreOnly: true,\n }\n );\n this._canvas.setBackgroundImage(bg, () => {\n this._canvas.renderAll();\n });\n this.saveCanvasState();\n this._canvas.renderAll();\n }\n\n private createControls(polygon: fabric.Polygon) {\n // remove previous controls\n if (this._controls.length) {\n this._canvas.remove(...this._controls);\n this._controls = [];\n }\n if (polygon) {\n for (const [index, point] of polygon.points.entries()) {\n const circle = this.createControl(index, polygon);\n this._controls.push(circle);\n this._canvas.add(circle);\n }\n }\n }\n\n private createControl(index: number, polygon: fabric.Polygon) {\n const point = polygon.points[index];\n const circle = new fabric.Circle({\n left: point.x,\n top: point.y,\n originX: 'center',\n originY: 'center',\n fill: '#2188d9',\n radius: 20,\n hasRotatingPoint: false,\n hasBorders: false,\n hasControls: false,\n objectCaching: false,\n });\n circle.on('moving', (evt) => {\n if (evt.pointer) {\n polygon.points[index] = new fabric.Point(evt.pointer.x, evt.pointer.y);\n polygon.dirty = true;\n }\n });\n circle.on('mouseup', (evt) => {\n this.cornersChanged.emit();\n this.screenPoints[index] = polygon.points[index];\n });\n return circle;\n }\n\n private loadBackgroundImage(src: string): Promise<fabric.Image> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n let fabImage = new fabric.Image(img);\n resolve(fabImage);\n };\n img.src = src;\n });\n }\n\n public async completeScan(completed: boolean) {\n if (!completed) {\n return;\n }\n console.log(`complete scan & extract paper`);\n\n if (!this._cornersPg) {\n console.error(`Corner line is not available`);\n }\n if (this._cornersPg) {\n this._canvas.remove(this._cornersPg);\n this._canvas.remove(...this._controls);\n this._canvas.renderAll();\n }\n let output: HTMLCanvasElement;\n if (this.isScaned) {\n output = await this._opencv.extractPaper({\n src: this._canvas.toDataURL({ quality: 1 }),\n corners: {\n topLeftCorner: this.screenPoints[0],\n topRightCorner: this.screenPoints[1],\n bottomRightCorner: this.screenPoints[2],\n bottomLeftCorner: this.screenPoints[3],\n },\n height: this._canvas.height,\n width: this._canvas.width,\n });\n this._canvas.remove(...this._canvas.getObjects());\n this.isScaned = false;\n } else {\n output = this._canvas.toCanvasElement();\n }\n this.currentStateIndex = null;\n this.canvasStates = [];\n this.canRedoOrUndo.emit({\n canUndo: this.currentStateIndex > 0 ? true : false,\n canRedo: this.currentStateIndex < this.canvasStates.length - 1 ? true : false,\n });\n this.extracted.emit(output);\n this.cleanupCanvas();\n }\n private cleanupCanvas() {\n this._canvas.getObjects().forEach((obj) => (obj.evented = false));\n this._canvas.selection = false;\n this._canvas.isDrawingMode = false;\n this.canDoodle = false;\n this.isScanStart = false;\n this.canAddText = false;\n this.textAdded = false;\n this._canvas.renderAll();\n }\n}\n","<div #componentWrapper\n class=\"component\">\n <canvas #drawCanas></canvas>\n <div class=\"colors-container\" *ngIf=\"canDoodle || canAddText\">\n <div class=\"colors\" *ngFor=\"let color of colors\" [ngStyle]=\"{'background': color.hexCode, 'border':color.selected ? '1.6px solid white' : 'none'}\" (click)=\"chngClrTextOrBrush(color.hexCode, canAddText ? 'text': 'doodle')\"></div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\ninterface BreadcrumbStep {\n text: string;\n active: boolean;\n /**\n * user's custom data\n */\n tag?: unknown;\n}\n\n@Component({\n selector: 'zen-breadcrumbs',\n templateUrl: './zendu-breadcrumbs.component.html',\n styleUrls: ['./zendu-breadcrumbs.component.scss'],\n})\nexport class ZenduBreadcrumbs {\n @Input() steps: BreadcrumbStep[] = [];\n\n /**\n * Enable manual activation. In this case active trips will managed by app\n */\n @Input() manualNavigation = false;\n\n @Output() onActivate = new EventEmitter<BreadcrumbStep>();\n\n public onStepClick(step: BreadcrumbStep) {\n if (this.manualNavigation) {\n return;\n }\n const activeIdx = this.steps.indexOf(step);\n // update states\n for (let [idx, step] of this.steps.entries()) {\n step.active = idx <= activeIdx;\n }\n this.onActivate.emit(step);\n }\n}\n","<div class=\"component\">\n <ng-container *ngFor=\"let step of steps; let isLast = last;\">\n <div class=\"line\"\n [ngClass]=\"{\n 'active': step.active,\n 'width': steps.length !== 1\n }\"></div>\n <div class=\"step\"\n [ngClass]=\"{\n 'active': step.active,\n 'mannual-navigation': manualNavigation,\n 'text-nowrap': steps.length === 1\n }\"\n (click)=\"onStepClick(step)\">\n {{step.text}}\n </div>\n <!-- last line -->\n <div *ngIf=\"isLast\"\n class=\"line\"\n [ngClass]=\"{\n 'active': step.active,\n 'width': steps.length !== 1\n }\"></div>\n </ng-container>\n\n</div>","import { Injectable } from '@angular/core';\nimport { ZenDevice, ZenLogRecord, ZenMapTheme, ZenTrip } from '../map/map.types';\n\n@Injectable()\nexport class MapService {\n\n public createDeviceMarker(device: ZenDevice, minZoom?: number): H.map.DomMarker {\n const contentHtml = this.getDeviceContent(device);\n\n const lat = Math.max(Math.min(device.latitude, 180), -180);\n const lng = Math.max(Math.min(device.longitude, 180), -180);\n\n const deviceMarker = new H.map.DomMarker(\n new H.geo.Point(lat, lng),\n {\n zIndex: 10,\n icon: new H.map.DomIcon(contentHtml),\n data: device,\n min: minZoom ? minZoom : 0\n });\n\n return deviceMarker;\n }\n\n private getDeviceContent(device: ZenDevice): string {\n let devIcon = \"\";\n\n if (device.icon) {\n devIcon = device.icon;\n }\n else {\n // Default icon\n devIcon = \"https://storage.googleapis.com/ng-zenduit/icon/car.svg\";\n }\n\n let isDriving = device.isDriving || false;\n let driveClass = \"\";\n if (isDriving) {\n driveClass = \"driving-marker\";\n }\n\n\n let directionSvg = 'https://storage.googleapis.com/ng-zenduit/icon/device_direction.svg';\n\n let displayDirection = isDriving ? \"block\" : \"none\";\n\n let classList = isDriving ? \"moving\" : \"stopped\";\n\n const lblContent =\n `<div class='gotrax-label ${classList}'>` +\n ` <span>${device.name}</span>` +\n ` <div class='gotrax-speed-label'></div>` +\n `</div>`;\n\n const bearing = device.bearing || 0;\n\n let contentHtml =\n `<div>` +\n `<div class='g-marker-vehilce-wrapper'>` +\n `<div class='g-marker-vehilce'>` +\n `<div class='${driveClass} gotrax-img'>\n ${lblContent}\n <div class='g-marker-icon ${classList}'><img class=\"g-marker-img svg-color white\" src=${devIcon} />\n <div class=\"direction-arrow\" style=\"display: ${displayDirection};transform: rotate(${bearing}deg); background-image: url('${directionSvg}');\"></div>\n </div></div>` +\n `</div>` +// close g-marker-vehilce\n `</div>` + // close g-marker-vehilce-wrapper\n `</div>`;\n return contentHtml;\n }\n\n\n public zoomToBounds(map: H.Map, bounds: H.geo.Rect) {\n if (!bounds || bounds.isEmpty()) {\n return;\n }\n\n if (isNaN(bounds.getCenter().lat) ||\n isNaN(bounds.getCenter().lng)) {\n return;\n }\n\n this.zoomToLatLngs(map, [bounds.getTopLeft(), bounds.getBottomRight()]);\n }\n\n private zoomToLatLngs(map: H.Map, pnts: Array<{ lat: number, lng: number }>, zoom: number = 15) {\n\n if (!pnts || pnts.length == 0) {\n return;\n }\n if (pnts.length == 1) {\n map.setZoom(zoom);\n map.setCenter(new H.geo.Point(pnts[0].lat, pnts[0].lng));\n return;\n }\n\n const latLngs: number[] = [];\n pnts.forEach(p => latLngs.push(p.lat, p.lng, 0));\n\n const bounds = H.geo.Rect.coverLatLngAlts(latLngs) as H.geo.Rect;\n\n const minSize = 0.001;\n\n if (bounds.getWidth() < minSize &&\n bounds.getHeight() < minSize) {\n map.setCenter(bounds.getCenter());\n map.setZoom(17);\n }\n else {\n const p1 = bounds.getBottomRight();\n const p2 = bounds.getTopLeft();\n const width = Math.max(bounds.getWidth(), minSize);\n const height = Math.max(bounds.getHeight(), minSize);\n\n // add offset for zooming\n const targetBox = H.geo.Rect.coverLatLngAlts(\n [\n p1.lat - (height * 0.15),\n p2.lng - (width * 0.15),\n 0,\n p2.lat + (height * 0.15),\n p1.lng + (width * 0.15),\n 0\n ]\n ) as H.geo.Rect;\n\n map.getViewPort().resize();\n map.getViewModel().setLookAtData({ bounds: targetBox });\n }\n }\n\n /**\n * Create polylines for given trip and date range.\n * Method create separte polylines for logs outside the date range.\n */\n public createTripPolyline(trip: ZenTrip, map: H.Map, theme: ZenMapTheme): {\n polyline: H.map.Polyline,\n arrows: H.map.Polyline\n } {\n\n let result = {\n } as {\n polyline: H.map.Polyline,\n arrows: H.map.Polyline\n };\n\n let coords = new Array<number>();\n\n trip.logs.forEach(log => {\n let latLng = new H.geo.Point(log.latitude, log.longitude);\n\n coords.push(latLng.lat, latLng.lng);\n });\n\n if (coords.length < 2) {\n // Skip the empty path\n return result;\n }\n\n if (theme == \"black\") {\n const pl = this.createPl(coords, \"#000000\", 2);\n pl.setZIndex(1);\n result.polyline = pl;\n\n map.addObject(pl);\n }\n else {\n const pl = this.createPl(coords, \"#9510e6\", 5);\n pl.setZIndex(1);\n result.polyline = pl;\n\n let arrow = this.createArrow(coords);\n result.arrows = arrow;\n\n map.addObjects([pl, arrow]);\n\n // store additional information about polyline\n pl.setData({ type: \"trip\", trip: trip });\n arrow.setData({ type: \"trip\", trip: trip });\n }\n\n\n return result;\n }\n\n private createPl(coords: Array<number>, color: string, strokeWeight: number): H.map.Polyline {\n const pl = new H.map.Polyline(\n H.geo.LineString.fromLatLngArray(coords),\n {\n style: {\n strokeColor: color,\n lineWidth: strokeWeight\n },\n arrows: {\n fillColor: \"#ffffff\"\n },\n zIndex: 0\n });\n return pl;\n }\n\n private createArrow(coords: Array<number>): H.map.Polyline {\n return new H.map.Polyline(\n H.geo.LineString.fromLatLngArray(coords),\n {\n style: {\n lineWidth: 5,\n fillColor: 'white',\n strokeColor: 'rgba(255, 255, 255, 1)',\n lineDash: [0, 5],\n lineTailCap: 'arrow-tail',\n lineHeadCap: 'arrow-head'\n } as any,\n zIndex: 1\n });\n }\n\n public createStopMarker(map: H.Map, log: ZenLogRecord, stopIdx: number, tag: any, theme: ZenMapTheme) {\n\n let icon: H.map.DomIcon;\n if (theme == \"black\") {\n const src = \"https://storage.googleapis.com/ng-zenduit/icon/stop-icon-black.svg\";\n icon = new H.map.DomIcon(`<div class=\"g-stop-img\"><img src=\"${src}\"/></div>`)\n }\n else {\n // deafault\n icon = new H.map.DomIcon(`<div class=\"g-stop\"><label>${stopIdx}</label></div>`)\n }\n\n let stop = new H.map.DomMarker(\n new H.geo.Point(log.latitude, log.longitude),\n {\n icon: icon,\n zIndex: 2\n });\n map.addObject(stop);\n stop.setData(tag);\n return stop;\n }\n}","import { Component, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { MapService } from '../services/map.service';\nimport { ZenDevice, ZenMapTheme, ZenTrip } from './map.types';\n\n@Component({\n selector: 'zen-map',\n templateUrl: './zendu-map.component.html',\n styleUrls: ['./zendu-map.component.scss']\n})\nexport class ZenduMapComponent implements OnChanges {\n\n @ViewChild(\"map\") _mapElement!: ElementRef<HTMLDivElement>;\n\n @Input() apiKey: string;\n\n @Input() trips: ZenTrip[] = [];\n\n @Input() devices: ZenDevice[] = [];\n\n @Input() theme: ZenMapTheme = 'default';\n\n private _platform: H.service.Platform;\n\n private _map!: H.Map;\n\n private _objects: H.map.Object[] = [];\n\n private _mapService = new MapService();\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.apiKey && !this._platform) {\n this.init();\n }\n\n if (changes[\"trips\"] || changes[\"devices\"]) {\n this.updateEntities();\n }\n }\n\n private init() {\n this._platform = new H.service.Platform({\n apikey: this.apiKey\n });\n\n setTimeout(() => {\n this.initMap();\n this.updateEntities();\n }, 1000);\n }\n\n\n private initMap() {\n\n // Obtain the default map types from the platform object\n const defaultLayers = this._platform.createDefaultLayers();\n\n this._map = new H.Map(this._mapElement.nativeElement,\n defaultLayers.vector.normal.map,\n {\n zoom: 3,\n center: { lat: 34.366, lng: -89.519 }\n });\n\n\n // Create the default UI\n const ui = H.ui.UI.createDefault(this._map, defaultLayers);\n\n const mapSettings = ui.getControl('mapsettings');\n mapSettings.setAlignment(H.ui.LayoutAlignment.RIGHT_TOP);\n mapSettings.setVisibility(false);\n\n const scalebar = ui.getControl('scalebar');\n scalebar.setAlignment(H.ui.LayoutAlignment.RIGHT_BOTTOM)\n\n const zoom = ui.getControl('zoom');\n zoom.setAlignment(H.ui.LayoutAlignment.RIGHT_BOTTOM);\n\n this._map.getBaseLayer().setMin(3);\n\n // MapEvents enables the event system\n // Behavior implements default interactions for pan/zoom (also on mobile touch environments)\n const behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(this._map));\n }\n\n private updateEntities() {\n if (!this._map) {\n // map is not ready\n return;\n }\n\n this.clearEntities();\n\n this.createTrips();\n\n this.createDevices();\n }\n\n private createTrips() {\n if (!this.trips || !this.trips.length) {\n return;\n }\n\n let box: H.geo.Rect = null;\n\n for (const trip of this.trips) {\n const res = this._mapService.createTripPolyline(trip, this._map, this.theme);\n if (res.polyline) {\n this._objects.push(res.polyline);\n if (box) {\n box = box.mergeRect(res.polyline.getBoundingBox());\n }\n else {\n box = res.polyline.getBoundingBox()\n }\n }\n if (res.arrows) {\n this._objects.push(res.arrows);\n }\n }\n\n // create stop points\n //\n for (const [stopIdx, trip] of this.trips.entries()) {\n let stopLog = trip.logs[trip.logs.length - 1];\n this._objects.push(this._mapService.createStopMarker(this._map, stopLog, stopIdx + 1, trip, this.theme));\n }\n\n if (this.theme == \"black\") {\n // create a marker for first stop as well\n let stopLog = this.trips[0].logs[0];\n this._objects.push(this._mapService.createStopMarker(this._map, stopLog, 0, this.trips[0], this.theme));\n }\n\n if (box) {\n this._mapService.zoomToBounds(this._map, box);\n }\n }\n\n private createDevices() {\n if (!this.devices || !this.devices.length) {\n return;\n }\n\n for (const device of this.devices) {\n const marker = this._mapService.createDeviceMarker(device)\n this._map.addObject(marker);\n this._objects.push(marker);\n }\n }\n\n private clearEntities() {\n if (!this._map) {\n return;\n }\n this._map.removeObjects(this._objects)\n this._objects = [];\n }\n\n\n\n\n\n}\n","<div class=\"component\">\n <div #map\n class=\"zen-map\"></div>\n</div>\n","import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'zen-file-upload',\n templateUrl: './zendu-file-upload.component.html',\n styleUrls: ['./zendu-file-upload.component.scss']\n})\nexport class ZenduFileUpload {\n\n @Input() fileTypes: string = `image/*`;\n\n @Input() uploadState: \"\" | \"uploading\" | \"done\" = \"\";\n\n /**\n * fire when user clicked on \"Upload now\"\n */\n @Output() uploadFile = new EventEmitter<File[]>();\n\n /**\n * fired when user click \"Cancel\"\n */\n @Output() uploadCancelled = new EventEmitter<void>();\n\n public isFileSelected = false;\n\n public isFileDragover = false;\n\n public filename = \"\";\n\n private _selectedFiles: File[] = [];\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.isFileDragover = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.isFileDragover = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.isFileDragover = false;\n\n let target = (evt.dataTransfer as DataTransfer);\n if (target && target.files?.length) {\n this.handleFiles(target.files);\n }\n console.log('File Dropped');\n }\n\n\n public async onFileInput(evt: Event) {\n const target: HTMLInputElement | null = evt.target as HTMLInputElement;\n if (target && target.files) {\n await this.handleFiles(target.files);\n }\n }\n\n public async handleFiles(files: FileList): Promise<void> {\n console.log(`handle files`, files)\n if (!files.length) {\n return;\n }\n this.filename = files.item(0).name;\n\n this._selectedFiles = [];\n for (let idx = 0; idx < files.length; idx++) {\n this._selectedFiles.push(files[idx]);\n }\n\n this.isFileSelected = true;\n this.uploadState = '';\n }\n\n public uploadNow() {\n if (!this._selectedFiles.length) {\n console.error(`no files for uploading`)\n return;\n }\n\n this.uploadFile.emit(this._selectedFiles);\n }\n\n public clear() {\n this.isFileSelected = false;\n this.isFileDragover = false;\n this.filename = \"\";\n this._selectedFiles = [];\n this.uploadState = \"\";\n }\n\n public cancelUploading() {\n this.uploadCancelled.emit();\n this.clear();\n }\n}\n","<div class=\"component\">\n <div class=\"title\">\n <span *ngIf=\"uploadState != 'done'\">Upload File</span>\n <span *ngIf=\"uploadState == 'done'\">Uploaded File</span>\n </div>\n <div class=\"drop-area\"\n [class.dragover]=\"isFileDragover\"\n *ngIf=\"uploadState != 'done'\">\n\n <div class=\"box\"\n *ngIf=\"!isFileSelected\">\n <div>\n <zen-icon class=\"doc-icon\"\n src=\"https://storage.googleapis.com/ng-zenduit/icon/document.svg\"></zen-icon>\n </div>\n <div>\n <div>Drag and Drop Here</div>\n <div>or</div>\n <span class=\"browse\"\n (click)=\"fileIp.click()\">Browse</span>\n\n <form><input type=\"file\"\n [accept]=\"fileTypes\"\n #fileIp\n (change)=\"onFileInput($event)\" /></form>\n </div>\n </div>\n\n <ng-container *ngIf=\"isFileSelected\">\n <!-- File selected state -->\n <ng-container *ngIf=\"uploadState == ''\">\n <div class=\"box-selected-file\">\n <div class=\"close-wrapper\">\n <zen-icon (click)=\"clear()\"\n class=\"close-icon\"\n src=\"https://storage.googleapis.com/ng-zenduit/icon/cross.svg\"></zen-icon>\n </div>\n <div>\n <zen-icon class=\"img-icon\"\n src=\"https://storage.googleapis.com/ng-zenduit/icon/image.svg\"></zen-icon>\n </div>\n <div class=\"filename\">\n {{filename}}\n </div>\n </div>\n </ng-container>\n\n <!-- Uploading state -->\n <ng-container *ngIf=\"uploadState == 'uploading'\">\n <div class=\"box-file-uploading\">\n <div class=\"file-description\">\n <zen-icon class=\"img-icon-sm\"\n src=\"https://storage.googleapis.com/ng-zenduit/icon/image-sm.svg\"></zen-icon>\n <div>{{filename}}</div>\n </div>\n <div class=\"progress\">\n <div class=\"progress-bar-value\"></div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n\n <!-- Uploading done -->\n <div *ngIf=\"uploadState == 'done'\"\n class=\"box-upload-done\">\n <div class=\"file-description\">\n <zen-icon class=\"img-icon\"\n src=\"https://storage.googleapis.com/ng-zenduit/icon/image.svg\"></zen-icon>\n <div class=\"filename\">{{filename}}</div>\n <div class=\"close-btn\">\n <zen-icon (click)=\"clear()\"\n class=\"close-icon\"\n src=\"https://storage.googleapis.com/ng-zenduit/icon/cross.svg\"></zen-icon>\n </div>\n\n </div>\n </div>\n\n <div class=\"btn-upload-wrapper\">\n\n <button *ngIf=\"uploadState == ''\"\n (click)=\"uploadNow()\"\n class=\"button-flat full-width\"\n [disabled]=\"!isFileSelected\">\n Upload Now\n </button>\n\n <button *ngIf=\"uploadState == 'uploading'\"\n (click)=\"cancelUploading()\"\n class=\"button-alert full-width\"\n [disabled]=\"!isFileSelected\">\n Cancel\n </button>\n </div>\n\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'zen-progress',\n templateUrl: './zendu-progress.component.html',\n styleUrls: ['./zendu-progress.component.scss']\n})\nexport class ZenduProgress {\n\n @Input() type: \"bar\" | \"circle\" | \"half-circle\" = \"bar\";\n\n /**\n * progress value [0, 100]\n */\n @Input() value = 20;\n\n /**\n * progress text\n */\n @Input() text = \"\";\n}\n","<div class=\"component\">\n <!-- Progres bar -->\n <div *ngIf=\"type == 'bar'\">\n <div class=\"progress-bar\">\n <div class=\"progress-bar-val\"\n [ngStyle]=\"{ 'width': value + '%' }\">\n <span class=\"value-text\">{{value}}%</span>\n </div>\n </div>\n <div class=\"progress-text\">\n {{text}}\n </div>\n </div>\n\n <!-- Circle progress -->\n <div *ngIf=\"type == 'circle'\"\n class=\"progress-circle-wrapper\">\n\n\n <div class=\"progress-circle\"\n [class.show-full-right-side]=\"value>=50\">\n\n <div class=\"center-pipe\"></div>\n\n <div class=\"circle-clipper\">\n <div class=\"right-full-bar progress-val-50\"></div>\n <div class=\"progress-bar-val progress-val-{{value}}\"></div>\n </div>\n <div class=\"text-wrapper\">\n <div class=\"text\"> {{value}}%</div>\n <div class=\"progress-text\">{{text}}</div>\n </div>\n </div>\n </div>\n\n <!-- Half-Circle progress -->\n <div *ngIf=\"type == 'half-circle'\"\n class=\"progress-half-circle-wrapper\">\n\n <div class=\"progress-circle\">\n <div class=\"center-pipe\"></div>\n\n <div class=\"circle-clipper\">\n <div class=\"right-full-bar progress-val-50\"></div>\n <div class=\"progress-bar-val progress-val-{{value}}\"></div>\n </div>\n <div class=\"text-wrapper\">\n <div class=\"text\"> {{value}}%</div>\n <div class=\"progress-text\">{{text}}</div>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from \"@angular/core\";\n\ninterface IGeocodingRes {\n name: string;\n\n city: string;\n\n country: string;\n\n postalCode: string;\n\n street: string;\n\n state: string;\n\n bounds: { xmin: number, ymin: number, xmax: number, ymax: number };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GeocodingService {\n private _platform: H.service.Platform;\n\n public setAPIKey(apiKey: string) {\n this._platform = new H.service.Platform({\n apikey: apiKey\n });\n }\n\n public async geocode(searchText: string): Promise<Array<IGeocodingRes>> {\n return new Promise((resolve, reject) => {\n if (!this._platform) {\n reject(\"API KEY NOT SET\");\n return;\n }\n const geocoder = this._platform.getGeocodingService();\n geocoder.geocode({ searchText: searchText },\n (res: any) => {\n let locations = res.Response.View[0] ? res.Response.View[0].Result : []\n\n let outItems = new Array<IGeocodingRes>();\n let boxOffset = 0.001;\n for (let location of locations) {\n let lat = location.Location.DisplayPosition.Latitude;\n let lng = location.Location.DisplayPosition.Longitude;\n let p1 = new H.geo.Point(lat - boxOffset, lng - boxOffset);\n let p2 = new H.geo.Point(lat + boxOffset, lng + boxOffset);\n let bounds = H.geo.Rect.coverPoints([p1, p2]);\n\n let street = location.Location.Address.Street;\n if (location.Location.Address.HouseNumber) {\n street += \" \" + location.Location.Address.HouseNumber;\n }\n\n outItems.push({\n name: location.Location.Address.Label,\n city: location.Location.Address.City,\n country: location.Location.Address.Country,\n postalCode: location.Location.Address.PostalCode,\n state: location.Location.Address.State,\n street: street,\n bounds: {\n xmin: bounds.getLeft(),\n xmax: bounds.getRight(),\n ymin: Math.min(bounds.getBottom(), bounds.getTop()),\n ymax: Math.max(bounds.getBottom(), bounds.getTop())\n }\n });\n }\n\n resolve(outItems);\n },\n (e: any) => {\n console.warn(e);\n resolve([]);\n }\n );\n })\n }\n\n} ","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { GeocodingService } from '../services/geoconding.service';\nimport { Cancellation, LocationAddress } from './location.address';\n\n@Component({\n selector: 'zen-location-search',\n templateUrl: './zendu-location-search.component.html',\n styleUrls: ['./zendu-location-search.component.scss']\n})\nexport class ZenduLocationSearch {\n /**\n * HERE MAPS API Key\n */\n @Input() set apiKey(apiKey: string) {\n this._geocoding.setAPIKey(apiKey);\n }\n\n @Input() address!: string;\n\n @Input() displaySearchIcon: boolean = true;\n\n @Output() addressChange = new EventEmitter<string>();\n\n @Input() materialStyle = true;\n\n @Input() placeholder: string = \"Search address\";\n\n @Input() disabled = false;\n\n @Output() public onSelect = new EventEmitter<LocationAddress>;\n\n // it will apply to input element text and icon color:\n // ie. input like { color: blue}\n @Input() customStyles: any = {};\n\n private addressSearchChanged: Subject<string> = new Subject<string>();\n\n public isSearching: boolean = false;\n\n public ignoreFirstLoad: boolean = false;\n\n public addressList: LocationAddress[] = [];\n\n private _cancelation!: Cancellation;\n\n constructor(\n private _geocoding: GeocodingService,\n private _cdRef: ChangeDetectorRef) {\n\n this.addressSearchChanged\n .pipe(\n debounceTime(200),\n distinctUntilChanged()\n )\n .subscribe((addressSearch: string) => {\n this.address = addressSearch\n this.isSearching = true;\n\n if (this._cancelation) {\n // cancel previous\n this._cancelation.cancelled = true;\n }\n\n this._cancelation = { cancelled: false }\n this.makeSearch(this._cancelation);\n });\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes['address'] && this.address) {\n this._cancelation = { cancelled: false }\n await this.makeSearch(this._cancelation);\n const address = this.addressList.find(addr => addr.name === this.address);\n if (address) {\n this.selectAddress(address);\n }\n }\n }\n\n public addressChanged(text: string) {\n this.isSearching = true;\n this.addressChange.emit(text);\n this.addressSearchChanged.next(text);\n\n this._cdRef.detectChanges();\n }\n\n private async makeSearch(cancellation: Cancellation) {\n try {\n if (!this.ignoreFirstLoad) {\n this.ignoreFirstLoad = true;\n return;\n }\n this.addressList = [];\n\n if (!this.address) {\n this.isSearching = false;\n return;\n }\n\n this.addressList = [];\n\n let locations = await this._geocoding.geocode(this.address);\n\n if (this._cancelation.cancelled) {\n // request cancelled\n return;\n }\n\n for (let location of locations) {\n this.addressList.push({\n name: location.name,\n bounds: location.bounds\n });\n }\n this.addressList = [...new Map(this.addressList.map((item: LocationAddress) => [item.name, item])).values()];\n if (this.addressList.length > 20) {\n this.addressList = this.addressList.slice(0, 20);\n }\n\n this.isSearching = false;\n } catch (err) {\n console.error(err);\n } finally {\n this._cdRef.detectChanges();\n }\n }\n\n public selectAddress(address: LocationAddress) {\n this.address = address.name;\n if (this.onSelect) {\n this.addressList = [];\n this.onSelect.emit(address);\n }\n }\n}\n","<div class=\"component\">\n\n <div class=\"search-input-wrapper\"\n [class.boundaries]=\"!materialStyle\">\n <zen-icon src=\"https://storage.googleapis.com/ng-zenduit/icon/search.svg\"\n class=\"search-icon\"\n *ngIf=\"displaySearchIcon\"\n [style]=\"{'background-color': customStyles.color}\"></zen-icon>\n\n <input type=\"text\"\n class=\"material-input\"\n [style]=\"customStyles\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"address\"\n [ngClass]=\"{'no-icon': !displaySearchIcon}\"\n (ngModelChange)='addressChanged($event)'>\n </div>\n\n <div class=\"search-list\"\n [class.boundaries]=\"!materialStyle\"\n *ngIf=\"address\"\n appClickOutside\n (clickOutside)=\"addressList = [];\">\n <ul class=\"search-item-list\"\n *ngIf=\"addressList.length || isSearching\">\n <li *ngIf=\"isSearching\">Searching</li>\n <div *ngIf=\"!isSearching\">\n <li *ngFor=\"let address of addressList\"\n (click)=\"selectAddress(address)\">\n {{address.name}}\n </li>\n </div>\n </ul>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ZenduCheckboxComponent } from './checkbox/zendu-checkbox.component';\nimport { ZenduColorPickerComponent } from './colorpicker/zendu-colorpicker.component';\nimport { ZenduColumnConfigurationComponent } from './column-configuration/zendu-column-configuration.component';\nimport { ZenduDatepickerComponent } from './datepicker/zendu-datepicker.component';\nimport { ZenduFilterComponent } from './filter/zendu-filter.component';\nimport { ZenduPaginationBarComponent } from './pagination-bar/zendu-pagination-bar.component';\nimport { ZenduPhoneInputComponent } from './phone-input/zendu-phone-input.component';\nimport { ZenduRadioButtonComponent } from './radio-button/radio-button.component';\nimport { ZenduSearchBoxComponent } from './search-box/zendu-search-box.component';\nimport { ZenduSelectComponent } from './select/zendu-select.component';\nimport { ZenduSelectOptionDirective } from './select/templates/zendu-select-option.directive';\nimport { ZenduSelectValueDirective } from './select/templates/zendu-select-value.directive';\nimport { ZenduSortHeaderComponent } from './sort-header/zendu-sort-header.component';\nimport { ZenduToggleSlideComponent } from './toggle-slide/zendu-toggle-slide.component';\nimport { ZenduToggleComponent } from './toggle/zendu-toggle.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ZenduIconComponent } from './icon/zendu-icon.component';\nimport { ZenduCardBlockComponent } from './card-block/zendu-card-block.component';\nimport { ZenduMapPreviewComponent } from './map-preview/zendu-map-preview.component';\nimport { ZenduSpinner } from './spinner/zendu-spinner.component';\nimport { ZenduDocScanner } from './doc-scanner/zendu-doc-scanner.component';\nimport { ZenduBreadcrumbs } from './breadcrumbs/zendu-breadcrumbs.component';\nimport { ZenduMapComponent } from './map/zendu-map.component';\nimport { ZenduFileUpload } from './file-upload/zendu-file-upload.component';\nimport { ZenduProgress } from './progress/zendu-progress.component';\nimport { OpenCVService } from './services/opencv.service';\nimport { ZenduLocationSearch } from './location-search/zendu-location-search.component';\n\n@NgModule({\n declarations: [\n ZenduCheckboxComponent,\n ZenduToggleComponent,\n ZenduToggleSlideComponent,\n ZenduSearchBoxComponent,\n ZenduSelectComponent,\n ZenduSelectOptionDirective,\n ZenduSelectValueDirective,\n ZenduDatepickerComponent,\n ZenduFilterComponent,\n ZenduPaginationBarComponent,\n ZenduColumnConfigurationComponent,\n ZenduSortHeaderComponent,\n ZenduPhoneInputComponent,\n ZenduColorPickerComponent,\n ZenduRadioButtonComponent,\n ZenduIconComponent,\n ZenduCardBlockComponent,\n ZenduMapPreviewComponent,\n ZenduSpinner,\n ZenduDocScanner,\n ZenduBreadcrumbs,\n ZenduMapComponent,\n ZenduFileUpload,\n ZenduProgress,\n ZenduLocationSearch\n ],\n providers: [\n OpenCVService\n ],\n imports: [\n CommonModule,\n FormsModule,\n DragDropModule\n ],\n exports: [\n ZenduCheckboxComponent,\n ZenduToggleComponent,\n ZenduToggleSlideComponent,\n ZenduSearchBoxComponent,\n ZenduSelectComponent,\n ZenduSelectOptionDirective,\n ZenduSelectValueDirective,\n ZenduDatepickerComponent,\n ZenduFilterComponent,\n ZenduPaginationBarComponent,\n ZenduColumnConfigurationComponent,\n ZenduSortHeaderComponent,\n ZenduPhoneInputComponent,\n ZenduColorPickerComponent,\n ZenduRadioButtonComponent,\n ZenduIconComponent,\n ZenduCardBlockComponent,\n ZenduMapPreviewComponent,\n ZenduSpinner,\n ZenduDocScanner,\n ZenduBreadcrumbs,\n ZenduMapComponent,\n ZenduFileUpload,\n ZenduProgress,\n ZenduLocationSearch\n ]\n})\nexport class NgZenduitModule { }\n\n","/*\n * Public API of ng-zenduit\n */\nexport * from \"./lib/services/zendu-notify.service\";\nexport * from './lib/ng-zenduit.module';\n\n/**\n * Types\n */\nexport * from './lib/filter/filtersConfig';\nexport * from './lib/column-configuration/columnState';\nexport * from './lib/map/map.types';\nexport * from './lib/location-search/location.address';\nexport * from './lib/datepicker/datepicker';\n\n/**\n * Components\n */\nexport * from \"./lib/checkbox/zendu-checkbox.component\";\nexport * from \"./lib/colorpicker/zendu-colorpicker.component\";\nexport * from \"./lib/column-configuration/zendu-column-configuration.component\";\nexport * from \"./lib/datepicker/zendu-datepicker.component\";\nexport * from \"./lib/filter/zendu-filter.component\";\nexport * from \"./lib/pagination-bar/zendu-pagination-bar.component\";\nexport * from \"./lib/phone-input/zendu-phone-input.component\";\nexport * from \"./lib/radio-button/radio-button.component\";\nexport * from \"./lib/search-box/zendu-search-box.component\";\nexport * from \"./lib/select/zendu-select.component\";\nexport * from \"./lib/select/templates/zendu-select-value.directive\";\nexport * from \"./lib/select/templates/zendu-select-option.directive\";\nexport * from \"./lib/sort-header/zendu-sort-header.component\";\nexport * from \"./lib/toggle/zendu-toggle.component\";\nexport * from \"./lib/toggle-slide/zendu-toggle-slide.component\";\nexport * from \"./lib/icon/zendu-icon.component\";\nexport * from \"./lib/card-block/zendu-card-block.component\";\nexport * from \"./lib/map-preview/zendu-map-preview.component\";\nexport * from \"./lib/spinner/zendu-spinner.component\";\nexport * from \"./lib/doc-scanner/zendu-doc-scanner.component\";\nexport * from \"./lib/breadcrumbs/zendu-breadcrumbs.component\";\nexport * from \"./lib/map/zendu-map.component\";\nexport * from \"./lib/file-upload/zendu-file-upload.component\";\nexport * from \"./lib/progress/zendu-progress.component\";\nexport * from \"./lib/location-search/zendu-location-search.component\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["showSnackbar","i2","i3.ZenduCheckboxComponent","i4.ZenduSearchBoxComponent","i3.ZenduIconComponent","i4.ZenduToggleSlideComponent","i5.ZenduSearchBoxComponent","i6.ZenduDatepickerComponent","i7.ZenduRadioButtonComponent","i8.ZenduIconComponent","i2.ZenduCheckboxComponent","i3.ZenduSearchBoxComponent","i1.ZenduSelectComponent","i2.ZenduIconComponent","i1.OpenCVService","i1.GeocodingService","i3","i4.ZenduIconComponent"],"mappings":";;;;;;;;;;;;;;;;MAMa,gBAAgB,CAAA;AAElB,IAAA,IAAI,CACP,GAAW,EACX,WAAmB,IAAI,EACvB,aAAsB,IAAI,EAAA;AAE1B,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjB,QAAAA,IAAY,CAAC;AACT,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,UAAU;AACzB,SAAA,CAAC,CAAA;KACL;AAEM,IAAA,OAAO,CACV,GAAW,EACX,WAAmB,IAAI,EACvB,aAAsB,IAAI,EAAA;AAE1B,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,QAAAA,IAAY,CAAC;AACT,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,UAAU;AACzB,SAAA,CAAC,CAAA;KACL;AAEM,IAAA,IAAI,CACP,GAAW,EACX,WAAmB,IAAI,EACvB,aAAsB,IAAI,EAAA;AAE1B,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAAA,IAAY,CAAC;AACT,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,UAAU;AACzB,SAAA,CAAC,CAAA;KACL;AAEM,IAAA,KAAK,CACR,GAAY,EACZ,WAAmB,IAAI,EACvB,aAAsB,IAAI,EAAA;AAE1B,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,QAAAA,IAAY,CAAC;AACT,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AAC/B,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,UAAU;AACzB,SAAA,CAAC,CAAA;KACL;AAEO,IAAA,eAAe,CAAC,EAAO,EAAA;QAC3B,IAAI,CAAC,EAAE,EAAE;AACL,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAED,QAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AACxB,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACI,aAAA,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,EAAE;YACnC,OAAO,EAAE,CAAC,KAAK,CAAC;AACnB,SAAA;aACI,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;AACnC,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3B,SAAA;aACI,IAAI,EAAE,CAAC,OAAO,EAAE;YACjB,OAAO,EAAE,CAAC,OAAO,CAAC;AACrB,SAAA;AACI,aAAA,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,EAAE;YACjC,OAAO,CAAA,WAAA,EAAc,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAA,CAAE,CAAC;AACrD,SAAA;aACI,IAAI,EAAE,CAAC,UAAU,EAAE;YACpB,OAAO,EAAE,CAAC,UAAU,CAAC;AACxB,SAAA;AACI,aAAA;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;AAC9D,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;;8GArGQ,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,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;4FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCEY,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;QAE7C,IAAK,CAAA,KAAA,GAAoB,QAAQ,CAAC;QAElC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAE3B,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAiBhC,KAAA;AAbC;;AAEG;IACI,MAAM,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC5C,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;oHA5BU,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,uQCPnC,8pBAiBM,EAAA,MAAA,EAAA,CAAA,u2DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDVO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,8pBAAA,EAAA,MAAA,EAAA,CAAA,u2DAAA,CAAA,EAAA,CAAA;8BAMf,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEdK,yBAAyB,CAAA;AA6CpC,IAAA,WAAA,CACU,QAAoB,EAAA;QAApB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AA1CpB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QAE1C,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;QAId,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAElB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAEf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QAEb,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAA,CAAA,UAAU,GAA2B;AAC1C,YAAA,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACzF,YAAA,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACzF,YAAA,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACzF,YAAA,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACzF,YAAA,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;SAC1F,CAAA;KAqBI;AAlBL,IAAA,eAAe,CAAC,KAAK,EAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;YAEzC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACtD,OAAO;AACR,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAGD,MAAM,GAAA;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAMM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,OAAO,CAAC,cAAc,CAAC;AACzB,YAAA,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY;YACpC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAEM,IAAA,WAAW,CAAC,GAAe,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,GAAG,CAAC,eAAe,EAAE,CAAC;KACvB;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B;IAEM,eAAe,GAAA;AAEpB,QAAA,IAAI,SAAsB,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,SAAA;AACI,aAAA;AACH,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAA4B,CAAC;AAC7D,YAAA,SAAS,GAAG,SAAS,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAgB,CAAC;AAC9F,SAAA;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;QACpD,MAAM,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAClD,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAExD,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAG,EAAA,IAAI,IAAI,CAAC;AAC5B,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;QACpD,IAAI,kBAAkB,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,MAAM,GAAG,MAAM,IAAI,CAAC;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACtB,SAAA;AACI,aAAA;YACH,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC;AACtD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAG,EAAA,WAAW,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,SAAA;KACF;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAEM,IAAA,WAAW,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;;uHAzGU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,SAAA,EAAA,IAAA,EAAA,yBAAyB,wTCPtC,8mDAmDA,EAAA,MAAA,EAAA,CAAA,y0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD5Ca,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,8mDAAA,EAAA,MAAA,EAAA,CAAA,y0DAAA,CAAA,EAAA,CAAA;iGAMlB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAmBN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAa5C,MAAM,EAAA,CAAA;sBADL,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,CAAA;;;ME/CtB,IAAI,CAAA;AACN,IAAA,OAAO,QAAQ,CAAC,IAAS,EAAE,IAAY,EAAE,SAAmB,EAAA;AAC/D,QAAA,IAAI,OAAY,CAAC;QACjB,MAAM,OAAO,GAAQ,IAAI,CAAC;AAE1B,QAAA,OAAO,SAAS,gBAAgB,GAAA;YAC5B,MAAM,IAAI,GAAG,SAAS,CAAC;AAEvB,YAAA,MAAM,KAAK,GAAG,YAAA;gBACV,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE;AACZ,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7B,iBAAA;AACL,aAAC,CAAC;AAEF,YAAA,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC;YAEtC,YAAY,CAAC,OAAO,CAAC,CAAC;AAEtB,YAAA,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAElC,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7B,aAAA;AACL,SAAC,CAAC;KACL;IAEM,OAAO,KAAK,CAAI,MAAS,EAAA;QAE5B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;;;QAKzB,KAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAClC;AACI,YAAA,MAAM,GAAG,GAAI,MAAc,CAAC,GAAG,CAAC,CAAC;AACjC,YAAA,IAAG,GAAG;gBACF,OAAO,GAAG,IAAI,QAAQ;AACtB,gBAAA,OAAO,GAAG,CAAC,OAAO,IAAI,UAAU;AAChC,gBAAA,OAAO,GAAG,CAAC,OAAO,IAAI,UAAU,EACpC;gBACI,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAID;;;AAGG;IACK,OAAO,WAAW,CAAC,GAAQ,EAAA;QAE/B,IAAG,CAAC,GAAG,EACP;YACI,OAAO;AACV,SAAA;AACD,QAAA,IAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EACrB;AACI,YAAA,KAAI,IAAI,IAAI,IAAI,GAAG,EACnB;gBACI,IAAG,CAAC,IAAI,EACR;oBACI,IAAI,GAAG,IAAI,CAAC;AACf,iBAAA;AACD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;YACD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;AACtB,QAAA,IAAG,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,EACvC;YACI,OAAO;AACV,SAAA;;QAGD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAEjB,YAAA,IAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AACZ,gBAAA,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EACjB;AACI,gBAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,YAAA,IAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EACrB;gBACI,IAAI,GAAG,GAAe,GAAG,CAAC;AAC1B,gBAAA,KAAI,IAAI,CAAC,IAAI,GAAG,EAChB;AACI,oBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvB,iBAAA;AACJ,aAAA;AACI,iBAAA,IAAG,OAAO,GAAG,IAAI,QAAQ,EAC9B;AACI,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACzB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAGM,IAAA,OAAO,cAAc,CAAC,MAAW,EAAE,IAAS,EAAA;QAE/C,KAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAClC;YACI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAA;KACJ;IAEM,OAAO,KAAK,CAAC,EAAU,EAAA;AAC1B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC3B,UAAU,CAAC,MAAK;AACZ,gBAAA,OAAO,EAAE,CAAC;aACb,EAAE,EAAE,CAAC,CAAC;AACX,SAAC,CAAC,CAAA;KACL;AAEJ;;MCvHY,uBAAuB,CAAA;IAoBlC,WACU,CAAA,QAAoB,EACpB,OAAe,EAAA;QADf,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;QACpB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AAlBf,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QAMzC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QAEV,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC;QAM/B,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAMzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACpB;IAnBD,IAAa,KAAK,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACpB;IAmBM,QAAQ,GAAA;;QAEb,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,aAAA;SACF,EAAE,GAAG,CAAC,CAAC;KACT;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;KAChB;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;YACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC,CAAA;KACH;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAK;YACzC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB,EAAE,KAAK,CAAC,CAAC;KACX;IAEM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACxC;IAEM,OAAO,GAAA;QAEZ,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE;;YAE7B,OAAO;AACR,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE;;YAEV,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB,EAAE,GAAG,CAAC,CAAC;YACR,OAAO;AACR,SAAA;;AAED,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;QAClC,IAAI,MAAM,IAAI,CAAC,EAAE;;YAEf,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB,EAAE,GAAG,CAAC,CAAC;YACR,OAAO;AACR,SAAA;;QAGD,UAAU,CAAC,MAAK;YACd,KAAK,CAAC,KAAK,EAAE,CAAC;SACf,EAAE,CAAC,CAAC,CAAC;KACP;AAEO,IAAA,QAAQ,CAAC,OAA2B,EAAA;QAC1C,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;AAC/B,YAAA,OAAO,OAA2B,CAAC;AACpC,SAAA;AAED,QAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACtD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,YAAA,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,IAAI,OAAO,EAAE;AAChC,gBAAA,OAAO,EAAsB,CAAC;AAC/B,aAAA;AACF,SAAA;;AAGD,QAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACtD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,EAAE;gBACP,SAAS;AACV,aAAA;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAiB,CAAC,CAAC;AACjD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,OAAO,CAAC;AAChB,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;qHA7HU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,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,SAAA,EAAA,IAAA,EAAA,uBAAuB,uSCRpC,s5BA2BM,EAAA,MAAA,EAAA,CAAA,+vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDnBO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,s5BAAA,EAAA,MAAA,EAAA,CAAA,+vBAAA,CAAA,EAAA,CAAA;sHAMjB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEM,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAIG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBAEuC,WAAW,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MEHhC,iCAAiC,CAAA;AAkC5C,IAAA,WAAA,CAAoB,QAAoB,EAAA;QAApB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AAjCxC;;AAEG;AACO,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAElE;;AAEG;QACM,IAAa,CAAA,aAAA,GAAkB,EAAE,CAAC;AAE3C;;AAEG;QACM,IAAoB,CAAA,oBAAA,GAAkB,EAAE,CAAC;AAElD;;AAEG;QACM,IAAgB,CAAA,gBAAA,GAAqB,OAAO,CAAC;AAEtD;;AAEG;QACK,IAAoB,CAAA,oBAAA,GAAkB,EAAE,CAAC;QAE1C,IAAuB,CAAA,uBAAA,GAAkB,EAAE,CAAC;QAE5C,IAA4B,CAAA,4BAAA,GAAkB,EAAE,CAAC;QAEjD,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE3B,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;KAEqB;AAG5C,IAAA,eAAe,CAAC,KAAK,EAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;YAEzC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACtD,OAAO;AACR,SAAA;;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;QACtB,IAAI,OAAO,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,SAAA;KACF;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;;AAEjC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE;;YAElB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACtE,SAAA;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,KAAK,GAAA;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;;QAE9D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAEM,IAAA,MAAM,CAAC,KAA4B,EAAA;AACxC,QAAA,eAAe,CACb,IAAI,CAAC,4BAA4B,EACjC,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;AACF,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,4BAA4B,CAAC;KAClE;IAEM,KAAK,GAAA;QACV,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;;YAEjE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACtE,SAAA;AAAM,aAAA;;AAEL,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC/C,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,aAAA;AACF,SAAA;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CACrE,CAAC,GAAG,KACF,GAAG,CAAC,WAAW;AACZ,aAAA,WAAW,EAAE;AACb,aAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CACpD,CAAC;KACH;;+HAjHU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,SAAA,EAAA,IAAA,EAAA,iCAAiC,sVCnB9C,klDAwCA,EAAA,MAAA,EAAA,CAAA,8sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,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,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDrBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,klDAAA,EAAA,MAAA,EAAA,CAAA,8sBAAA,CAAA,EAAA,CAAA;iGAQ1B,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAKE,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAKG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAkBN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;IEvDlC,oBAMX;AAND,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,GAM9B,EAAA,CAAA,CAAA;;MCCY,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAAK;AAEnC,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,IAAI,CAAC,GAAG,EAAE;;AAEZ,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAA4B,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,CAAA,CAAA,CAAG,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,CAAA,CAAA,CAAG,CAAC;AACvD,SAAA;KACF;;gHAbU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,6FCP/B,EAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,CAAA,CAAA;4FDOa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,CAAA;iGAMX,GAAG,EAAA,CAAA;sBAAX,KAAK;;;AEHR,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,aAAa,GAAG,IAAI,CAAC;MAOd,wBAAwB,CAAA;AA0EnC,IAAA,WAAA,CACU,QAAoB,EAAA;QAApB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AApE9B;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEvC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAQhB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE3B,IAAa,CAAA,aAAA,GAAa,EAAE,CAAC;QAE7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAItC;;AAEG;QACM,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAEhC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,SAAS,GAAwB,mBAAmB,CAAC,IAAI,CAAC;AAE1D,QAAA,IAAA,CAAA,SAAS,GAAwB,mBAAmB,CAAC,IAAI,CAAC;QAE5D,IAAY,CAAA,YAAA,GAAgC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAE9D,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QAExB,IAAO,CAAA,OAAA,GAAqC,EAAE,CAAC;QAE/C,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAEf,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEvD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAEzB,IAAI,CAAA,IAAA,GAAG,YAAY,CAAC;QAEpB,IAAG,CAAA,GAAA,GAAG,aAAa,CAAC;QAEpB,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QAIb,IAAM,CAAA,MAAA,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9F,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QAEX,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QAEpC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QAE1C,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;QACvB,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;KAInB;AAIL,IAAA,eAAe,CAAC,KAAK,EAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;YAEzC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACtD,OAAO;AACR,SAAA;QACD,IAAI,CAAC,cAAc,EAAE,CAAA;KACtB;IAGD,MAAM,GAAA;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,CAAC,YAAY,GAAG;gBAClB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC7B,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;aACjC,CAAC;AACH,SAAA;KACF;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,0BAA0B,EAAE,KAAK,mBAAmB,CAAC,IAAI,EAAE;AACjH,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,CAAC,IAAI,IAAI,IAAI,CAAC,wBAAwB,EAAE,KAAK,mBAAmB,CAAC,GAAG,EAAE;AAC9G,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,CAAC,KAAK,EAAE;AAChD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,CAAC,GAAG,EAAE;AAC9C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,SAAA;KACF;IAEO,wBAAwB,GAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AAChD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAClC,QAAA,IAAI,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;YACtB,OAAO,mBAAmB,CAAC,GAAG,CAAA;AAC/B,SAAA;AACI,aAAA;YACH,OAAO,mBAAmB,CAAC,MAAM,CAAC;AACnC,SAAA;KACF;AAED;;;AAGG;IACK,0BAA0B,GAAA;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACtB,OAAO,mBAAmB,CAAC,IAAI,CAAC;AACjC,SAAA;AACI,aAAA;YACH,OAAO,mBAAmB,CAAC,KAAK,CAAC;AAClC,SAAA;KACF;IAGM,YAAY,GAAA;QACjB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAE,IAAI,CAAC,IAAI,CAAE,GAAG,IAAI,CAAC;AAE3D,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,YAAY,GAAG;gBAClB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC7B,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;aACjC,CAAC;YAEH,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAEtD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,aAAA;AACD,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;KAExB;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtF,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE9E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAErC,OAAO,OAAO,IAAI,GAAG,EAAE;AACrB,YAAA,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAqB,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;gBAEhC,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,IAAI,EAAE;oBACR,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;wBACxC,IAAI,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;AACnC,iBAAA;gBAED,IAAI,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEhD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,gBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;oBACnD,UAAU,GAAG,IAAI,CAAC;AACnB,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;oBAC1D,UAAU,GAAG,IAAI,CAAC;AACnB,iBAAA;gBAED,IAAI,aAAa,GAAG,KAAK,CAAC;gBAE1B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACnD,oBAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpE,iBAAA;AAED,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACZ,oBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE;oBACtB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;AACtC,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,aAAa,EAAE,aAAa;AAC7B,iBAAA,CAAC,CAAC;AAEH,gBAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACzC,aAAA;AACF,SAAA;KACF;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACpE,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACzE,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;KAChD;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;KAChD;AAEM,IAAA,SAAS,CAAC,GAAkB,EAAA;QACjC,IAAI,GAAG,CAAC,UAAU,EAAE;;YAElB,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACtG,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,aAAA;AACF,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAEM,IAAA,WAAW,CAAC,KAAa,EAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACjC;AAEM,IAAA,UAAU,CAAC,IAAY,EAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3C,QAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;IAGM,WAAW,GAAA;QAChB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO;AACR,SAAA;QAED,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAE,CAAA,EAAE,OAAO,CAAC,CAAC;QAE1E,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;AAChB,YAAA,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;SACpB,CAAC;;;QAIF,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC/G,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAChG,SAAA;;QAGD,IAAI,IAAI,GAAG,EAAE,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC;AACxB,SAAA;AACI,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,EAAE,CAAC;AACvB,SAAA;QAED,IAAI,GAAG,GAAG,EAAE,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AACtB,SAAA;AACI,aAAA;AACH,YAAA,IAAI,CAAC,GAAG,GAAG,CAAG,EAAA,GAAG,EAAE,CAAC;AACrB,SAAA;KACF;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE;AAC7D,YAAA,OAAO,OAAO,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;YAEtD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrD,SAAA;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KAC/C;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC3C;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAChC;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5F,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,SAAA;KACF;IAEM,MAAM,GAAA;QACX,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;YACf,OAAO;AACR,SAAA;AACD,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,QAAQ,GAAA;QACb,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;YACf,OAAO;AACR,SAAA;AACD,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,KAAK,GAAA;QACV,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,OAAO,GAAA;QACZ,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,KAAK,GAAA;QACV,IAAK,IAAI,CAAC,UAAU,EAAG;;AAErB,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,aAAa,EAAE;gBAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,aAAA;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAE,IAAI,CAAC,UAAU,CAAE,CAAC;AACzC,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,MAAM,GAAA;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAEM,OAAO,GAAA;;AAEZ,QAAA,QAAQ,IAAI;AACV,YAAA,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;;AAEjC,gBAAA,OAAO,kCAAkC,CAAC;AAC5C,YAAA,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;;AAElC,gBAAA,OAAO,sCAAsC,CAAC;AAChD,YAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;;AAElC,gBAAA,OAAO,kCAAkC,CAAC;AAC5C,YAAA;AACE,gBAAA,OAAO,kCAAkC,CAAC;AAC7C,SAAA;KACF;AAEM,IAAA,cAAc,CAAC,IAAU,EAAA;QAC9B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO;AACR,SAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACxB,YAAA,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;SAC5B,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;sHAxeU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,SAAA,EAAA,IAAA,EAAA,wBAAwB,ukBCdrC,uxRAgNA,EAAA,MAAA,EAAA,CAAA,qpOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,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,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDlMa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,uxRAAA,EAAA,MAAA,EAAA,CAAA,qpOAAA,CAAA,EAAA,CAAA;iGASjB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAuCN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAa5C,MAAM,EAAA,CAAA;sBADL,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,CAAA;;;MElGtB,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;AAWvD,KAAA;AAPC;;AAEG;IACI,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;uHAdU,yBAAyB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,yBAAyB,2JCPtC,+QASA,EAAA,MAAA,EAAA,CAAA,4jCAAA,CAAA,EAAA,CAAA,CAAA;4FDFa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,+QAAA,EAAA,MAAA,EAAA,CAAA,4jCAAA,CAAA,EAAA,CAAA;8BAMnB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MENK,yBAAyB,CAAA;AAkBpC,IAAA,WAAA,GAAA;AAdU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QAQ1C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAMT;IAEjB,QAAQ,GAAA;KACP;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE;AACpC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;AACjC,aAAA;AACI,iBAAA;AACH,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACzB,aAAA;AACF,SAAA;KACF;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3C;;uHAvCU,yBAAyB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,yBAAyB,2OCPtC,ooBAkBM,EAAA,MAAA,EAAA,CAAA,mhDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDXO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,ooBAAA,EAAA,MAAA,EAAA,CAAA,mhDAAA,CAAA,EAAA,CAAA;0EAMZ,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;METK,oBAAoB,CAAA;AAgDhC,IAAA,WAAA,GAAA;AA9CS,QAAA,IAAA,CAAA,MAAM,GAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAItC,IAAQ,CAAA,QAAA,GAAG,OAAO,CAAC;QAEnB,IAAa,CAAA,aAAA,GAAwB,OAAO,CAAC;AAE5C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;QAE3C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW,CAAC;QAE/C,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAMxB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAEhB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAEjB,IAAiB,CAAA,iBAAA,GAAQ,EAAE,CAAC;QAI7B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAEhB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAInB,IAAY,CAAA,YAAA,GAAa,EAAE,CAAA;QAE3B,IAAkB,CAAA,kBAAA,GAAG,mBAAmB,CAAC;KAM/B;AAEV,IAAA,WAAW,CAAC,OAAY,EAAA;QAC9B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE;;YAGlD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACrC,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;oBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACvF,iBAAA;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACxD,oBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC5C,iBAAA;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC5D,oBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,iBAAA;AAED,gBAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AACvC,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,iBAAA;AACD,aAAA;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,SAAA;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE;AAClD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAEjE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,SAAA;QAED,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE;YACxD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,SAAA;KACD;AAGD,IAAA,eAAe,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;AACP,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;;YAEpC,OAAO;AACP,SAAA;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC1D,OAAO;AACP,SAAA;;QAGD,IAAI,CAAC,IAAI,EAAE,CAAC;;QAGZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC9B;IAGD,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;AACP,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;IAGD,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;AACP,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAGD,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;AACP,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpC,OAAO;AACP,SAAA;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YAC1G,OAAO;AACP,SAAA;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC9B;AAGD,IAAA,eAAe,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;AACP,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAE9J,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACpC,OAAO;AACP,aAAA;YAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBAC1G,OAAO;AACP,aAAA;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,SAAA;KACD;IAEM,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;KACzB;AAEM,IAAA,eAAe,CAAC,IAAuB,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AACpC,gBAAA,OAAO,KAAK,CAAC;AACb,aAAA;AACD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACZ;AAEO,IAAA,uBAAuB,CAC9B,KAGG,EAAA;QAKH,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,IAAG;YAC/B,OAAO,OAAO,CACb,OAAO,EAAE,CAAC,EAAE,KAAK,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,GAAG,EAAE,CAAC,EAAE;gBAC7D,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC,IAAI,CACrE,CAAC;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;KACpC;AAEM,IAAA,WAAW,CAAC,IAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7D;AAEM,IAAA,YAAY,CAAC,IAAuB,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AAChC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;AACnE,YAAA,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACjC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;YAChE,OAAO,aAAa,GAAG,IAAI,GAAG,KAAK,CAAC;AACpC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AACvC,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC7D,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AACrC,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3D,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACN,YAAA,OAAO,KAAK,CAAC;AACb,SAAA;KACD;IAEM,iBAAiB,GAAA;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;KACnB;IAEM,WAAW,GAAA;AACjB,QAAA,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC3C,YAAA,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE;gBACtC,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAG;oBACjE,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;AAChF,oBAAA,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3E,iBAAC,CAAC,CAAC;gBAEH,kBAAkB,IAAI,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC3D,aAAA;AAAM,iBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE;AAC3C,gBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACxF,oBAAA,UAAU,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACnC,iBAAA;AACD,aAAA;AAAM,iBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;AAC1F,oBAAA,UAAU,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACnC,iBAAA;AACD,aAAA;AACD,SAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,IAAI,kBAAkB,KAAK,CAAC,CAAC;KAEtE;IAEO,YAAY,GAAA;AACnB,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrC,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAE/B,gBAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AACrC,oBAAA,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC3B,iBAAA;AACD,aAAA;YAED,IAAI,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC5C,aAAA;YAED,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC5C,aAAA;YAED,IAAI,IAAI,CAAC,IAAI,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAG;AAC7B,oBAAA,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE;AAChC,wBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAA;AACjB,qBAAA;AAAM,yBAAA;AACN,wBAAA,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAA;AAClB,qBAAA;AACF,iBAAC,CAAC,CAAA;AACF,aAAA;AACD,SAAA;KACD;IAEO,sBAAsB,GAAA;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrC,QAAQ,IAAI,CAAC,IAAI;AAChB,gBAAA,KAAK,aAAa;oBACjB,IAAI,IAAI,CAAC,UAAU,EAAE;wBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnD,wBAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACvC,4BAAA,QAAQ,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AACvE,yBAAA;AACD,qBAAA;oBACD,MAAM;AACP,gBAAA,KAAK,WAAW;oBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;oBAChF,MAAM;AACP,gBAAA,KAAK,aAAa;AACjB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC1D,MAAM;AACP,gBAAA,KAAK,QAAQ;oBACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClD,MAAM;AACP,gBAAA,KAAK,MAAM;oBACV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7C,MAAM;AACP,gBAAA,KAAK,OAAO;oBACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtD,MAAM;AACP,aAAA;AACD,SAAA;KACD;IAEM,KAAK,GAAA;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;KAC5C;IAEM,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,EAAE;gBACd,QAAQ,GAAG,IAAI,CAAA;AACf,aAAA;AACD,SAAA;AACD,QAAA,IAAI,QAAQ,EAAE;AACb,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/C,OAAO;AACP,SAAA;AAAM,aAAA;AACN,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,SAAA;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAGpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,EAAE,CAAC;KACZ;IAEO,kBAAkB,GAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,IAAI,IAAI,CAAC,aAAa,EAAE;;;AAGvB,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACvE,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,iBAAA;AACD,aAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,aAAA;AACD,SAAA;KACD;IAEO,eAAe,GAAA;QACtB,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrC,QAAQ,IAAI,CAAC,IAAI;AAChB,gBAAA,KAAK,aAAa;oBACjB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC9C,wBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;6BAChC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;6BACtB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAEjB,IAAI,UAAU,CAAC,MAAM,EAAE;AACtB,4BAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAC9B,yBAAA;AACD,qBAAA;oBACD,MAAM;AACP,gBAAA,KAAK,WAAW;oBACf,IACC,IAAI,CAAC,SAAS;wBACd,IAAI,CAAC,SAAS,CAAC,KAAK;AACpB,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EACjB;wBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,qBAAA;oBACD,MAAM;AACP,gBAAA,KAAK,aAAa;oBACjB,IACmB,IAAI,CAAC,WAAW;AAChB,wBAAA,OAAO,IAAI,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ;AAC7D,wBAAA,OAAO,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,QAAQ,EACzB;wBACE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,qBAAA;oBAChB,MAAM;AACP,gBAAA,KAAK,QAAQ;oBACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;oBACzC,MAAM;AACP,gBAAA,KAAK,MAAM;oBACV,IAAI,IAAI,CAAC,IAAI,EAAE;wBACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AAC7B,qBAAA;oBACD,MAAM;AACP,gBAAA,KAAK,OAAO;oBACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjE,MAAM;AACP,aAAA;AACD,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACd;IAEM,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;IAEM,YAAY,CAAC,KAAa,EAAE,IAAuB,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;KAClE;IAEM,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,EAAE,CAAA;KACrB;AAEM,IAAA,eAAe,CAAC,IAAuB,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AAChC,YAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;AACzI,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,gEAAA,CAAkE,CAAC,CAAC;AAC3F,gBAAA,OAAO,KAAK,CAAC;AACb,aAAA;AACD,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACjH,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,4DAAA,CAA8D,CAAC,CAAC;AACvF,gBAAA,OAAO,KAAK,CAAC;AACb,aAAA;AACD,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;KACX;IAGM,eAAe,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAA4B,CAAC;AACtE,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC/C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;;QAGxC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,GAAG,kBAAkB,KAAK,MAAM,GAAG,CAAA,EAAG,MAAM,CAAC,UAAU,GAAG,KAAK,CAAA,EAAA,CAAI,GAAG,OAAO,CAAC;AAC5F,YAAA,IAAI,CAAC,QAAQ,GAAG,kBAAkB,KAAK,OAAO,GAAG,CAAA,EAAG,IAAI,CAAI,EAAA,CAAA,GAAG,OAAO,CAAC;AACvE,SAAA;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,CAAC,SAAS,GAAG,CAAG,EAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,SAAA;AAAM,aAAA;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAG,EAAA,IAAI,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;AACzB,SAAA;;QAGD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACpD,YAAA,IAAI,CAAC,OAAO,GAAG,gBAAgB,KAAK,QAAQ,GAAG,CAAG,EAAA,GAAG,GAAG,EAAE,CAAA,EAAA,CAAI,GAAG,OAAO,CAAC;AACzE,YAAA,IAAI,CAAC,UAAU,GAAG,gBAAgB,KAAK,KAAK,GAAG,CAAA,EAAG,MAAM,CAAI,EAAA,CAAA,GAAG,OAAO,CAAC;AACvE,SAAA;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,MAAM,GAAG,EAAE,IAAI,CAAC;AACrC,SAAA;AAAM,aAAA;YACN,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,GAAG,GAAG,EAAE,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,SAAA;KACD;IAEO,mBAAmB,GAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AAC7E,QAAA,OAAO,GAAG,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC;KACvD;IAEO,qBAAqB,GAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;AAC/E,QAAA,OAAO,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;KACvD;;kHA9eW,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,SAAA,EAAA,IAAA,EAAA,oBAAoB,iyBCZjC,s7MAiKM,EAAA,MAAA,EAAA,CAAA,g1EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,sBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,yBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDrJO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACC,YAAY,EAAA,QAAA,EAAA,s7MAAA,EAAA,MAAA,EAAA,CAAA,g1EAAA,CAAA,EAAA,CAAA;0EAMb,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEE,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAEE,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAwBqC,SAAS,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEM,iBAAiB,EAAA,CAAA;sBAA/D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBA0C7C,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAuB5C,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAUzC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAUzC,iBAAiB,EAAA,CAAA;sBADhB,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAmBxC,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MExJ9B,0BAA0B,CAAA;AAEnC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAK;;wHAFzC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA1B,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAClC,iBAAA,CAAA;;;MCCY,yBAAyB,CAAA;AAElC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAK;;uHAFzC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAAzB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AACjC,iBAAA,CAAA;;;MCMY,oBAAoB,CAAA;AAoF/B,IAAA,WAAA,CACU,QAAoB,EAAA;QAApB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AA9E9B;;AAEG;AACO,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAO,CAAC;AAEtD;;AAEG;QACM,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;AAE7B;;AAEG;QACM,IAAW,CAAA,WAAA,GAAG,cAAc,CAAC;AA4BtC;;AAEG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAE1B;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAEzB;;AAEG;QACM,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AAE9B;;AAEG;QACM,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAOrC;;AAEG;QACI,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAEnB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAEhB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QAEf,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;KAIjC;AAaD,IAAA,eAAe,CAAC,KAAK,EAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;YAEzC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACtD,OAAO;AACR,SAAA;;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAGD,MAAM,GAAA;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAEM,IAAA,WAAW,CAAC,SAAc,EAAA;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEM,YAAY,GAAA;QACjB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtD,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;AAC7E,SAAA;KACF;AAEM,IAAA,iBAAiB,CAAC,MAAuB,EAAA;AAC9C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;AAGO,IAAA,YAAY,CAAC,KAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;QAGzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;AAGO,IAAA,YAAY,CAAC,KAAsB,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACvB,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnC,SAAA;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAEO,IAAA,eAAe,CAAC,KAAsB,EAAA;AAC5C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxC,SAAA;KACF;IAEM,SAAS,GAAA;QACd,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEM,cAAc,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,aAAa,GAAA;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAC/B,OAAO;AACR,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACnF;AAEM,IAAA,UAAU,CAAC,MAAuB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3E,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC;AAClD,SAAA;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAE9C,IAAI,aAAa,KAAK,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAG,EAAA,aAAa,WAAW,CAAC;AAC9C,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D,SAAA;KACF;AAEM,IAAA,gBAAgB,CAAC,GAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzC,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACtE,SAAA;KACF;AAEM,IAAA,OAAO,CAAC,MAAuB,EAAA;AACpC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;AAC5F,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;KACF;AAEO,IAAA,KAAK,CAAC,MAAuB,EAAA;AACnC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACvF,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;KACF;IAEO,oBAAoB,CAAC,MAAW,EAAE,IAAY,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACvC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AACf,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;SACF,EAAE,MAAM,CAAC,CAAC;KACZ;AAEM,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAEO,UAAU,GAAA;;;QAGhB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/C,EAAE,CAAC,CAAC,CAAC;KACP;IAEO,eAAe,GAAA;;QAErB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,CAAC;KAC7D;IAEO,gBAAgB,GAAA;AAEtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AAEhD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AAElC,QAAA,IAAI,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACI,aAAA;AACH,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;KACF;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACvD,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;AACnD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI,CAAC;KACtB;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAA4B,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAgB,CAAC;QACxF,OAAO,SAAS,CAAC,YAAY,CAAC;KAC/B;;kHAjVU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,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,SAAA,EAAA,IAAA,EAAA,oBAAoB,EA2FjB,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0BAA0B,EAK1B,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,qEC1GzC,u0MA+FM,EAAA,MAAA,EAAA,CAAA,ipEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDrFO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,u0MAAA,EAAA,MAAA,EAAA,CAAA,ipEAAA,CAAA,EAAA,CAAA;iGASb,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAKI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAKE,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAKG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAMG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAKG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAKG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAyBoC,cAAc,EAAA,CAAA;sBAAvD,YAAY;uBAAC,0BAA0B,CAAA;gBAKC,aAAa,EAAA,CAAA;sBAArD,YAAY;uBAAC,yBAAyB,CAAA;gBAGvC,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAc5C,MAAM,EAAA,CAAA;sBADL,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,CAAA;;;MEhHtB,2BAA2B,CAAA;AAgCtC,IAAA,WAAA,GAAA;AAhBU,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;AAExC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAQ9C,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAEjB,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAK/C,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACnB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;KACF;IAEM,QAAQ,GAAA;QACb,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;YACnC,OAAO;AACR,SAAA;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;YACtB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAEM,cAAc,GAAA;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;IAEM,UAAU,GAAA;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;AAEpC,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;KACF;IAEM,oBAAoB,GAAA;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;AACnC,YAAA,KAAK,EAAE,CAAC;AACT,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;;yHAzFU,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,SAAA,EAAA,IAAA,EAAA,2BAA2B,oNCTxC,20BAqBA,EAAA,MAAA,EAAA,CAAA,orCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDZa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,20BAAA,EAAA,MAAA,EAAA,CAAA,orCAAA,CAAA,EAAA,CAAA;0EAQrB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEnBI,wBAAwB,CAAA;AA8CnC,IAAA,WAAA,GAAA;QA1CS,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAEzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAW,CAAC;QAE3C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEnB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAEf,QAAA,IAAA,CAAA,WAAW,GAA6F;AAC7G,YAAA;AACE,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,kBAAkB,EAAE,IAAI;AACxB,gBAAA,IAAI,EAAE,4DAA4D;AACnE,aAAA;AACD,YAAA;AACE,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,QAAQ;AACrB,gBAAA,kBAAkB,EAAE,IAAI;AACxB,gBAAA,IAAI,EAAE,+DAA+D;AACtE,aAAA;AACD,YAAA;AACE,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,QAAQ;AACrB,gBAAA,kBAAkB,EAAE,KAAK;AACzB,gBAAA,IAAI,EAAE,+DAA+D;AACtE,aAAA;SACF,CAAC;AAEK,QAAA,IAAA,CAAA,aAAa,GAAG;AACrB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,kBAAkB,EAAE,EAAE;AACtB,YAAA,IAAI,EAAE,+DAA+D;SACtE,CAAC;QAIK,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAGxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC5C;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;YACpF,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;IAEM,WAAW,GAAA;QAChB,IAAI;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;YAE5B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACvK,gBAAA,IAAI,eAAe,EAAE;oBACnB,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC;AAC7D,oBAAA,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;AACtD,oBAAA,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;oBAClE,UAAU,CAAC,MAAK;wBACd,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAClC,4BAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjF,yBAAA;6BAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE;AAClE,4BAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3E,yBAAA;wBACD,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,qBAAC,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,CAAsB,mBAAA,EAAA,IAAI,CAAC,KAAK,CAAE,CAAA,EAAE,GAAG,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C,SAAA;KACF;AAEM,IAAA,cAAc,CAAC,OAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAEM,IAAA,YAAY,CAAC,KAAwB,EAAA;;QAG1C,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC/E,MAAM,GAAG,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,CAAI,CAAA,EAAA,SAAS,CAAE,CAAA,GAAE,SAAS,CAAA;QACpD,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC3C,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AAC9B,SAAA;AACD,QAAA,MAAM,UAAU,GAAG,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAG,EAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjF,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;AACtD,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;YACL,IAAI;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,eAAe,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxG,aAAA;YAAC,MAAM;AACN,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAEM,MAAM,GAAA;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACpC;;sHAtIU,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,SAAA,EAAA,IAAA,EAAA,wBAAwB,2NCRrC,k1DA+CA,EAAA,MAAA,EAAA,CAAA,83CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,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,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDvCa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,k1DAAA,EAAA,MAAA,EAAA,CAAA,83CAAA,CAAA,EAAA,CAAA;0EAMlB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEXK,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAkB,CAAC;AAmB3D,KAAA;IAfQ,UAAU,GAAA;QACf,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM;AACR,YAAA;AACE,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;KACF;;sHAtBU,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,SAAA,EAAA,IAAA,EAAA,wBAAwB,mICPrC,qbAeA,EAAA,MAAA,EAAA,CAAA,0RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDRa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,qbAAA,EAAA,MAAA,EAAA,CAAA,0RAAA,CAAA,EAAA,CAAA;8BAMX,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEE,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MENK,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;QAE7C,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;QAEf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAS3B,KAAA;AAPC;;AAEG;IACI,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;kHAhBU,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,SAAA,EAAA,IAAA,EAAA,oBAAoB,yKCPjC,waAYM,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDLO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,waAAA,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA,CAAA;8BAMb,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MERK,uBAAuB,CAAA;;qHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,uBAAuB,oICPpC,iOAWA,EAAA,MAAA,EAAA,CAAA,upBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDJa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,upBAAA,CAAA,EAAA,CAAA;8BAMjB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MERG,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAaW,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AAYtB,KAAA;AAVU,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,CAAA,yDAAA,EAA4D,IAAI,CAAC,MAAM,CAAM,GAAA,EAAA,IAAI,CAAC,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAE,CAAA;AAC7G,gBAAA,CAAA,8DAAA,CAAgE,CAAC;AACxE,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB,SAAA;KACJ;;sHAlBQ,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,SAAA,EAAA,IAAA,EAAA,wBAAwB,kICPrC,mGAGA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDIa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,mGAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,CAAA;8BAMlB,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAEG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MENG,YAAY,CAAA;;0GAAZ,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,SAAA,EAAA,IAAA,EAAA,YAAY,mDCPzB,qCAEA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,CAAA,CAAA;4FDKa,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACI,aAAa,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,CAAA;;;MEHd,SAAS,CAAA;AAKlB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;IAEM,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,OAAO,CAAO,OAAO,IAAG;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,gBAAA,OAAO,EAAE,CAAC;gBACV,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;YAEjB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAkB,CAAC;AAC/D,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;KACJ;IAGM,MAAM,GAAA;QAET,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAEJ;;MC1BY,aAAa,CAAA;AAMtB;;;AAGG;IACI,MAAM,YAAY,CAAC,OAKzB,EAAA;;AAEG,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpD,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE9B,QAAA,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,OAAO,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KAC1F;AAED;;;;AAIG;AACI,IAAA,MAAM,eAAe,CAAC,GAAW,EAAC,MAAa,EAAE,KAAY,EAAA;;AAEhE,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAExB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEhC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAEzC,QAAA,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACrD,QAAA,OAAO,GAAG,CAAC;KACd;AAEO,IAAA,SAAS,CAAC,GAAW,EAAA;AACzB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC1B,YAAA,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YAChB,KAAK,CAAC,MAAM,GAAG,YAAA;gBACX,OAAO,CAAC,KAAK,CAAC,CAAC;AACnB,aAAC,CAAC;AACN,SAAC,CAAC,CAAA;KAEL;AAEO,IAAA,MAAM,UAAU,GAAA;QACpB,IAAI;AACA,YAAA,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAEjC,IAAI,aAAa,CAAC,eAAe,EAAE;gBAC/B,OAAO;AACV,aAAA;AAED,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;;;;AAM7B,YAAA,IAAI,CAAC,UAAU,CAAC,mEAAmE,CAAC,CAAC;AACrF,YAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;;AAGnC,YAAA,IAAI,CAAC,UAAU,CAAC,qEAAqE,CAAC,CAAC;AACvF,YAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAEzC,YAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAE9B,YAAA,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC;AACxC,SAAA;AACO,gBAAA;AACJ,YAAA,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACjC,SAAA;KACJ;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;QAC1B,MAAM,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAA,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/C,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;;QAEjB,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9C,SAAA;AAAM,aAAA;AACH,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrC,SAAA;KACJ;IAEO,MAAM,iBAAiB,CAAC,aAAqB,EAAA;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;;AAGnC,QAAA,OAAO,IAAI,EAAE;AACT,YAAA,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;gBACvB,MAAM;AACT,aAAA;AACD,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEvB,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE;AACtB,gBAAA,MAAM,0CAA0C,CAAA;AACnD,aAAA;AACJ,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;KACvB;;AA9Hc,aAAe,CAAA,eAAA,GAAG,KAAM,CAAA;AAExB,aAAA,CAAA,KAAK,GAAG,IAAI,SAAS,EAAG,CAAA;2GAJ9B,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,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFV,MAAM,EAAA,CAAA,CAAA;4FAET,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCMY,eAAe,CAAA;AAmF1B,IAAA,WAAA,CAAoB,OAAsB,EAAA;QAAtB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAe;QA9EjC,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;QAET,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAEV,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;QAEX,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAE7B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAE5B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAEpC,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC,CAAC;QAE/B,IAAY,CAAA,YAAA,GAA4C,EAAE,CAAC;QAE3D,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAIjB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAQ1B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAqB,CAAC;AAElD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;AAE1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAM,CAAC;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAGtC,CAAC;QAEG,IAAY,CAAA,YAAA,GAA+B,EAAE,CAAC;QAM9C,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QAEjB,IAAS,CAAA,SAAA,GAAoB,EAAE,CAAC;QAExC,IAAa,CAAA,aAAA,GAAW,SAAS,CAAC;QAElC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,KAAK,GAAG;YACP,KAAK,EAAE,IAAI,KAAK,EAAE;YAClB,MAAM,EAAE,IAAI,KAAK,EAAE;YACnB,MAAM,EAAE,IAAI,KAAK,EAAE;SACpB,CAAC;AACM,QAAA,IAAA,CAAA,KAAK,GAAG;AACd,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;SACT,CAAC;QACF,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG;AACP,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvC,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;SACxC,CAAC;KAI4C;IAxD9C,IAAa,IAAI,CAAC,SAAkB,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC9B,SAAA;KACF;IAqDM,eAAe,GAAA;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,mCAAmC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,oCAAoC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAE,oCAAoC,CAAC;QAC5D,UAAU,CAAC,YAAW;AACpB,YAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;SAEnB,EAAE,CAAC,CAAC,CAAC;KACP;IAEM,YAAY,GAAA;QACjB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC3D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;AACnD,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAC9E,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;;QAGvC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;;QAED,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE;YACjE,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;gBAChD,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,aAAA;AACF,SAAA;;QAED,IACE,OAAO,CAAC,WAAW,CAAC;AACpB,YAAA,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;YACjC,IAAI,CAAC,OAAO,EACZ;YACA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5C,gBAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS;sBAC1C,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;sBACpC,IAAI,CAAC;gBACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;AACzD,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC1B,aAAA;AACF,SAAA;;QAED,IACE,OAAO,CAAC,YAAY,CAAC;AACrB,YAAA,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY;YAClC,IAAI,CAAC,UAAU,EACf;AACA,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,SAAA;QACD,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3E,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;KAC5E;;IAED,kBAAkB,CAAC,KAAa,EAAE,SAAiB,EAAA;AACjD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE;AACxC,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChE,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AACpD,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE;;gBAElD,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC1B,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;;AAE1B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AACD,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAChD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACrB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,CAAC,EACF,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,KAAK,CACjB,CAAC;AACF,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,OAAO,CAAC,aAAa;AACrB,gBAAA,OAAO,CAAC,cAAc;AACtB,gBAAA,OAAO,CAAC,iBAAiB;AACzB,gBAAA,OAAO,CAAC,gBAAgB;aACzB,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,6BAAA,CAA+B,CAAC,CAAC;AAC/C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1D,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YAC5D,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;gBACnB,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;gBAC3B,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;gBACzC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;aAClC,CAAC;AACH,SAAA;;;QAID,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;AACtD,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACtC;IAEO,MAAM,IAAI,CAAC,GAAY,EAAA;;AAE7B,QAAA,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;AAAM,aAAA;YACL,IAAI;gBACF,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;oBAE9D,OAAO;AACR,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,EAAE;;oBAEhB,OAAO;AACR,iBAAA;gBACD,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpB,aAAA;AACF,SAAA;KACF;AAED,IAAA,MAAM,YAAY,GAAA;;AAEhB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AACvC,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACpB,SAAA;KACF;IAED,UAAU,CACR,GAA6B,EAC7B,IAAY,EACZ,GAAW,EACX,aAAa,EACb,YAA2B,EAC3B,QAAgB,EAAA;QAEhB,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,QAAA,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,EAAE,CAAC;;AAGX,QAAA,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QACxB,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,kBAAkB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAA,GAAG,CAAC,MAAM,GAAG,YAAA,GAAa,CAAA;QAC1B,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AAC9B,QAAA,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,QAAA,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,GAAG,CAAC,OAAO,EAAE,CAAC;KACf;AAED,IAAA,cAAc,CAAC,KAAS,EAAA;QACtB,IAAG,IAAI,CAAC,QAAQ,EAAC;YACf,IAAI,CAAC,eAAe,EAAE,CAAA;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;AACD,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;;YAGpD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;;AAGnE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC;;AAG1D,YAAA,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;;AAG9B,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACjC,SAAA;KACF;AACD,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,KAAK,GAAU,IAAI,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;AACzD,YAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACrB,YAAA,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,aAAa;AACxB,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,eAAe,EAAE,aAAa;AAC9B,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,GAAG;AACX,SAAA,CAAC,CAAC;;AAEL,QAAA,IAAI,cAAc,GAAG;AACnB,YAAA,aAAa,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC;gBAChC,CAAC,EAAE,CAAC,GAAG;gBACP,CAAC,EAAE,CAAC,GAAG;AACP,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,KAAI;AACtD,oBAAA,OAAO,IAAI,CAAC,UAAU,CACpB,GAAG,EACH,IAAI,EACJ,GAAG,EACH,aAAa,EACb,YAAY,EACZ,OAAO,CACR,CAAC;iBACH;AACD,gBAAA,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,KAAI;AACvC,oBAAA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,oBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oBAAA,OAAO,IAAI,CAAC;iBACb;aACF,CAAC;AAEF,YAAA,aAAa,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC;AAChC,gBAAA,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,CAAC,GAAG;AACP,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,KAAI;AACtD,oBAAA,OAAO,IAAI,CAAC,UAAU,CACpB,GAAG,EACH,IAAI,EACJ,GAAG,EACH,aAAa,EACb,YAAY,EACZ,QAAQ,CACT,CAAC;iBACH;AACD,gBAAA,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,KAAI;AACvC,oBAAA,IAAI,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,oBAAA,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,oBAAA,YAAY,CAAC,GAAG,CACd,OAAO,EACP,CAAC,YAAY,CAAC,KAAK,GAAG,iBAAiB,IAAI,GAAG,CAC/C,CAAC;AACF,oBAAA,YAAY,CAAC,SAAS,EAAE,CAAC;oBACzB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oBAAA,OAAO,IAAI,CAAC;iBACb;aACF,CAAC;AAEF,YAAA,aAAa,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC;AAChC,gBAAA,CAAC,EAAE,GAAG;AACN,gBAAA,CAAC,EAAE,GAAG;AACN,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,KAAI;AACtD,oBAAA,OAAO,IAAI,CAAC,UAAU,CACpB,GAAG,EACH,IAAI,EACJ,GAAG,EACH,aAAa,EACb,YAAY,EACZ,QAAQ,CACT,CAAC;iBACH;aACF,CAAC;SACH,CAAC;QACA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/C,SAAA;QACD,IACE,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,IAAI,CAAC,SAAS;YACf,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,UAAU,EACf;AACA,YAAA,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,SAAA;KACF;;IAGD,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;;QAEpD,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AACvD,SAAA;QACD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AAE/C,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAC;;YAGzC,SAAS,CAAC,GAAG,CAAC;AACZ,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,UAAU,EAAE,KAAK;AAClB,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,MAAM,aAAa,GACjB,SAAS,IAAI,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IACM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAClD,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAC9E,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAK;gBAC9C,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;oBACxC,IAAI,GAAG,KAAK,YAAY,EAAE;AACxB,wBAAA,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,qBAAA;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE;AAChD,oBAAA,YAAY,CAAC,QAAQ;wBACnB,SAAS,IAAI,SAAS,CAAC,aAAa;8BAChC,SAAS,CAAC,aAAa;8BACvB,IAAI,CAAC;oBACX,YAAY,CAAC,GAAG,CAAC;AACf,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,iBAAiB,EAAE,CAAC;AACpB,wBAAA,WAAW,EAAE,OAAO;AACrB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,iBAAA;AAAM,qBAAA;oBACL,YAAY,CAAC,GAAG,CAAC;AACf,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,UAAU,EAAE,KAAK;AAClB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,oBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,iBAAA;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IACM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAClD,gBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAC9E,aAAA,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,MAAK;gBAClD,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AAClD,gBAAA,IAAI,YAAY,EAAE;AAChB,oBAAA,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE;wBAChC,YAAY,CAAC,GAAG,CAAC;AACf,4BAAA,OAAO,EAAE,EAAE;AACX,4BAAA,iBAAiB,EAAE,CAAC;AACpB,4BAAA,WAAW,EAAE,OAAO;AACrB,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,wBAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,wBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,qBAAA;AAAM,yBAAA;wBACL,YAAY,CAAC,GAAG,CAAC;AACf,4BAAA,WAAW,EAAE,KAAK;AAClB,4BAAA,UAAU,EAAE,KAAK;AAClB,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,qBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ;wBACrC,aAAa,IAAI,aAAa,CAAC,aAAa;8BACxC,aAAa,CAAC,aAAa;8BAC3B,IAAI,CAAC;AACZ,iBAAA;gBACD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;oBACxC,IAAI,GAAG,KAAK,YAAY,EAAE;AACxB,wBAAA,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,qBAAA;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IACO,aAAa,GAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,QAAA,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAElE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAC9C,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;KAC1B;AAED;;AAEG;AACK,IAAA,MAAM,KAAK,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC9B,OAAO;AACR,SAAA;QACD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAGpD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAErB,QAAA,MAAM,OAAO,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG;AACX,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY;AAC1C,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY;SACzC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CACxB;YACE,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,EACD;AACE,YAAA,aAAa,EAAE,IAAI;AACpB,SAAA,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,MAAK;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;KAC1B;AAEO,IAAA,cAAc,CAAC,OAAuB,EAAA;;AAE5C,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;KACF;IAEO,aAAa,CAAC,KAAa,EAAE,OAAuB,EAAA;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;YAC/B,IAAI,EAAE,KAAK,CAAC,CAAC;YACb,GAAG,EAAE,KAAK,CAAC,CAAC;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,aAAa,EAAE,KAAK;AACrB,SAAA,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;YAC1B,IAAI,GAAG,CAAC,OAAO,EAAE;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvE,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,KAAI;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,mBAAmB,CAAC,GAAW,EAAA;QACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,YAAA,GAAG,CAAC,MAAM,GAAG,MAAK;gBAChB,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpB,aAAC,CAAC;AACF,YAAA,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAChB,SAAC,CAAC,CAAC;KACJ;IAEM,MAAM,YAAY,CAAC,SAAkB,EAAA;QAC1C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,6BAAA,CAA+B,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC/C,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,MAAyB,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACvC,gBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3C,gBAAA,OAAO,EAAE;AACP,oBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,oBAAA,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpC,oBAAA,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACvC,oBAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACvC,iBAAA;AACD,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC1B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;AACzC,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,YAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAClD,YAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAC9E,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IACO,aAAa,GAAA;QACnB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;KAC1B;;6GA1qBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,+mBCpB5B,iaAOA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDaa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,iaAAA,EAAA,MAAA,EAAA,CAAA,+NAAA,CAAA,EAAA,CAAA;iGAKH,cAAc,EAAA,CAAA;sBAArC,SAAS;uBAAC,WAAW,CAAA;gBAES,UAAU,EAAA,CAAA;sBAAxC,SAAS;uBAAC,kBAAkB,CAAA;gBAEpB,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAUG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACO,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAOI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAEG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;ME5CI,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAMW,IAAK,CAAA,KAAA,GAAqB,EAAE,CAAC;AAEtC;;AAEG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAkB,CAAC;AAa3D,KAAA;AAXQ,IAAA,WAAW,CAAC,IAAoB,EAAA;QACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO;AACR,SAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;AAE3C,QAAA,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;AAC5C,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;;8GApBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,gKChB7B,+zBAyBM,EAAA,MAAA,EAAA,CAAA,89BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDTO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+zBAAA,EAAA,MAAA,EAAA,CAAA,89BAAA,CAAA,EAAA,CAAA;8BAKlB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAKG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEpBI,UAAU,CAAA;IAEZ,kBAAkB,CAAC,MAAiB,EAAE,OAAgB,EAAA;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CACpC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACzB;AACI,YAAA,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,YAAA,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,CAAC;AAC7B,SAAA,CAAC,CAAC;AAEP,QAAA,OAAO,YAAY,CAAC;KACvB;AAEO,IAAA,gBAAgB,CAAC,MAAiB,EAAA;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,MAAM,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AACzB,SAAA;AACI,aAAA;;YAED,OAAO,GAAG,wDAAwD,CAAC;AACtE,SAAA;AAED,QAAA,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;QAC1C,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,SAAS,EAAE;YACX,UAAU,GAAG,gBAAgB,CAAC;AACjC,SAAA;QAGD,IAAI,YAAY,GAAG,qEAAqE,CAAC;QAEzF,IAAI,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;QAEpD,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,QAAA,MAAM,UAAU,GACZ,CAA4B,yBAAA,EAAA,SAAS,CAAI,EAAA,CAAA;YACzC,CAAW,QAAA,EAAA,MAAM,CAAC,IAAI,CAAS,OAAA,CAAA;YAC/B,CAA0C,wCAAA,CAAA;AAC1C,YAAA,CAAA,MAAA,CAAQ,CAAC;AAEb,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAEpC,IAAI,WAAW,GACX,CAAO,KAAA,CAAA;YACP,CAAwC,sCAAA,CAAA;YACxC,CAAgC,8BAAA,CAAA;AAChC,YAAA,CAAA,YAAA,EAAe,UAAU,CAAA;cACvB,UAAU,CAAA;AACgB,sCAAA,EAAA,SAAS,mDAAmD,OAAO,CAAA;2DAChD,gBAAgB,CAAA,mBAAA,EAAsB,OAAO,CAAA,6BAAA,EAAgC,YAAY,CAAA;AAC3H,wBAAA,CAAA;AACb,YAAA,CAAA,MAAA,CAAQ;AACR,YAAA,CAAA,MAAA,CAAQ;AACR,YAAA,CAAA,MAAA,CAAQ,CAAC;AACb,QAAA,OAAO,WAAW,CAAC;KACtB;IAGM,YAAY,CAAC,GAAU,EAAE,MAAkB,EAAA;AAC9C,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;YAC7B,OAAO;AACV,SAAA;QAED,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC;YAC7B,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;YAC/B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;KAC3E;AAEO,IAAA,aAAa,CAAC,GAAU,EAAE,IAAyC,EAAE,OAAe,EAAE,EAAA;QAE1F,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,OAAO;AACV,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AAClB,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,OAAO;AACV,SAAA;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjD,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAe,CAAC;QAEjE,MAAM,OAAO,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO;AAC3B,YAAA,MAAM,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE;YAC9B,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAClC,YAAA,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACnB,SAAA;AACI,aAAA;AACD,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;AACnC,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AACnD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;;YAGrD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CACxC;AACI,gBAAA,EAAE,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB,gBAAA,EAAE,CAAC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC;gBACvB,CAAC;AACD,gBAAA,EAAE,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC;AACxB,gBAAA,EAAE,CAAC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC;gBACvB,CAAC;AACJ,aAAA,CACU,CAAC;AAEhB,YAAA,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;AAC3B,YAAA,GAAG,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3D,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,kBAAkB,CAAC,IAAa,EAAE,GAAU,EAAE,KAAkB,EAAA;QAKnE,IAAI,MAAM,GAAG,EAIZ,CAAC;AAEF,QAAA,IAAI,MAAM,GAAG,IAAI,KAAK,EAAU,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACpB,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAE1D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEnB,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;QAED,IAAI,KAAK,IAAI,OAAO,EAAE;AAClB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/C,YAAA,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChB,YAAA,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;AAErB,YAAA,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACrB,SAAA;AACI,aAAA;AACD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/C,YAAA,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChB,YAAA,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAErB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrC,YAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YAEtB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;;AAG5B,YAAA,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,YAAA,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,SAAA;AAGD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,QAAQ,CAAC,MAAqB,EAAE,KAAa,EAAE,YAAoB,EAAA;AACvE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CACzB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EACxC;AACI,YAAA,KAAK,EAAE;AACH,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,SAAS,EAAE,YAAY;AAC1B,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,SAAS,EAAE,SAAS;AACvB,aAAA;AACD,YAAA,MAAM,EAAE,CAAC;AACZ,SAAA,CAAC,CAAC;AACP,QAAA,OAAO,EAAE,CAAC;KACb;AAEO,IAAA,WAAW,CAAC,MAAqB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CACrB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EACxC;AACI,YAAA,KAAK,EAAE;AACH,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,WAAW,EAAE,wBAAwB;AACrC,gBAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,WAAW,EAAE,YAAY;AACrB,aAAA;AACR,YAAA,MAAM,EAAE,CAAC;AACZ,SAAA,CAAC,CAAC;KACV;IAEM,gBAAgB,CAAC,GAAU,EAAE,GAAiB,EAAE,OAAe,EAAE,GAAQ,EAAE,KAAkB,EAAA;AAEhG,QAAA,IAAI,IAAmB,CAAC;QACxB,IAAI,KAAK,IAAI,OAAO,EAAE;YAClB,MAAM,GAAG,GAAG,oEAAoE,CAAC;AACjF,YAAA,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAqC,kCAAA,EAAA,GAAG,CAAW,SAAA,CAAA,CAAC,CAAA;AAChF,SAAA;AACI,aAAA;;AAED,YAAA,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAA8B,2BAAA,EAAA,OAAO,CAAgB,cAAA,CAAA,CAAC,CAAA;AAClF,SAAA;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAC1B,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAC5C;AACI,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,CAAC;AACZ,SAAA,CAAC,CAAC;AACP,QAAA,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;;wGA1OQ,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;MCME,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;QAWa,IAAK,CAAA,KAAA,GAAc,EAAE,CAAC;QAEtB,IAAO,CAAA,OAAA,GAAgB,EAAE,CAAC;QAE1B,IAAK,CAAA,KAAA,GAAgB,SAAS,CAAC;QAMhC,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;AAE9B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;AAuI1C,KAAA;AArIU,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,SAAA;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACxC,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;KACJ;IAEO,IAAI,GAAA;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;AACtB,SAAA,CAAC,CAAC;QAEH,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB,EAAE,IAAI,CAAC,CAAC;KACZ;IAGO,OAAO,GAAA;;QAGX,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;QAE3D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAChD,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAC/B;AACI,YAAA,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;AACxC,SAAA,CAAC,CAAC;;AAIP,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAE3D,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACjD,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AACzD,QAAA,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3C,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;QAExD,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;QAInC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnF;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;YAEZ,OAAO;AACV,SAAA;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAEO,WAAW,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACnC,OAAO;AACV,SAAA;QAED,IAAI,GAAG,GAAe,IAAI,CAAC;AAE3B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjC,gBAAA,IAAI,GAAG,EAAE;AACL,oBAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;AACtD,iBAAA;AACI,qBAAA;AACD,oBAAA,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAA;AACtC,iBAAA;AACJ,aAAA;YACD,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClC,aAAA;AACJ,SAAA;;;AAID,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;AAChD,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5G,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE;;AAEvB,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3G,SAAA;AAED,QAAA,IAAI,GAAG,EAAE;YACL,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjD,SAAA;KACJ;IAEO,aAAa,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvC,OAAO;AACV,SAAA;AAED,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAC1D,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO;AACV,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;;+GAnJQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,0PCT9B,uFAIA,EAAA,MAAA,EAAA,CAAA,+9EAAA,CAAA,EAAA,CAAA,CAAA;4FDKa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,SAAS,EAAA,QAAA,EAAA,uFAAA,EAAA,MAAA,EAAA,CAAA,+9EAAA,CAAA,EAAA,CAAA;8BAMD,WAAW,EAAA,CAAA;sBAA5B,SAAS;uBAAC,KAAK,CAAA;gBAEP,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEZG,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;QAOa,IAAS,CAAA,SAAA,GAAW,SAAS,CAAC;QAE9B,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;AAErD;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;AAElD;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ,CAAC;QAE9C,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAEvB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAEvB,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QAEb,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;AA0EvC,KAAA;;AAvEyC,IAAA,UAAU,CAAC,GAAU,EAAA;QACvD,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;;AAG6C,IAAA,WAAW,CAAC,GAAU,EAAA;QAChE,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;;AAGwC,IAAA,MAAM,CAAC,GAAc,EAAA;QAC1D,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAE5B,QAAA,IAAI,MAAM,GAAI,GAAG,CAAC,YAA6B,CAAC;AAChD,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;KAC/B;IAGM,MAAM,WAAW,CAAC,GAAU,EAAA;AAC/B,QAAA,MAAM,MAAM,GAA4B,GAAG,CAAC,MAA0B,CAAC;AACvE,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;YACxB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,SAAA;KACJ;IAEM,MAAM,WAAW,CAAC,KAAe,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACf,OAAO;AACV,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAEnC,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACzB;IAEM,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC7B,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAA;YACvC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7C;IAEM,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACzB;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;;6GA/FQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,2TCP5B,msHAkGA,EAAA,MAAA,EAAA,CAAA,gsGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD3Fa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,msHAAA,EAAA,MAAA,EAAA,CAAA,gsGAAA,CAAA,EAAA,CAAA;8BAMlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAKI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAKG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAW+B,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOU,WAAW,EAAA,CAAA;sBAAxD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOI,MAAM,EAAA,CAAA;sBAA9C,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEvCvB,aAAa,CAAA;AAL1B,IAAA,WAAA,GAAA;QAOa,IAAI,CAAA,IAAA,GAAqC,KAAK,CAAC;AAExD;;AAEG;QACM,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AAEpB;;AAEG;QACM,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AACtB,KAAA;;2GAbY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,4GCP1B,wtDAqDA,EAAA,MAAA,EAAA,CAAA,iiuBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD9Ca,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACI,cAAc,EAAA,QAAA,EAAA,wtDAAA,EAAA,MAAA,EAAA,CAAA,iiuBAAA,CAAA,EAAA,CAAA;8BAMf,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAKG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEEG,gBAAgB,CAAA;AAGlB,IAAA,SAAS,CAAC,MAAc,EAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC,YAAA,MAAM,EAAE,MAAM;AACjB,SAAA,CAAC,CAAC;KACN;IAEM,MAAM,OAAO,CAAC,UAAkB,EAAA;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACjB,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC1B,OAAO;AACV,aAAA;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EACvC,CAAC,GAAQ,KAAI;gBACT,IAAI,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAA;AAEvE,gBAAA,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAiB,CAAC;gBAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,gBAAA,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;oBAC5B,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC;oBACrD,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;AACtD,oBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;AAC3D,oBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;AAC3D,oBAAA,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAE9C,IAAI,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9C,oBAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE;wBACvC,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;AACzD,qBAAA;oBAED,QAAQ,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;AACrC,wBAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI;AACpC,wBAAA,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;AAC1C,wBAAA,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;AAChD,wBAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;AACtC,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,MAAM,EAAE;AACJ,4BAAA,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;AACtB,4BAAA,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;AACvB,4BAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnD,4BAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACtD,yBAAA;AACJ,qBAAA,CAAC,CAAC;AACN,iBAAA;gBAED,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,aAAC,EACD,CAAC,CAAM,KAAI;AACP,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO,CAAC,EAAE,CAAC,CAAC;AAChB,aAAC,CACJ,CAAC;AACN,SAAC,CAAC,CAAA;KACL;;8GA1DQ,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,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;4FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCTY,mBAAmB,CAAA;IAoC5B,WACY,CAAA,UAA4B,EAC5B,MAAyB,EAAA;QADzB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkB;QAC5B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QA5B5B,IAAiB,CAAA,iBAAA,GAAY,IAAI,CAAC;AAEjC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAE5C,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QAErB,IAAW,CAAA,WAAA,GAAW,gBAAgB,CAAC;QAEvC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAET,IAAQ,CAAA,QAAA,GAAG,IAAI,YAA6B,CAAC;;;QAIrD,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;AAExB,QAAA,IAAA,CAAA,oBAAoB,GAAoB,IAAI,OAAO,EAAU,CAAC;QAE/D,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAE7B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QAEjC,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;AAQvC,QAAA,IAAI,CAAC,oBAAoB;aACpB,IAAI,CACD,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,CACzB;AACA,aAAA,SAAS,CAAC,CAAC,aAAqB,KAAI;AACjC,YAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAA;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAExB,IAAI,IAAI,CAAC,YAAY,EAAE;;AAEnB,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;AACtC,aAAA;YAED,IAAI,CAAC,YAAY,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACV;AAxDD;;AAEG;IACH,IAAa,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACrC;IAqDD,MAAM,WAAW,CAAC,OAAsB,EAAA;QACpC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,YAAY,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;YACxC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1E,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/B,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,cAAc,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KAC/B;IAEO,MAAM,UAAU,CAAC,YAA0B,EAAA;QAC/C,IAAI;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,OAAO;AACV,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAEtB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAEtB,YAAA,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE5D,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;;gBAE7B,OAAO;AACV,aAAA;AAED,YAAA,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC1B,iBAAA,CAAC,CAAC;AACN,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7G,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,SAAA;AAAS,gBAAA;AACN,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAC/B,SAAA;KACJ;AAEM,IAAA,aAAa,CAAC,OAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;KACJ;;iHA7HQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,SAAA,EAAA,IAAA,EAAA,mBAAmB,6VCXhC,g1CAoCA,EAAA,MAAA,EAAA,CAAA,qlDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,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,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDzBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,g1CAAA,EAAA,MAAA,EAAA,CAAA,qlDAAA,CAAA,EAAA,CAAA;oIAQlB,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAIG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEW,QAAQ,EAAA,CAAA;sBAAxB,MAAM;gBAIE,YAAY,EAAA,CAAA;sBAApB,KAAK;;;ME4DG,eAAe,CAAA;;6GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBA9DxB,sBAAsB;QACtB,oBAAoB;QACpB,yBAAyB;QACzB,uBAAuB;QACvB,oBAAoB;QACpB,0BAA0B;QAC1B,yBAAyB;QACzB,wBAAwB;QACxB,oBAAoB;QACpB,2BAA2B;QAC3B,iCAAiC;QACjC,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,yBAAyB;QACzB,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,eAAe;QACf,aAAa;AACb,QAAA,mBAAmB,aAMnB,YAAY;QACZ,WAAW;AACX,QAAA,cAAc,aAGd,sBAAsB;QACtB,oBAAoB;QACpB,yBAAyB;QACzB,uBAAuB;QACvB,oBAAoB;QACpB,0BAA0B;QAC1B,yBAAyB;QACzB,wBAAwB;QACxB,oBAAoB;QACpB,2BAA2B;QAC3B,iCAAiC;QACjC,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,yBAAyB;QACzB,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EApCf,SAAA,EAAA;QACT,aAAa;AACd,KAAA,EAAA,OAAA,EAAA,CAEC,YAAY;QACZ,WAAW;QACX,cAAc,CAAA,EAAA,CAAA,CAAA;4FA8BL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhE3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,sBAAsB;wBACtB,oBAAoB;wBACpB,yBAAyB;wBACzB,uBAAuB;wBACvB,oBAAoB;wBACpB,0BAA0B;wBAC1B,yBAAyB;wBACzB,wBAAwB;wBACxB,oBAAoB;wBACpB,2BAA2B;wBAC3B,iCAAiC;wBACjC,wBAAwB;wBACxB,wBAAwB;wBACxB,yBAAyB;wBACzB,yBAAyB;wBACzB,kBAAkB;wBAClB,uBAAuB;wBACvB,wBAAwB;wBACxB,YAAY;wBACZ,eAAe;wBACf,gBAAgB;wBAChB,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,mBAAmB;AACpB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,oBAAoB;wBACpB,yBAAyB;wBACzB,uBAAuB;wBACvB,oBAAoB;wBACpB,0BAA0B;wBAC1B,yBAAyB;wBACzB,wBAAwB;wBACxB,oBAAoB;wBACpB,2BAA2B;wBAC3B,iCAAiC;wBACjC,wBAAwB;wBACxB,wBAAwB;wBACxB,yBAAyB;wBACzB,yBAAyB;wBACzB,kBAAkB;wBAClB,uBAAuB;wBACvB,wBAAwB;wBACxB,YAAY;wBACZ,eAAe;wBACf,gBAAgB;wBAChB,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,mBAAmB;AACpB,qBAAA;AACF,iBAAA,CAAA;;;AC9FD;;AAEG;;ACFH;;AAEG;;;;"}